Home/Components/Spinner & skeleton

Spinner & skeleton

Wait indicators. Spinner for short waits; skeleton for layout that's about to fill in.

Stable .spinner Two patternsNo celebration

Spinner

A 1.6 px stroke arc rotating. Three sizes — 14, 16, 20.

Posting payroll…

Skeleton

A subtle shimmering placeholder. Used while loading a list or detail page — better than a spinner because the user sees where things will appear.

Placement

Spinner inside a button, on a page, or paired with a one-line message.

Fetching receipts…

Anatomy

PropertyValueNotes
stroke2 px
speed800 ms / revDon’t spin faster — feels frantic
skeleton bg--surface-muted → sunkenShimmer left to right
skeleton speed1.6 s loopSlow enough to not distract

Do & don't

Do

Use a skeleton when you know the layout that will appear. It eliminates layout shift.

Don't

Show a spinner for more than 8 seconds. If something is taking that long, show progress and an estimate.

Do

Inside buttons, swap the leading icon for a spinner and dim the label.

Don't

Use the spinner colour as celebration. The work isn’t done yet.