Skeleton
Placeholder shapes shown while content loads.
- Browsers
- Chrome 123+Firefox 121+Safari 17.5+
- Tier
- 0
- Bundle compressed
- 317 B
- Forced layout budget
- 0 ms
- Axe budget
- 0
- SSR compatible
- Yes
- Published contract
- Test harness
Playground
Skeleton
Text
Profile
Media
Table
Pulse, shimmer, static
Load and reveal
API
Skeleton
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "pulse" | "shimmer" | "none" | "pulse" | Placeholder animation. Reduced motion disables animation and content reveal motion. |
circle | boolean | false | Renders a circular placeholder instead of a rectangular one. |
height | number | string | — | Placeholder height; a number is treated as pixels. |
loading | boolean | true | False reveals children in the same wrapper, preserving dimensions and ref; the selected stylesheet animates the reveal. |
width | number | string | — | Placeholder width; a number is treated as pixels. |
children | ReactNode | — | Real content rendered once loading is false. |
render | ReactElement | ((props, state) => ReactElement) | — | Replace the rendered element while keeping behavior and accessibility wiring. |
Keyboard
| Key | Action |
|---|
Accessibility
Skeleton keeps a stable wrapper while loading and revealing content. Loading placeholders are aria-hidden; the loaded children retain their native semantics. Choose pulse, shimmer or none. Reduced motion disables animation. Describe loading in the enclosing region rather than giving each decorative skeleton a live status.
Styling hooks
data-uiify-skeletondata-statedata-variantdata-shape--uiify-skeleton-w--uiify-skeleton-h