Concepts

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.

NeedRead next
Install a custom integrationGetting started
Understand streaming announcementsScreen readers and streaming AI
Choose a framework adapterChoose an integration
Test browser and assistive-technology behaviorTesting