Progress component
Progress renders linear or circular progress, determinate or indeterminate, with an optional value label. CircularProgress is the ring variant.
Playground
Change a prop on the right and the preview updates. Switch to Code to copy what you see.
Recipes
Copy-paste patterns for the ways Progress actually gets used — each one a real, self-contained example.
Linear progress
A determinate bar from value against minValue/maxValue (default 0–100). showValueLabel prints the percentage.
<Progress value={64} label="Uploading…" showValueLabel />Circular progress
CircularProgress is the ring variant — same value API, for a compact inline indicator.
<CircularProgress value={72} showValueLabel />Indeterminate
Omit value for an indeterminate animation when you can't measure progress — a request in flight, say.
<Progress label="Working…" />Semantic colors
color communicates the state of what's progressing — success as it completes, danger when it's over a limit.
<Progress value={92} color="success" aria-label="Success progress" />
<Progress value={98} color="danger" label="Storage" showValueLabel />Example
<Progress value={64} label="Uploading…" />
<CircularProgress value={64} />
<Progress isIndeterminate label="Working…" />Props
The full public API for Progress. Every prop is stable and intentionally typed.
Data
| Prop | Type | Default | Description |
|---|---|---|---|
| value | number | — | Current value. Omit for an indeterminate bar. |
| minValue / maxValue | number | 0 / 100 | Range. |
value
number
default: —
Current value. Omit for an indeterminate bar.
minValue / maxValue
number
default: 0 / 100
Range.
Appearance
| Prop | Type | Default | Description |
|---|---|---|---|
| color | "default" | "primary" | "secondary" | "info" | "success" | "warning" | "danger" | primary | Semantic colour of the indicator. |
| size | "sm" | "md" | "lg" | md | Bar / ring size. |
| radius | string | — | Progress only — track radius. |
| strokeWidth | number | 4 | CircularProgress only — ring thickness. |
color
"default" | "primary" | "secondary" | "info" | "success" | "warning" | "danger"
default: primary
Semantic colour of the indicator.
size
"sm" | "md" | "lg"
default: md
Bar / ring size.
radius
string
default: —
Progress only — track radius.
strokeWidth
number
default: 4
CircularProgress only — ring thickness.
Content
| Prop | Type | Default | Description |
|---|---|---|---|
| label | ReactNode | — | Text label (also becomes the aria-label when a string). |
| showValueLabel | boolean | false | Render the formatted value. |
label
ReactNode
default: —
Text label (also becomes the aria-label when a string).
showValueLabel
boolean
default: false
Render the formatted value.
Behavior & states
| Prop | Type | Default | Description |
|---|---|---|---|
| formatValue | (value, maxValue) => ReactNode | percentage | Value-label formatter. |
formatValue
(value, maxValue) => ReactNode
default: percentage
Value-label formatter.
Accessibility
- Exposes `role="progressbar"` with `aria-valuenow`/min/max; an indeterminate bar omits `aria-valuenow`.
- The visible label is wired to the bar with `aria-label`/`aria-labelledby`.