J5.12.3transient status announcementdesignresearch

Transient loading and error feedback is skipped unless it enters a live region

Aliases: loading announcement · inline error · toast · status message

What it is

The spinner vanished, a red line flashed, a toast left after three seconds — sighted users used that brief interval to learn “saving / failed.” If a screen reader did not receive the text in that interval, the feedback is zero. Transient status announcement means loading, saving, inline errors, timeouts — feedback the next frame will overwrite — must enter a live region (or take focus to the error). Otherwise it is skipped entirely, not “heard a bit late.”

The difference from “notify when the view changes” is lifetime. A replaced list stays for someone to walk. Transient feedback does not wait; miss it and there is no second copy.

Why it happens

Transient feedback is designed to spend little visual attention, so it is short-lived and usually does not steal focus. A reader samples discretely: where focus is, where the virtual cursor is, mutations in live regions. If none of the three holds “Saving…,” the node can enter the tree and leave it again without ever appearing in the speech queue. A spinner that is only a CSS animation has no node. An inline error painted beside a field, not in aria-describedby, not live, focus still on Submit, and the user thinks submit did nothing, then double-clicks.

The second layer is a race. From inserting text to the reader opening its mouth is tens to hundreds of milliseconds; if the node unmounts before speech starts, some engines cancel the announcement. Three seconds is enough for eyes and may not be enough for speech queued behind polite. Transient feedback must therefore remain on the tree until spoken, or stop being so transient and become a durable error container.

Studying it

Make save a 400ms visual spinner: animation only versus “Saving / Saved / Failed” written into a status region and kept until after speech. Errors as a flashing red box versus describedby on the field plus focus returned. Submit with the screen covered; ask what just happened. Record misses, double-submits, and whether the error text can be found again later.

Independent variables: feedback lifetime, whether it is written to live / describedby, whether focus moves, whether a polite queue is already backed up. Dependent variables: whether loading or error is reported, double-click count, whether the error can be re-read afterwards.

Where it stops holding

A skeleton of unknown duration that says “Loading” once and then stays silent for two minutes feels like a crash; it needs an occasional still-in-progress, but not once a second. When focus is already on the field and the error is part of that field’s name or description, a second global alert double-speaks. CAPTCHA countdowns are a stream of transient digits; putting them in a live region is noise — expose remaining time as queryable, do not push every number. Print or download that already opened a system dialog is already announced by the OS; a page toast duplicates it.

Applying it

  • Write loading and save phrases into a stable status node and clear them only after the reader has had a chance to speak; do not ship animation alone.
  • Write field errors into that field’s description and return focus to the first error; do not only flash a red box.
  • If a toast is required, copy the same sentence into the live region and keep it there longer than the visual animation.
  • How to check: cover the display and submit once successfully, once in failure. If “saving/failed” is never heard, or the reason cannot be re-read after failure, the transient lived only in paint. Slow the network and confirm the phrase is not deleted before speech starts.

Related

  • Same group: J5.12.1 Updates that happen without navigation must be announced to AT · J5.12.2 Announcement urgency is graded; non-critical updates must not interrupt · J5.12.4 Too-frequent announcements become noise
  • Nearby: J5.10 Name, role and value · H3.11 Accessible error announcement
  • Search terms: transient status announcement · status message · inline error

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/J5.12.3