Skip to content

Spinner usage guidelines

Spinner lets a user know when a page, section, or action is loading.

  • To indicate ongoing loading of a page, a section, or an action.
  • To give users feedback that the action they took is processing or loading and that the UI is working properly.
  • To indicate a page or section is loading during page transitions.
  • For actions and processes that are completed instantly or nearly instantly (less than 1 second) a spinner is unnecessary and can cause visual confusion.
  • For actions and processes that take a very long time to complete (more than 10 seconds), spinner should not be used.
    • For asynchronous processes that can be completed in the background, like generating a report, progress bar can be used instead.
    • For page loading or processes that are necessary to load, like updating a data table, the loading performance should be improved or another UX flow should be used.
SizeUse cases
SmallThe small spinner is used to show loading states inline in components like button or next to components and text elements.
MediumThe medium spinner is the standard spinner size and is used to show most loading states. It’s used to show loading in UI sections like tables, drawers, and containers.
LargeThe large spinner is used for full-page loading states.

Spinners placed in containers or used to show full-page loading should be centered both horizontally and vertically in the content area they represent. For example, if a spinner is being shown while an image in a card is loading, it should be center-aligned to where the image is displayed. If the spinner represents the whole card, however, it should be center-aligned in the whole card.

If the small spinner is being used inline with other elements, it can be left or right aligned with that element.

The button component has a loading state with the spinner built into it. This should be used to show loading in button actions. Refer to the button documentation for more information about showing loading states in buttons.

  • The spinner label is enabled by default and should be used unless there is no room for additional text or the spinner is being used inline with other elements.
  • The label text should always start with “Loading” and then describe what is being loaded.
  • Be specific but concise about what is being loaded. Stick to short phrases of no more than 3-5 words.
  • Do not use an ellipsis (…) at the end of the label.