IconLogoMark
IconUiExpandCollapseDown

Release NotesIconUiExpandCollapseDown

ComponentsIconUiExpandCollapseDown

AvatarsIconUiExpandCollapseDown
ButtonsIconUiExpandCollapseDown
Data VisualizationIconUiExpandCollapseDown
DialogsIconUiExpandCollapseDown
FormsIconUiExpandCollapseDown
IconsIconUiExpandCollapseDown
ModulesIconUiExpandCollapseDown
NotificationsIconUiExpandCollapseDown
ThemesIconUiExpandCollapseDown
TypeIconUiExpandCollapseDown

GuidelinesIconUiExpandCollapseDown

PatternsIconUiExpandCollapseDown

WordsIconUiExpandCollapseDown

ResourcesIconUiExpandCollapseDown

Spinner

/

Design

Communicate to the user their content is loading.

Our spinner indicates that the content meant for a given container is taking extra time to appear. Regardless of how long or short the time to load may be, the spinner will always operate at one speed. It should never be used to indicate progress.

IconWarning
Version 5+
If using Uniform Version 5 or later, please refer to our Storybook docs for the Spinner documentation and examples.

Sizes

Choosing the right size depends on where the loading content lives.

X-Small: Reserved for in-line areas of interface like a table or list.

Mobile

Spinners are closely aligned with progress on mobile. They’re generally used to represent activity, like pulling to refresh or synchronizing data. They might also be used to load a new experience or portion of the interface.

  • Use the spinner when checking for updates, or loading new content into a list. Don’t use it when reporting determinate progress, and never replace the network activity indicator in the status bar. Instead follow Apple’s recommendations.

  • Like Apple, when representing determinate progress, use progress indicators as outlined by Material's guidelines.

Usage

Not for Progress

The spinner should never be used to indicate progress. There’s nothing to track, we’re simply completing a quick call to our servers.

Don't include any text regarding progress.

Don'tinclude any text regarding progress.

Do allow the spinner to speak for itself.

Doallow the spinner to speak for itself.

Position

Always place spinners in the center of the content’s container. Don’t hide it in the corner like the loading isn’t important.

If the loading content lives outside of the viewport, center horizontally instead.

Don't misplace a spinner where it may not be seen.

Don'tmisplace a spinner where it may not be seen.

Do put it front and center to clearly indicate something’s happening.

Doput it front and center to clearly indicate something’s happening.

Limit per Page

You get one spinner per page. Show too many at once and the user might get sick! If more than one piece of content is loading, stick to a large for the whole page.

Don't give each container its own spinner.

Don'tgive each container its own spinner.

Do put one spinner in the center of the UI to indicate multiple pieces are loading.

Doput one spinner in the center of the UI to indicate multiple pieces are loading.

Accessibility

Audit Results

See our full accessibility audit for more information about these results.

PlatformVisualInteractiveAutomatedDetails
ReactIconConfirmation PassIconConfirmation PassIconConfirmation Pass
React NativeIconWarning WarningIconConfirmation PassIconWarning N/A
  • IconWarningAnimation is not disabled if user sets reduced motion preference. (AAA)

Platform

platformnotes
Web
  • Stick to the guidelines above.
Apple
  • Stick to the guidelines above.
Android
  • Stick to the guidelines above.