Skeleton

@sushindustries/ui

The wait, drawn as the thing being waited for: a line, a block or a circle, shimmering unless motion is reduced.

5 min read
View as MarkdownEdit on GitHub

Skeleton draws the wait as the shape of the thing being waited for: a line of text, a block of media, a circle of an avatar. Reach for it anywhere content has not arrived yet and a placeholder should stand in its shape until it does.

Viewport width
Phone22remthe floor, the narrowest this promises to work at
tanstacktanstack add https://adamjurek.com/r/tanstack/skeleton.jsonshadcnpnpm dlx shadcn@latest add https://adamjurek.com/r/shadcn/skeleton.json

Why it is built this way

The three shapes cover every loading state this site has actually needed, so there is no fourth. Reduced motion is handled by removing the shimmer outright rather than swapping it for something gentler - a static placeholder still says "coming", and says it calmly, for someone who asked for less motion rather than none.

Install

tanstack add https://adamjurek.com/r/tanstack/skeleton.json
shell
pnpm dlx shadcn@latest add https://adamjurek.com/r/shadcn/skeleton.json
shell
pnpm add @sushindustries/ui @sushindustries/atoms
shell

What you get

Version0.1.0
Categorycontent · Loading
Filesskeleton.tsx
DependenciesNone
Tagsloading, no-deps

No runtime dependencies

It brings nothing with it beyond the stylesheet.