Skip to content

ProgressBar

Status: Stable
Hero Image

Progress bars visualize the expected time for a user to complete a process. They help the user anticipate how much time is needed to reach an end state. Progress bars should be visible, readable, and accurately reflect the progress made towards an end state.

  1. Track: Illustrates the length of the process.
  2. Indicator: Forward and backward movement to show where the user is in the process versus what they’ve completed.
  3. Value label: Numeric values to describe the number of steps total, remaining, and completed.
  4. Label (optional): Describes a specific step or summarizes the overall process to orient users. Label should be a max of 35 characters.

Examples

Step

  • The value label should reflect the type of steps (e.g. "Step X of Y" or "Section X of Y").
  • If a label is specified, it is separated from the value label with a colon (e.g. "Step X of X: Title").

Step 1 of 3: Getting started

Percentage

  • The value label will show a percentage from 0-100%.
  • If a label is specified, it is separated from the value label with a dot ("•") (e.g. "Home information • 20% completed").

Phase 1 • 25% completed

Design guidelines

Show users how long the process takes to complete

DOClearly state how much time is remaining in the process.

Help users navigate the process

DOUse an affordance that allows a user to move to a previous question, next question, or exit the process.
DON'TMove the indicator backward unless the user chose to move to the previous question.

Keep progress bars clearly visible and readable

DOPlace the progress bar at the top of the page and and in close proximity of page content.
DON'TPlace the progress bar below questions or directly above back/controls.

Development

Customizing the value label

When using the step variant of this component, you can use the stepLabel and separator props to influence how the value label is rendered.

Section 1 of 4

Step 1/4

Step 1 out of 4

Props

<ProgressBar>

className

Deprecated
string

max

number

label

string

separator

string

stepLabel

string

value

Required
number

variant

"percentage" | "step"

ref

(instance: any) => void | RefObject<any>