AGenUI
AGenUI is a high-performance A2UI SDK for building native generative UI experiences across iOS, Android, and HarmonyOS.
Official Website · Quick Start · API Reference · Contributing
English | 中文
This project is under active development and evolving rapidly. Contributions, feedback, and discussions are warmly welcome.
What's New in v1.5.0
Released on 2026-09-04
- (iOS) Runtime Configuration API: Added
AGenUI.setRuntimeConfig(_:), which accepts a JSON string of runtime switches from the host so behavior can be toggled remotely. Call it once during SDK initialization, before any surface renders. - (iOS) Physical Pixel Alignment: Hairline borders are promoted to an integer physical pixel width so all four sides render with identical weight on every screen scale, and component frames are snapped to the physical pixel grid so adjacent siblings stay gap-free. Governed by the
borderPixelAlignmentswitch (default on). - (HarmonyOS)
line-heightMeasurement Rework: Text measurement now carries the resolved absolute line-box height, matching the render side exactly. An explicitline-heightdefines the line box even when smaller than the font's natural metrics, andwhite-spaceno longer affects line-height resolution. font-weightCatalog Coverage: All three platforms now accept thenormal/medium/boldkeywords and numeric 100–900 weights, as either a JSON number or an integer string, with platform caveats documented in the catalog.- (iOS) Blank-Check Component Count:
onBlankCheckResultnow reports the component-tree size at detection time. Breaking change: the signature becomesonBlankCheckResult(_ surface:isBlank:componentCount:). - (Android) Fixed text disappearing for unbreakable digit and CJK strings at specific screen densities, by aligning measurement metrics with the rendering path.
- (iOS) Fixed properties applied during component initialization — most visibly a constant
trackInfo— never reaching listeners. - (HarmonyOS) Fixed DateTimeInput measurement carrying a stale line-height override.
What is AGenUI?
AGenUI is an A2UI SDK that simultaneously supports iOS, Android, and HarmonyOS. Built on and fully implementing the A2UI v0.9 protocol open-sourced by Google, it renders the streaming data of LLM-generated interactive UI in real time on mobile devices. Under the hood, it is powered by a cross-platform shared C++ core engine, while the three-platform rendering engines consume the component protocol dispatched by the core engine and perform drawing using native system capabilities.
AGenUI leverages native system UI capabilities to render interactive cards, forms, lists, images, media players, and more, delivering a high-performance, smooth user experience.

Key Features
- Real-time streaming rendering — structured component descriptions are generated by the LLM, arrive incrementally, and update in real time
- High performance — native rendering on iOS, Android, and HarmonyOS, maintaining a 120 fps refresh rate in core scenarios such as page scrolling
- 22 built-in components — 18 A2UI protocol components + 4 SDK extension components
- Custom component API — register and extend native components via the custom component API, so the LLM can emit component descriptions by component name
- Function Call integration — register client-side tools/functions that the LLM can invoke on demand
- Design Token & theming — unified Design Token system and theme modes across all three platforms
- Light / Dark mode — built-in light/dark appearance switching
Architecture
AGenUI adopts a shared C++ core engine + three-platform component rendering engines design. The C++ layer implements capabilities shared across all three platforms, including streaming data parsing, virtual component tree management, render data caching, theme/style resolution, and component change diffing. The C++ layer synchronizes the parsed component protocol to the three-platform rendering engines to trigger drawing.
Project Directory
| Path | Contents |
|---|---|
core/ |
C++ core engine — parser, differ, layout, Function Call framework |
core/include/ |
Public C++ API consumed by platform bridging layers |
platforms/ios/ |
iOS component renderer + Objective-C bridge |
platforms/android/ |
Android component renderer + JNI bridge |
platforms/harmony/ |
HarmonyOS component renderer + NAPI bridge |
playground/ |
Three-platform demo apps for development & debugging |
scripts/ |
Build scripts for each platform |
Components
A2UI Protocol Components
The following 18 components implement the A2UI protocol specification and are supported on all three platforms.
| Component | Description |
|---|---|
Text |
Styled text with variants (h1–h5, body, caption, etc.) |
Image |
Network image with scale modes and rounded corners |
Icon |
Icon rendered via Unicode / SVG mapping |
Divider |
Horizontal or vertical separator |
Video |
Native video player with seek and auto-hiding controls |
AudioPlayer |
Audio player with progress bar |
Button |
Tappable button that triggers Action events |
Row |
Horizontal flex container |
Column |
Vertical flex container |
Card |
Shadowed card container |
List |
Scrollable list with static or template-driven children |
Tabs |
Tab bar with switchable panels |
Modal |
Native dialog overlay |
TextField |
Text input with optional validation |
CheckBox |
Boolean toggle |
Slider |
Numeric range input |
ChoicePicker |
Single / multi-select picker |
DateTimeInput |
Date and time picker |
SDK Built-in Extension Components
The following 4 components are bundled with the SDK but are not part of the A2UI protocol specification.
| Component | Description |
|---|---|
Table |
Data table with Yoga sub-layout |
Carousel |
Image / content carousel |
Web |
Embedded WebView |
RichText |
HTML rich text rendering |
Playground Example Components
The following 3 components are registered and applied in the Playground to demonstrate integrating custom components via the API.
| Component | Description |
|---|---|
Chart |
Bar, line, and pie charts |
Markdown |
Markdown rendering with streaming support |
Lottie |
Lottie animation playback |
You can register your own components at runtime using the same API — see the Quick Start section.
Catalog File
The repository root includes agenui_catalog.json, a self-contained (freestanding) Catalog JSON Schema file conforming to the A2UI v0.9 specification. All external $refs have been inlined — it can be used standalone with no external dependencies.
Coverage:
- 25 components: 18 A2UI protocol standard components + 4 SDK built-in extension components (
Table,Carousel,Web,RichText), plus 3 Playground example components (Chart,Markdown,Lottie) - 14 functions: covering validation, formatting, logical operators, and URL navigation
- Shared type definitions: includes all A2UI v0.9 standard types, as well as
Styles(general style properties) andTextStyles(text-specific style properties) — both extended by AGenUI
How to use:
When integrating an LLM Agent, supply this file's content or its hosted URL as the catalogId in the supportedCatalogIds field of A2UI ClientCapabilities. The Agent will use this Schema as a constraint to generate strictly conformant A2UI JSON messages, ensuring the renderer correctly parses and renders all dispatched UI components.