
A loading state tells someone that an action or content request is still in progress. It helps distinguish waiting from a frozen interface and sets expectations about what the product is doing.
It is like a receipt showing that a request is being handled: it does not mean the result is ready yet.
Respond at the right moment
For a brief action, a subtle progress indicator may be enough. For longer work, say what is loading or what was submitted, and keep unrelated parts of the page usable when possible.
Do not invent progress
A spinner can show ongoing work, but a percentage should represent measurable progress. If the system cannot estimate completion reliably, say “Uploading” or “Preparing your report” instead of animating a fake counter.
Prevent accidental repeats
Keep the action’s state visible and avoid duplicate submissions when repeating the action could create two purchases, comments, or requests. Preserve what the person entered if the request fails.
Explain slow or failed requests
If the wait becomes unusually long, provide a helpful update or retry path. When the request fails, replace the loading state with a clear error; do not leave the interface spinning indefinitely. For a quick save, a changed button label or small spinner can show that work is underway. For a longer upload, show meaningful progress only when the client can measure it. Keep the user’s context and values in place, and prevent duplicate actions without making the whole page feel frozen.
Frequently asked questions
Key takeaways
- Show that work is underway without blocking unrelated tasks.
- Use percentages only when progress is measurable.
- Prevent duplicate actions safely.
- Replace a stalled indicator with an update or recovery path.