Skip to content

ProgressBar

Status: Stable

Latest released: December 2020

Current version: v3.0.0

Storybook
GitHub
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.

Variants

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

Do
Clearly state how much time is remaining in the process.

Help users navigate the process

Do
Use an affordance that allows a user to move to a previous question, next question, or exit the process.
Don't
Move the indicator backward unless the user chose to move to the previous question.

Keep progress bars clearly visible and readable

Do
Place the progress bar at the top of the page and and in close proximity of page content.
Don't
Place the progress bar below questions or directly above back/controls.

Development

import ProgressBar from '@nerdwallet/react-progress-bar';
<ProgressBar />;

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

string


max

= 100

number


label

string


value

number

Required

variant

= 'step'

'step' | 'percentage'


separator

= ' of '

string


stepLabel

= 'Step'

string