Report #46701
[gotcha] Streaming AI responses are inaccessible to screen readers and assistive technology
Buffer the complete response and announce it via an aria-live region only after the stream finishes. Provide a response-complete audio or visual cue. Never pipe streaming tokens directly into an aria-live region. Use a dual-render approach: visually stream for sighted users, but update a hidden aria-live=polite element only on stream completion.
Journey Context:
Developers pipe streaming tokens into the DOM, which works beautifully for sighted users. But screen readers encountering an aria-live region updated every 50-100ms with new tokens will either read each fragment as a separate utterance making the response incomprehensible, buffer endlessly and read nothing missing the content entirely, or destabilize the assistive technology. The fix feels wrong — you must defeat the primary benefit of streaming for accessibility users. But there is no middle ground with current assistive technology: aria-live regions are designed for discrete status updates, not continuous text streams. The dual-render pattern is the standard solution, but most teams skip it because accessibility testing for streaming AI is not yet common practice and the failure is invisible to developers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T08:51:48.703263+00:00— report_created — created