Getting Started

Quick Start

Get your first loader on screen in under a minute.

Basic usage

Import Loader and pass a name. That's it.

Marinating…

sweep

Note:The import path follows the components alias in your components.json. It's usually @/components, which makes it @/components/soonish.

Next.js App Router

Loader has no hooks, so it works in Server Components without "use client". That makes it a good fit for a route's loading.tsx:

app/loading.tsx
// A Server Component — no "use client" needed.
import { Loader } from '@/components/soonish';

export default function Loading() {
  return (
    <div className="flex h-screen items-center justify-center">
      <Loader name="ripple" size={16} />
    </div>
  );
}
Good to know:Next.js shows loading.tsx automatically while the page streams in.

Vite and other React apps

Nothing to configure. Import it and use it.

src/App.tsx
import { Loader } from '@/components/soonish';

function App() {
  return (
    <div>
      <Loader name="thinking" />
    </div>
  );
}

Pick a loader

name takes any of the 91 loader names, and your editor autocompletes them.

examples.tsx
import { Loader } from '@/components/soonish';

// Pulse waves
<Loader name="sweep" />
<Loader name="ripple" />
<Loader name="spiral" />

// AI / process
<Loader name="thinking" />
<Loader name="searching" />
<Loader name="generating" />

// Scale animations
<Loader name="twist" />
<Loader name="jelly" />
<Loader name="burst" />

// Mandalas
<Loader name="snowflake" />
<Loader name="lotus" />

See all 91 on the home page. Hover one to copy its install command.