Components / Feedback

Skeleton nativelite

A shimmering placeholder block while content loads.

Children
none
Loading the renderer…
Skeleton rendered by the React renderer on Web
Web React
Skeleton rendered by the SwiftUI renderer on iOS
iOS SwiftUI
Skeleton rendered by the Compose renderer on Android
Android Compose
Skeleton rendered by the gpui renderer on Desktop
Desktop gpui

View exponential-ui-skeleton, painted by each native renderer.

rounded
PropTypeDefaultDescription
widthstring–A length (px or %); defaults to the full width.
heightstring–A length (px); defaults to one text line.
roundedbooleanfalseA circle instead of a bar.

No events, no slots. Children: none.

Role
hidden
Semantics
hidden (the parent announces busy)

Not focusable; no keys.

Recipe parts
Skeleton/root
Keyed by
rounded:hover:pressed:focus:disabled:checked:open:selected:invalid:dragover

Themes · Write a theme

Skeleton

A pulsing block standing in for text that is still loading, at the SHAPE of what will arrive — a row's worth of bars, never a spinner in a list.

More

It is a web and desktop affordance only: both natives answer a pending screen with a centred spinner, because a phone list is short enough that a skeleton flashes before it reads.

iOSn/a

no skeleton or shimmer anywhere: a loading screen is a centred spinner

Androidn/a

same — LoadingState (Scaffolding.kt) centres a spinner instead

Desktopok
controls::feedback::skeletonapps/desktop/crates/exponential-ui-gpui/src/controls/feedback.rs

radius MD on the theme skeleton fill, breathing 100% to 50% over the web 2s pulse on the standard curve