Skip to main content
On this page

Shows a user's progress through a multi-step form, and what's coming next.

When to use​

  • For multi-step forms with 3 to 8 steps, to help users understand where they are and how much is left
  • To show what's coming up next, alongside where the user currently is

When not to use​

  • For flows with more than 8 steps - restructure the flow into stages first
  • To let users navigate back to a previous step by clicking - Progress Stepper is display-only. Use a Text Link or CTA Button for explicit back navigation

Anatomy​

  1. Step counter: the current step number and total step count, for example "1 of 4"
  2. Current step name: the name of the step the user is on
  3. Next step label: a preview of what is coming next, for example "Next: Delivery address"
  4. Progress bar: a segmented bar, one segment per step, filled up to the current step

Basic usage​

Loading...
Edit live code
<ProgressStepper
  currentStep={2}
  steps={['Your details', 'Delivery address', 'Payment', 'Review']}
/>

The current step name and next-step label are derived from steps. currentStep is 1-indexed, matching the step counter shown to the user.

Final step​

When the user is on the final step, use finalStepLabel to set what appears in place of the next-step label.

Loading...
Edit live code
<ProgressStepper
  currentStep={4}
  steps={['Your details', 'Delivery address', 'Payment', 'Review']}
  finalStepLabel="Finish"
/>

Use "Finish" only when submitting is the very next action. If a review or confirmation step follows, use its name instead.

Heading level​

Progress Stepper renders the current step name as an h2 by default. Use headingAs to match it to the heading hierarchy of the page it sits on.

Loading...
Edit live code
<ProgressStepper
  currentStep={1}
  steps={['Your details', 'Delivery address', 'Payment']}
  headingAs="h3"
/>

Content​

Step names​

  • Keep step names short: long names may wrap awkwardly
  • Use a noun phrase describing the step's content ("Delivery address"), not an instruction ("Enter your delivery address")

Final step label​

Match the label to what actually happens next. "Finish" is only right when submitting is the very next action.