Make necessary waiting moments feel clearer and more considered with loading animations that communicate activity, maintain visual continuity and reassure users that the experience is still actively responding.
Layout
Use Numeric Tunnel only when progress maps to a real signal such as upload percentage, asset warm-up, or measured initialization. Use Lines Loader for short unknown waits. Use Stack Loader for brief route or asset transitions. Use skeletons when the layout is known and content will stream into place.
A loader earns its place during route latency, upload progress, WebGL warm-up, asset-heavy experiences, product demos, and branded launch flows. It should represent something genuinely happening.
Avoid preloaders on fast pages, fake delays, blocking first paint, progress numbers that lie, or loaders that hide usable content. If the page is already fast, do not manufacture a wait.
Tie animation to real load state, keep it short, avoid blocking first paint, clean up timers, and prefer skeletons when the layout is predictable. Do not let the loader outlive the wait.
Use aria-busy on the loading region and concise status text when the change matters. Do not spam live regions on every animation frame or announce decorative movement.
Keep them short, light, and clear. Avoid full-screen blocking animations unless the user genuinely cannot proceed until the task completes.
Need a custom effect? Tell us what to create.