Skeleton

Skeleton preserves layout while async data loads — stack SkeletonItem blocks to mirror text lines, avatars, or media rectangles.

Set defaults on Skeleton and override per item with size, shape, or explicit width/height. Remove placeholders as soon as real content is ready.

  • List rows, cards, or feeds where layout should not shift when data arrives
  • Content areas that stay interactive while loading (unlike a blocking overlay)

Prefer Spinner for indeterminate action waits with no layout to preserve.

  • Wrap placeholder blocks in Skeleton.
  • Set default size and shape on the container; child SkeletonItem elements inherit when omitted.
  • Override per item with explicit dimensions to match final content geometry.
  • Swap the skeleton subtree for real content when the fetch completes.
Text block skeleton

Skeleton placeholders mirror the shape of loading text so layout does not shift when real content arrives. Stack lines at approximate widths of the final copy.

Avatar row

Row layout mimics a list item with avatar and text lines while content loads.

Card placeholder

Card skeleton combines a media block and title line for feed or grid placeholders.