← Hub · Open the micro-demo

Loading states: skeletons, spinners, and ‘busy’ semantics

Loading states are where many apps accidentally block keyboard users, spam screen reader users, or allow double-submits. A good loading state is calm, bounded, and announced.

Live demo: loading-states-demo.html (BEFORE/AFTER)

What breaks in many loading spinners

Minimum viable pattern

When to use which semantics

A practical checklist