v0.3.1 StableFoundation ComponentReact 18 & 19Zero Runtime CSS

Progress

Determinate or indeterminate task progress with native browser semantics.

Interactive preview

Upload · 35%

Waiting for a connection

Usage

import { Progress } from "@devvy-ui/react";

<Progress label="Uploading files" value={42} />
<Progress label="Connecting" />

API reference

Native HTML attributes, className, style and a forwarded ref are supported. Component-specific props:

PropTypeDefaultDescription
labelstringrequiredAccessible name of the task.
valuenumberomittedFinite values clamp to 0..max. Omit for indeterminate progress.
maxnumber100Positive finite maximum; invalid values fall back to 100.
sizesm | md | lgmdTrack thickness.
tonebrand | neutralbrandFill color.

Accessibility & behavior

Platform Behavior & Guidelines

Uses a native progress element and HTMLProgressElement ref. Provide visible context too; aria-describedby can connect details. Nonfinite values are indeterminate. The indeterminate stripe stays still, including under reduced motion. Consumers own task state and announcements; progress is not a live region. CSS variables, className and style allow customization.

Source ownership

Run npx @devvy-ui/cli init once in your React project, then add the source:

npx @devvy-ui/cli add progress

Make the source yours.

Start from the canonical implementation used by the package and registry. Change the code, keep the MIT notice, and build the behavior your project needs.

Progress.tsxREACT / TSX

Edit your own copy. Downloaded source uses your changes; the component preview above uses the shipped version. Run the source installer first to include shared helpers.