Powerful and customizable React stepper components built for modern applications and websites. These form steppers are built using React Aria and styled with Tailwind CSS.
ProgressSteps is a purely decorative status display driven entirely by the status you pass it. Stepper owns the active step itself — it renders each step's content, wires up Back/Next/Finish, and can gate advancing with canAdvance — for an actual multi-step form, not just a progress indicator.
Pass canAdvance, a function called with the current step's index right before Next moves forward. Return false to block the advance — e.g. because that step's required fields haven't been filled in yet.
In linear mode (the default), the only way through the wizard is Stepper.Controls' Back/Next — a step's header is not clickable. With linear={false}, a step that's already been completed can be clicked directly to jump back to it; upcoming steps stay inert either way.
Yes — pass activeStep and onStepChange to drive it from your own state instead of letting Stepper manage it internally with defaultActiveStep.
Pass optional to that Stepper.Step — it renders a muted "(optional)" next to its title. It's a visual label only; pair it with your own canAdvance logic if an optional step should be skippable without being filled in.
Yes — the current step's <li> gets aria-current="step", matching every other step indicator in the library (ProgressSteps included).