Skeleton

Loading placeholders you shape to match your content. They wait calmly and still, with no shimmer, then the real content switches on in their place, row by row.

Preview

Props Changes apply to the live preview above.

Installation

npx @lumioui/cli add skeleton

Usage

import { Skeleton, SkeletonSwitch } from "@/components/ui/skeleton/skeleton";
<Skeleton />

Also exported: SkeletonSwitch.

Examples

Inbox switch-on

A messaging inbox while threads sync.

Store grid, long wait

A fashion store grid loading under a filter change.

API reference

Skeleton

Prop Type Default
className string —
variant "pulse" | "shimmer"

"pulse" (default): a still, dim block. @deprecated "shimmer" — now identical to "pulse". Nothing moves across a placeholder: loading is still, dim structure that switches on when ready.

—
active boolean

Kept for compatibility — the block is always still. Default true.

—

SkeletonSwitch

Prop Type Default
loaded* boolean

false shows placeholder; true switches the real content on in place.

—
placeholder* React.ReactNode

The dim layout shown while loading — the exact shape of children.

—
children* React.ReactNode

The real content. Each top-level child switches on in turn on the row rhythm.

—
className string —