Loading

Accessibility

Accessibility Props

NameTypeDescription
titlestringProvides an accessible name for the loading indicator that is announced by screen readers but not visually displayed.
ariaHiddenbooleanWhen true, hides the entire component from screen readers. Useful when loading state is conveyed through other means.
textTranslationText displayed below the loader image. When provided, this text is announced by screen readers instead of the title.
asComponentstring \| React.ElementAllows rendering the loading indicator with a different HTML element to maintain semantic structure.

Automatic Accessibility Features

  • Uses semantic SVG elements with proper ARIA attributes for the loading indicator
  • Automatically adjusts announcements based on the presence of text or title props:
    • When text is provided, the visual loading indicator is hidden from screen readers and only the text is announced
    • When title is provided, it serves as an accessible name for the loading indicator
    • When ariaHidden is true, the entire component is hidden from screen readers
  • Always renders as a div when text is provided to ensure proper structure

Best Practices

    • Use text when you want both visible and announced text
    • Use title for loading indicators without visible text
    • Use ariaHidden={true} when:
      • Loading state is conveyed through other visible text on the page
      • Multiple loading indicators are present and only one should be announced
    • Always ensure both title and text are properly translated
    • By default, Loading renders as a div element
    • Use asComponent when the Loading component is wrapped by another component that requires a phrasing element as children
    • Ensure the chosen element maintains proper semantic structure:
    <Button>
    <Loading title="Title of the button is loading" asComponent="span" />
    </Button>

Examples

Basic loading with accessible name

<Loading title="Loading page content" type="pageLoader" />

Loading with visible text

<Loading text="Please wait while we process your request" type="boxLoader" />

Multiple loaders with controlled announcements

<Stack>
<Loading type="searchLoader" title="Loading search results" />
<Loading
type="inlineLoader"
ariaHidden={true} // This loader won't be announced
/>
</Stack>