feat: Add React Renderer for A2UI Protocol#358
feat: Add React Renderer for A2UI Protocol#358mschienbein wants to merge 3 commits intogoogle:mainfrom
Conversation
Complete React implementation of the A2UI specification with: ## Core Features - Full A2UI protocol message processing (beginRendering, surfaceUpdate, dataModelUpdate, deleteSurface) - SSE transport with JSONL parsing and automatic reconnection - JSON Pointer (RFC 6901) data binding resolution - Multi-surface rendering with independent state management - Message buffering for out-of-order delivery ## Components (Standard Catalog v0.8) - Layout: Row, Column, Card, Tabs, Modal, Divider - Content: Text (with markdown), Image, Icon, Video, AudioPlayer - Interactive: Button, TextField, CheckBox, ChoicePicker, DateTimeInput, Slider, List ## Architecture - MessageProcessor: Central state machine for protocol handling - CatalogRegistry: Version-aware component registration (v0.8, v0.9) - A2UISurface: Renders adjacency-list format to React tree - A2UIRoot: Spec-based static rendering for simpler use cases ## Spec Compliance - UserAction format matches client_to_server.json schema - Flat structure with sourceComponentId and ISO 8601 timestamp - ClientToServerMessage wrapper for wire format ## Sample App - Interactive demo showcasing all components - Protocol demo with streaming simulation - Japanese vocabulary flashcard example - Light/dark theme support
5533c99 to
ec45961
Compare
Document setup instructions and demo modes for the React sample application.
The relative path was wrong (../../ instead of ../../../), causing npm to create a broken symlink that couldn't resolve the @a2ui/react package.
|
Hi @mschienbein,, |
|
Thanks for this comprehensive React renderer implementation — the architecture with MessageProcessor and CatalogRegistry is well thought out, and 100 tests is impressive coverage. We're consolidating React renderer efforts under #542, which is the official collaboration between Google and CopilotKit. @lukasmoschitz is leading that work. We're also transitioning from v0.8 to v0.9 of the spec soon, with shared libraries across renderers. We'd love your help reviewing both the current v0.8 implementation in #542 and the upcoming v0.9 changes — your experience here would be valuable. Would you be interested in contributing there? Closing this in favor of #542, but thank you for pushing the React ecosystem forward! |
Summary
Complete React implementation of the A2UI specification, providing a production-ready renderer for React applications.
Core Features
beginRendering,surfaceUpdate,dataModelUpdate,deleteSurfaceComponents (Standard Catalog v0.8)
Architecture
Spec Compliance
UserActionformat matchesclient_to_server.jsonschema exactlysourceComponentIdand ISO 8601timestampClientToServerMessagewrapper for wire formatQuick Start
The demo runs at
http://localhost:5173/with two modes:Test Plan
npm testin renderers/react)Related
Implements React renderer as discussed in A2UI specification roadmap.