Loading
Loading
Loading
mobile footer

Build the Interaction Layer Your Website is Missing.

Browse All EffectsBrowse All EffectsBrowse All EffectsUpgrade to ProUpgrade to ProUpgrade to Pro

80+ effects free, forever. No credit card.

© 2026 Hyperiux. All Rights Reserved.

AI Component CatalogueHey AI, Learn About Us
Platform

Vault

  • Documentation
  • Pricing
  • Blog
  • Community
  • NPM
  • MCP

Categories

  • All Effects
  • WebGL
  • Text
  • Backgrounds
  • Buttons
  • Carousels
  • Scroll
  • Components
  • Navigation
  • Cursor
  • Transitions
  • Loaders

Documents

  • Introduction
  • Installation
  • CLI
  • Dependencies
  • License

Legal

  • License Agreement
  • Terms of Service
  • Privacy Policy
  • Refund Policy
Socials
  • Twitter / X
  • LinkedIn
  • GitHub
  • Instagram
Contact Us
  • hello@hyperiux.com
New effects, in your inbox

Every new drop, plus the occasional behind-the-scenes build. No spam. Unsubscribe anytime.

Loading
Home/Skeleton Component

Skeleton Component

An animated skeleton loader with shimmer placeholders, staggered loading states, and smooth transitions that reveal real content without overlapping the two states.

@base-ui/reactclass-variance-authoritylucide-reactmotiontailwind-merge
DemoDemoDemo

Tune the Real Props

Overview

Skeleton shows placeholder shapes that match the content on its way, so users see the layout before the data arrives. When loading finishes, placeholders exit first and the real content fades, rises, or scales in, so the two states never overlap.

Use it when a section’s layout is known but its content isn’t ready yet, such as product cards, dashboards, profiles, and feeds. It should never make users wait longer than the real load.


Theme and Interaction Customisation

Set placeholder roundness and group-level animation so loading shapes match the interface. Shimmer timing, stagger, the reveal mode (fade, rise, scale, or instant), entrance duration, and delay between loaded items can each be tuned separately.


Example Production Use Case

A SaaS dashboard can show metric and activity placeholders while data loads, then fade in the real cards in the same positions so nothing jumps.

An ecommerce listing can reserve space for product images, names, and prices, with a gentle staggered shimmer across the grid until inventory arrives.

A social or news feed can use rise-in reveals for each loaded post, keeping scrolling stable while the next batch is fetched.


Best Used For

  • SaaS dashboards with metrics and summaries.
  • Product listings.
  • Profile and account pages.
  • Content and activity feeds.
  • Data-driven cards.
  • Project management tools.
  • Ecommerce product details and recommendations.

Not For

Skip it for operations that finish almost instantly, where placeholders just add flicker.

If the incoming content’s shape is unknown, placeholders mislead and cause layout shifts. Form submissions and background actions suit a button state or progress message better.

It never replaces error handling, so failed loads need a clear error or retry state.


Performance Budget

Keep shimmer lightweight with subtle stagger across large sets, start reveals as soon as content is ready, and keep entrances short. Skip skeletons entirely for cached or instantly available content.


Accessibility and Mobile

Hide decorative placeholders from assistive technology and expose one loading status for the region, updating it once when content arrives. On mobile, size placeholders to the responsive layout and avoid overflow, and with reduced motion use static placeholders and an instant swap.


Common Mistakes

  • Placeholders that don’t match the real content.
  • Overlapping loading and loaded states.
  • Keeping skeletons up after content is ready.
  • Too many independent shimmer effects.
  • Showing skeletons instead of an error when loading fails.
  • Replacing cached content with placeholders on background refresh.
  • Causing layout shifts at reveal.
  • Ignoring reduced-motion preferences.

Changelog

v1.0.0

Oct 23, 2026
Initial release

API Reference

PropTypeDefaultDescription
themestringspotifyColour palette for the placeholders, their shimmer and the loaded content.
modestringdarkLight or dark version of the palette. Starts dark.
animationstringshimmerLoading effect drawn across the placeholders.
durationnumber1.6Length of one loading cycle, in seconds. Not used when Animation is None.
staggernumber0.12Offset between placeholders so they don't pulse in sync, in seconds. Not used when Animation is None.
roundedstringmdCorner radius of the placeholders.
swapAnimationstringscaleHow the real content appears when loading finishes.
swapDurationnumber0.5How long the real content takes to appear, in seconds. Not used when Swap animation is None.
swapStaggernumber0.06Delay between content items appearing, in seconds. Not used when Swap animation is None.
loadTimenumber3How long the Replay button pretends to load before showing the content, in seconds. The first load always takes 3 s.

Questions, Answered.

What is Skeleton?

Skeleton is a React loading component that shows placeholder shapes while content is prepared, with animated loading states and coordinated transitions to the real content.

How is Skeleton different from a spinner?

A spinner only signals progress. Skeleton reserves space for the expected layout, so users understand the structure while data loads.

What happens when the content finishes loading?

Placeholders exit before the content appears, which then enters with a fade, rise, scale, or instant replacement.

Can I disable the loading animation?

Yes. A non-animated mode is available, and duration and stagger are ignored when it’s on.

Does Skeleton automatically fetch data?

No. Fetching, error handling, and deciding when content is ready are handled by the application.

Is Skeleton accessible?

It can be, by hiding decorative placeholders, communicating loading status, and avoiding excessive announcements as elements appear.

View MoreView More

Request a Custom Animation

Need a custom effect? Tell us what to create.

Related Effects

Explore All EffectsExplore All EffectsExplore All Effects
Toast Component
@base-ui/reactclass-variance-authoritylucide-react

Toast Component

Components

Input OTP Component
@base-ui/reactclass-variance-authorityinput-otp

Input OTP Component

Components

Dialog Component
@base-ui/reactclass-variance-authoritylucide-react

Dialog Component

Components

All Effects
Featured ComponentsText AnimationsAnimated BackgroundsAnimated ButtonsCarousel EffectsScroll EffectsCreative ComponentsNavigationsCursor EffectsTransitionsLoadersWebGL & 3D Effects
Templates
IntroductionInstallationCLIDependenciesLicense
PricingBlogGithubNPMMCP Doc