Display and feedback · stable · MIT

Progress

Determinate or indeterminate task progress with a visible label.

Install editable source

Add Progress

Base UI / canonicalnpx shadcn@latest add https://gummyui.dev/r/gummy-progress.json

No package dependency beyond React. Shared Gummy material is resolved automatically.

Behavior contract

Semantics before surface

Semantics

A native progress element and explicit label/value copy.

Keyboard

No component-specific keys.

System support

Light and dark themes, logical RTL layout, reduced motion, responsive content, and forwarded public refs.

Source-derived reference

Anatomy and public API

Exported anatomy

These public React parts are read directly from the canonical source during the documentation build.

  • GummyProgress

Prop contracts

GummyProgressProps

Composes Omit<React.ProgressHTMLAttributes<HTMLProgressElement>, "children"> & { label: React.ReactNode; valueLabel?: React.ReactNode; tone?: "raspberry" | "grape" | "lime" | "aqua"; showValue?: boolean; }

Troubleshooting

Check behavior before surface.

Implementation decisions

When to use Progress

Use progress when the application can report a meaningful amount completed or an honestly indeterminate wait. Pair the visual track with an accessible name and current value, and describe what is happening when duration is unknown. Never advance a decorative percentage independently of real work. Test zero, completion, pause, failure, cancellation, slow updates, reduced motion, and background-tab recovery before relying on it for reassurance.

Live product source

Inspect the canonical states

The Component Lab exercises real source across default, focus, disabled, responsive, dark, reduced-motion, and RTL contexts.

Open the live Component Lab

Interactive inspection

Try Progress in context

Load the real component preview when you are ready to interact with its responsive, theme, and direction controls.

Editable source

Read before you install

Canonical Base UI or native source

The registry payload stays off the initial page request.