skelly measures your rendered UI, then remembers it — so the next load paints a skeleton of your actual layout, not a guess. No build step, no headless browser, nothing to regenerate when your markup changes.
Wrap anything — a button, a table, an entire page.
skelly measures the real layout — shapes, radii, line lengths.
A matching skeleton renders instantly — client or server.
Pick a visual per component or set one globally. All of them respect prefers-reduced-motion.
One paste. It installs skelly, finds the hand-written skeletons already in your codebase, replaces them, and deletes what it replaced.
Agent already browsing? Point it at useskelly.dev/llms.txt — the whole API in one fetch.
The core is vanilla — 2.1 kB, framework-agnostic. Thin adapters where you want idioms.
import { Skelly } from 'use-skelly/react'
<Skelly loading={isLoading} visual="shimmer">
<ProfileCard user={user} />
</Skelly>Bundle size, minified + gzip. Core only; adapters add ~0.4 kB.
Test Skelly's layout-compiling speed on your current browser CPU thread.