Foundations · stable · MIT

Skeleton

A decorative loading placeholder with reduced-motion fallback.

Install editable source

Add Skeleton

Base UI / canonicalnpx shadcn@latest add https://gummyui.dev/r/gummy-skeleton.json

No package dependency beyond React. Shared Gummy material is resolved automatically.

Behavior contract

Semantics before surface

Semantics

Hidden from assistive technology; real loading state belongs on the region.

Keyboard

No component-specific keys.

System support

Light and dark themes, logical RTL layout, reduced motion, responsive content, and forwarded public refs.

Source-derived reference

Anatomy and public API

Exported anatomy

These public React parts are read directly from the canonical source during the documentation build.

  • GummySkeleton
  • GummySkeletonGroup

Prop contracts

GummySkeletonGroupProps

Composes React.HTMLAttributes<HTMLDivElement> & { label?: string; }

GummySkeletonProps

Composes React.HTMLAttributes<HTMLDivElement> & { shape?: "line" | "text" | "circle" | "card"; loadingLabel?: string; lines?: number; }

Troubleshooting

Check behavior before surface.

Implementation decisions

When to use Skeleton

Use a skeleton only while the shape of incoming content is reasonably known and the wait is brief. Keep it silent or expose one concise loading status rather than making every placeholder discoverable. Avoid mimicking loaded controls that cannot yet be used, and respect reduced motion. Test immediate data, slow data, failure, empty results, layout changes, and repeated refreshes so the placeholder never becomes misleading permanent content.

Live product source

Inspect the canonical states

The Component Lab exercises real source across default, focus, disabled, responsive, dark, reduced-motion, and RTL contexts.

Open the live Component Lab

Interactive inspection

Try Skeleton in context

Load the real component preview when you are ready to interact with its responsive, theme, and direction controls.

Editable source

Read before you install

Canonical Base UI or native source

The registry payload stays off the initial page request.