Report #70923
[gotcha] Streaming LLM text updates flood screen readers via ARIA live region announcements
Set aria-busy='true' on the streaming container during generation. Use a separate aria-live='polite' region that is updated only when the stream completes with the full response text. Never bind aria-live directly to the streaming DOM element that updates per-token.
Journey Context:
The standard approach for dynamic content updates is to use ARIA live regions. But streaming LLM responses update the DOM every 20-100ms per token, and each update to an aria-live region triggers a screen reader announcement. This creates a chaotic, unusable experience where the screen reader attempts to narrate every incremental fragment — 'I' ... 'I think' ... 'I think the' ... 'I think the answer' — making the response incomprehensible. The gotcha is that the streaming pattern that works beautifully for sighted users is actively hostile to assistive technology. The fix requires a dual-rendering approach: visual streaming for sighted users, and a buffered complete-text announcement for screen reader users. Many teams ship streaming without ever testing with a screen reader, creating a silent accessibility failure that violates WCAG 2.1 SC 4.1.3.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T01:37:29.320949+00:00— report_created — created