Overview
Installation
Usage
Variants
Text Lines
Avatar Placeholder
Card Placeholder
Image Placeholder
Table Row Placeholder
API Reference
Shape of the skeleton. Values:
text · circular · rectangular · roundedWidth as a CSS value (
"60%") or pixel number (240).Height as a CSS value or pixel number. Required for non-text variants.
For
text variant: number of text line skeletons to render.Enables the shimmer animation.
Additional Tailwind classes for custom overrides.
Accessibility
- Skeleton containers use
aria-busy="true"andaria-label="Loading"to announce loading state - When content loads,
aria-busyis removed so screen readers announce the real content - Do not use Skeleton for content that loads instantly (under 300ms) — it adds unnecessary visual noise
- Provide a text fallback for screen readers that cannot convey the loading state visually
Do’s & Don’ts
Do
- Mirror the exact shape and size of the real content
- Use Skeleton for content that takes longer than 300ms to load
- Compose multiple Skeleton elements to build realistic loading screens
- Disable animation (
animate={false}) in reduced motion environments
Don't
- Don’t use Skeleton for content that loads instantly — use a spinner instead
- Don’t add Skeleton for every element — focus on primary content
- Don’t mix Skeleton with real content in the same card
- Don’t display Skeleton indefinitely — show an error state if loading fails