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
sizeandshapeon the container; childSkeletonItemelements 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.