Treat streaming as semantic asynchronous state
Queued, generating, tool activity, partial, completed, stopped and failed states are distinguishable and accessible.
実践ガイダンス
Reserve layout, preserve focus and user input, expose stop, batch live announcements and label partial output as partial. Completion is a state transition, not the last received token.
推奨
- Stabilize geometry before output arrives
- Announce meaningful chunks rather than every token
- Keep stop and retry keyboard reachable
非推奨
- Move the active target as content streams
- Present partial output as confirmed
- Use typing theater without status meaning
検証契約
Keyboard stop, focus retention, screen-reader announcement, reduced-motion and layout-shift tests
根拠リファレンス
ref.copilotkit.ag-ui— AG-UI Protocolref.mcp.apps— MCP Apps — Embedded Interactive Tool UIref.pinterest.gestalt— Pinterest Gestaltref.vercel.ai-elements— Vercel AI Elements