Spinner
Something is happening: a ring with one sweeping arc, three rising dots, or eight petals fading round, in currentColor.
Used forButtons and inputsPanels and cardsChat and AI repliesFull screens
Install with the shadcn CLI
Templates
Need the whole page?
43 Next.js landing pages, each designed from scratch. Try any of them live; one is $39, all of them $99, and 5 are free.
Where it’s used
Buttons and inputs
A 12px ring inside a busy button.
Panels and cards
A 20px ring while a section loads.
Chat and AI replies
Three dots while something is typed.
Full screens
A 28px ring in the middle of an empty page.
What it handles for you
A spinner with no label is silent to a screen reader; this one says what is loading.
Three drawings
ring, dots and bars.
Sizes
12, 16, 20 and 28px.
currentColor
Inherits the colour of what it sits in.
Announced
role="status" with a label.
Overview
Spinners are small but everywhere, and most are a border with a gap that wobbles. These are drawn: a hairline ring with one arc, three dots that rise in turn, and a clock-face of petals. They take the text colour, announce "Loading" to screen readers, and calm down under reduced motion.
States
- ring
- One arc sweeps round every 800ms.
- dots
- Each dot rises in turn, 140ms apart.
- bars
- Petals fade round a clock face (800ms).
Usage
Props
| Prop | Type | Description |
|---|---|---|
| variant | "ring" | "dots" | "bars"default "ring" | Drawing. |
| size | "xs" | "sm" | "md" | "lg"default "sm" | 12, 16, 20 or 28px. |
| label | stringdefault "Loading" | For screen readers. |
Accessibility and motion
- Reduced motion: the ring pulses slowly; dots and petals hold still.
- Use Progress when you know how far along it is.
Requirements
React 19, Tailwind CSS v4 and shadcn/ui theme variables (any style, light and dark). Icons from lucide-react.
Source
Registry item: /r/spinner.json


