Skip to main content

Actions and status

Skeleton

Render a loading placeholder surface or text-line group. The ghostly apparition of content yet to come, now with better manners for assistive tech.

Curated demo

Reference

Render a loading placeholder surface or text-line group. The ghostly apparition of content yet to come, now with better manners for assistive tech.

  • Use Skeleton only while real content is pending.
  • Match the final content shape as closely as possible, so the page doesn't jump around when it loads.
  • Prefer one announced loading region over many noisy placeholders; skeletons are aria-hidden unless ariaLabel is provided.
  • Focus mode and reduced-motion preferences both suppress shimmer in favor of static loading surfaces.

Props

Name Type Default Description
width string '100%' Placeholder width.
height string '1rem' Placeholder height.
size string Square size used by circle skeletons.
shape 'rect' | 'circle' | 'text' 'rect' Placeholder shape.
lines number 1 Number of text lines to render.
gap 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 2 Spacing token between text lines.
lastLineWidth string '75%' Width of the final line in a multi-line text skeleton.
radius string Radius token name or custom CSS radius.
animate boolean true Whether shimmer animation is enabled when user preferences allow it.
ariaLabel string Optional accessible loading announcement for a skeleton region.
ariaHidden boolean Force skeleton assistive-tech visibility.
class string Additional CSS classes.

Example snippet

<Stack space={4}>
  <Skeleton shape="circle" size="3rem" />
  <Skeleton shape="text" lines={3} lastLineWidth="60%" />
  <Skeleton width="100%" height="8rem" radius="xl" ariaLabel="Loading card" />
</Stack>