Progress
How far along, as a bar or a ring: the fill eases to each value, the percent rolls, and at 100 it turns green and a check draws itself.
Used forFile uploadsOnboardingImports and exportsStorage and quotas
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
File uploads
"Uploading" → "Uploaded" with a drawn check.
Onboarding
How much of setup is done.
Imports and exports
Rows processed in a long job.
Storage and quotas
A ring showing how full something is.
What it handles for you
The end of a task is the moment people look for; most progress bars just stop. This one says it finished.
Eased fill
transform scaleX over 600ms, never a jump.
A finish
Green fill, drawn check, label morph at 100.
Unknown length
A sweeping segment when there is no value.
Bar or ring
Same props; the ring shows the percent inside.
Overview
Progress bars usually step from value to value and stop silently at 100%. Here the fill eases to each new value while the percent rolls; without a value a short segment sweeps along; at 100 the fill turns green, a check draws itself and the label morphs to your done text. An error turns the fill red where it stopped.
States
- advance
- Fill eases 600ms; percent rolls.
- unknown
- A 30% segment sweeps every 1.3s.
- done
- Green, check draws (360ms), label morphs.
- error
- Red fill where it stopped.
Usage
Works with
Props
| Prop | Type | Description |
|---|---|---|
| value | number | null | 0–100; omit for unknown. |
| label / doneLabel | string | Above the bar; doneLabel replaces it at 100. |
| error | booleandefault false | Red fill. |
| showValue | booleandefault true | Show the percent. |
| variant | "bar" | "ring"default "bar" | Shape. |
| size | numberdefault 44 | Ring size in px. |
Accessibility and motion
- role="progressbar" with aria-valuenow; aria-busy until done.
- Reduced motion: values change in place; the unknown sweep slows.
Requirements
React 19, Tailwind CSS v4 and shadcn/ui theme variables (any style, light and dark). Icons from lucide-react.
The CLI also installs Number roll, Text morph, ui-interaction-motion.
Source
Registry item: /r/progress.json


