
Toast Component
Components
An animated skeleton loader with shimmer placeholders, staggered loading states, and smooth transitions that reveal real content without overlapping the two states.
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.
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.
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.
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.
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.
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.
| Prop | Type | Default | Description |
|---|---|---|---|
theme | string | spotify | Colour palette for the placeholders, their shimmer and the loaded content. |
mode | string | dark | Light or dark version of the palette. Starts dark. |
animation | string | shimmer | Loading effect drawn across the placeholders. |
duration | number | 1.6 | Length of one loading cycle, in seconds. Not used when Animation is None. |
stagger | number | 0.12 | Offset between placeholders so they don't pulse in sync, in seconds. Not used when Animation is None. |
rounded | string | md | Corner radius of the placeholders. |
swapAnimation | string | scale | How the real content appears when loading finishes. |
swapDuration | number | 0.5 | How long the real content takes to appear, in seconds. Not used when Swap animation is None. |
swapStagger | number | 0.06 | Delay between content items appearing, in seconds. Not used when Swap animation is None. |
loadTime | number | 3 | How long the Replay button pretends to load before showing the content, in seconds. The first load always takes 3 s. |
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.
A spinner only signals progress. Skeleton reserves space for the expected layout, so users understand the structure while data loads.
Placeholders exit before the content appears, which then enters with a fade, rise, scale, or instant replacement.
Yes. A non-animated mode is available, and duration and stagger are ignored when it’s on.
No. Fetching, error handling, and deciding when content is ready are handled by the application.
It can be, by hiding decorative placeholders, communicating loading status, and avoiding excessive announcements as elements appear.
Need a custom effect? Tell us what to create.