The Jetpack Compose A2UI renderer defines a layered architecture that lets you choose the right layer to build on. In addition to semantic layering, a clear naming scheme communicates API intent and controls visibility to avoid polluting your classpath with unnecessary internal types.
APIs are organized into two primary categories based on use case and visibility:
- APIs for app and component developers: Public APIs intended for direct
use have clean, concise names with the
A2uiprefix (or design-system and testing prefixes such asMaterialA2uiandA2uiTest). Examples includeA2uiCatalog,A2uiComponent, andA2uiException. - APIs for UI framework integrators: APIs used by libraries bridging the
core data layer and UI frameworks have descriptive names prefixed with
A2uiCore. These APIs aren't intended for direct application reference and remain hidden from standard application code. Examples includeA2uiCoreCatalog,A2uiCoreDataModel, andA2uiCoreSurfaceModel.
Because the core data layer contains types from both categories, it's
distributed across two separate artifacts: androidx.a2ui:a2ui-model (for app
developers) and androidx.a2ui:a2ui-engine (for framework integrators). This
structure allows framework libraries to depend on a2ui-engine as an
implementation dependency, preventing A2uiCore types from polluting public app
classpaths.
Category 1: App developer APIs
The following tables list public APIs intended for application and component developers.
androidx.a2ui:a2ui-model
androidx.a2ui.compose:compose-runtime
| Type | Description |
|---|---|
a2uiRuntimeMessageProcessor |
Extension constructor for the message processor |
A2uiMessageParser |
Extension constructor for the message parser |
A2uiComponentState |
Interface representing reactive component state |
A2uiComponentModel |
Data model for a successfully resolved component |
A2uiComponentProperties |
Stable property container optimizing recompositions |
A2uiProperty |
Strongly typed component property definition |
A2uiComponentScope |
Receiver scope for evaluating bindings and child components |
A2uiComponentReference |
Pointer for resolving nested child components |
androidx.a2ui.compose:compose-ui
| Type | Description |
|---|---|
A2uiCatalog |
Interface and extension constructor for defining catalogs |
A2uiComponent |
Interface for defining Compose component implementations |
A2uiComponent (composable) |
Composable function that emits UI for a component |
androidx.compose.material3:material3-a2ui
| Type | Description |
|---|---|
A2uiSurface |
Composable entry point that renders a surface |
materialA2uiBasicCatalogV1 |
Factory function for creating an instance of the Basic Catalog that uses Material 3 components |
MaterialA2uiBasicCatalogV1Defaults |
Default Material 3 implementations of the Basic Catalog |
androidx.a2ui.compose:compose-ui-testing
| Type | Description |
|---|---|
A2uiTestController |
Test controller for orchestrating test execution |
A2uiComponentStub |
Stubbed or overridden component implementation |
A2uiTestSurface |
Composable function that renders a test surface |
Category 2: Framework integrator APIs
The following table lists APIs intended for framework integrators.
