Why generative AI needs an accessibility runtime
Learn why streaming responses, tool calls, approvals, retries, and failures need more than ordinary chat accessibility patterns.
AI interfaces change after the user acts
A conventional form usually has a short, predictable transition: submit, validate, and show a result. An AI interface can stream a response for many seconds, start tools, pause for approval, reconnect, retry, and finish long after focus has moved elsewhere.
Semantic HTML, keyboard access, visible status, and sensible focus remain required. They do not by themselves decide which asynchronous changes deserve an announcement, how repeated changes should be grouped, or when lower-priority updates should wait.
Naive announcements create new barriers
Putting a changing transcript in an ARIA live region can announce partial tokens, repeat the growing response, interrupt more important information, or leave stale work queued after a retry. Moving focus for routine streaming and status changes is more disruptive because it changes the user's reading position.
- Partial words and token-sized updates are difficult to understand.
- Re-announcing the full accumulated response repeats content.
- Tool progress can overwhelm the response the user asked for.
- Approval and failure states can arrive behind low-priority updates.
- Retries can make announcements from an obsolete response misleading.
Put policy between lifecycle state and browser delivery
generative-a11y accepts confirmed lifecycle events from the application or a thin framework adapter. Core segments response text, prioritizes important states, removes duplicates, coalesces updates, bounds queued work, and produces announcement intents. The DOM package then performs browser delivery without altering the visible interface.
This boundary keeps framework state, accessibility policy, and DOM behavior independently testable. It also makes fidelity explicit: when an adapter cannot observe a retry or connection event through a documented public API, it reports that limitation instead of guessing.
Choose the smallest supported integration
Start with the framework-neutral core and DOM packages when your application already owns lifecycle state. Use the React layer for provider and element bindings. Add the AI SDK, assistant-ui, or AG-UI adapter only when the application uses that framework's documented public lifecycle surface.
| Need | Read next |
|---|---|
| Install a custom integration | Getting started |
| Understand streaming announcements | Screen readers and streaming AI |
| Choose a framework adapter | Choose an integration |
| Test browser and assistive-technology behavior | Testing |