What ships when nobody checks. Each one points to the pattern that fixes it.
-
Live-Region Firehose
aria-live on the element that streams.
Why it fails Depending on the screen reader, every chunk is re-announced from the top, or chunks are dropped mid-sentence.
Instead Announced State Changes
-
Silent Spinner
A visual spinner or shimmer is the only sign the agent is working.
Why it fails Screen reader users can't tell working from finished from crashed.
Instead Announced State Changes
-
Focus Hijack
Focus jumps to each new message as it arrives.
Why it fails Pulls users out of the composer or out of the text they were reading.
Instead Focus Stays Put
-
Scroll Yank
The transcript snaps to the bottom on every chunk.
Why it fails Nobody can read earlier content while the agent is responding, least of all at high zoom.
Instead Scroll Stays Put
-
Hover-Only Actions
Copy, retry and feedback appear only on mouse hover.
Why it fails Keyboard, switch and touch screen reader users can't reach them.
Instead Actions on Focus
-
Markdown Soup
Model output shown as raw markdown, or styled to look like structure without the semantics.
Why it fails "Asterisk asterisk" read aloud. Tables heard as a stream of cells.
Instead Semantic Rendering
-
Clipped Accessible Text
The accessibility layer gets a shorter or different string than the screen shows.
Why it fails Screen reader users get part of the answer and have no way of knowing it's partial.
Instead Post-Stream Readability
-
One Giant Element
On iOS or Android, a whole long message is merged into one accessibility element.
Why it fails VoiceOver or TalkBack reads 400 words in one go, with no way to move by paragraph, reread a number or stop partway.
Instead Speaker Labels
-
Collapse and Vanish
Reasoning or steps disappear once the answer arrives.
Why it fails Anyone who wasn't watching live loses the explanation.
Instead Post-Stream Readability
-
Toast-Only Errors
Failures appear in a toast that disappears after a few seconds.
Why it fails Missed by magnifier users, cut off for screen reader users, and gone before anyone can act.
Instead Durable Errors
-
Retype on Retry
A failed send clears the composer.
Why it fails Users who type slowly, dictate or use switch access lose the most work.
Instead Forgiving Composer
-
Enter Sends Mid-IME
Enter sends even while an input method is composing characters.
Why it fails Chinese, Japanese and Korean users send half-typed words.
Instead Forgiving Composer
-
Visual-Only Reorder
CSS order or reversed flex used to put the summary first on screen.
Why it fails Reading and tab order still follow the markup, so what's heard and what's seen no longer match.
Instead Summary First
-
Countdown Confirm
"Proceeding in 10 seconds" unless the user intervenes.
Why it fails Anyone who reads, zooms or navigates slowly is out of time before they've read what they're agreeing to.
Instead Untimed Approval
-
Color-Coded Trail
Step status shown with a colored dot or border only.
Why it fails Invisible to screen readers, colorblind users and Windows contrast themes.
Instead Status Beyond Color
-
Chart Without Words
A generated chart or image is the whole answer.
Why it fails The answer lives only in the pixels.
Instead Described Media
-
Badge-Only Confidence
Uncertainty shown as an icon or color next to the answer.
Why it fails The users least able to verify the answer are the ones who can't perceive the warning.
Instead Spoken Uncertainty
-
Confirm / Cancel
Approval buttons that don't say what they do.
Why it fails Out of context (voice control, a screen reader's list of buttons) "Confirm" could mean anything.
Instead Reachable Approval