How can I announce loading and completion states for a website action?
Quick answer
Give each action a clear starting state, an accurate in-progress message, and an outcome message for success or failure. Update the visible interface when the state changes; do not show a percentage unless you can measure meaningful progress. For dynamic announcements, prepare a status or live region before changing its text, keep routine updates non-interruptive, and avoid moving focus just to announce completion. Clear or replace stale messages when the next action begins. [S2] [S3]
The question, the details, the next step.
A practical checklist
Name the action or item in the message when context might be unclear.
Show an in-progress message only after work begins; do not invent a progress percentage.
Write separate, accurate messages for success and failure, with a next step only when one is known.
If a live region is being updated in several parts, consider marking it busy during the update and clearing that state when complete. [S1]
On retry, replace stale outcome text and announce the latest action’s state.
A few more useful answers
Does aria-busy announce that an action is progressing?
No. It signals that an element is being modified and can help defer announcements of incomplete updates. It does not provide a progress percentage or report whether the action succeeded or failed. [S1]
Should every completion message use an assertive announcement?
Sources
References used for this guide.
- [S1] ARIA: aria-busy attribute — MDN Accessibility developer.mozilla.org · Checked
- [S2] ARIA: status role — MDN Accessibility developer.mozilla.org · Checked
- [S3] ARIA: aria-live attribute — MDN Accessibility developer.mozilla.org · Checked
