Skeleton
Placeholder geometry for resolving content, in line, block, circle and button shapes.
Live preview
Source
The exact file rendered in the preview above.
components/demos/skeleton.tsx
components/ui/skeleton.tsx
Demo source — adapt to your project. Foundry is not published as a package.
Usage
Use when you know the shape of what is coming. A skeleton that does not match the final layout is worse than a spinner, because it promises something untrue.
- Every skeleton is `aria-hidden`; expose one polite "Loading" message for the region instead.
- SkeletonText shortens its final line, which is what makes it read as a paragraph rather than a barcode.
- Do not animate more than one screenful — the pulse becomes noise.
Variants and states
Every entry below is a genuine difference in behaviour or layout, and every one of them is visible in the preview above.
- Line
- Block
- Circle
- Button
- SkeletonText — paragraph with a short last line
Accessibility
- Hidden from AT
- A screen reader should never have to listen to eleven grey rectangles.
- Reduced motion
- The pulse is disabled globally under `prefers-reduced-motion`.
Foundry implements published ARIA patterns and is tested against them. No WCAG certification is claimed — see the accessibility documentation for what is and is not covered.
Related
All componentsSpinner
A pure-CSS indeterminate indicator that inherits currentColor and costs nothing to render.
starter3 variantsEmpty state
The three-part empty state — what is missing, why, and the single most likely next action.
starter4 variantsCard
A discrete record in a collection, with five tones and a composable header, title, description and footer.
starterFeatured6 variants