Components/Feedback
Loading placeholders with a scanning shimmer.
Loading profile
Installation#
npx shadcn@latest add https://get-neonkit.vercel.app/r/skeleton.jsonUsage#
import { Skeleton } from "@/components/ui/skeleton"
<Skeleton variant="circle" className="size-10" />
<Skeleton variant="text" className="w-40" />Examples#
Table rows
Vary the widths. Identical bars look like a wireframe, not data.
Loading invoices
CustomerStatusAmount
Loading and loaded
Swap the skeleton for content of the same height.
API reference#
Skeleton
Size it with className. Also accepts every native div attribute.
| Prop | Type | Default |
|---|---|---|
variant | "rect" | "circle" | "text"rect is rounded-md, circle keeps a square ratio, text is a 12px pill. | "rect" |
color | NeonColorTints the shimmer. Falls back to --neon-accent, then cyan. | inherited |
Accessibility#
- Skeletons are aria-hidden. Put aria-busy="true" and a visually hidden "Loading…" on the container they stand in for.
- The shimmer is removed when the user prefers reduced motion; the placeholder shapes stay.