How to build an accessible Spinner in React

role="status" with an accessible label (default "Loading", i18n-driven) so assistive tech announces the busy state rather than leaving the spin silent

When to use a Spinner

When not to use it

Accessibility

Role status, verified at WCAG 2.2-AA.

Common mistakes

Avoid: A full-page spinner for content whose layout is known

Prefer: <Skeleton> mirroring the content shape to reduce perceived wait and layout shift

Skeletons preview structure and feel faster; spinners are best for short, shapeless waits

Example

<Spinner />

See the full Spinner reference →