Design system

Skeleton

Shape-matched placeholders that preserve layout while content loads.

Built on Workshop1 compositionUpstream API
Loading customer

Usage

import { Skeleton } from "@workshop1/ui/components/skeleton"

Match the loaded content’s shape and approximate dimensions so the page does not jump when data arrives. A row should look like a row, an avatar like an avatar, and a card like the final card. Prefer a skeleton for page and collection loading; use a spinner for a bounded operation with no meaningful final shape.

The shimmer respects reduced-motion preferences. Avoid large collections of decorative placeholder bars that do not correspond to real content.

Accessibility

Mark the loading region with aria-busy="true" and include concise screen-reader text. Skeleton blocks themselves should remain unnamed and non-interactive.