Compose-shaped UI in Rust,drawn by Compose.
A Rust API in the shape of Compose, a narrow C ABI with a generated schema, and an ahead-of-time compiled Compose renderer that draws with Compose's own text layout, widgets and platform IME.
Native UI with no webview and no bundled JVM, aiming at one executable per desktop app.
- No webview
- No bundled JVM
- Platform IME, including Korean
- Records read in place
// Planned shape for 1.0.0. Does not compile against 0.0.x.
#[composable]
fn counter() {
let count = remember(|| mutable_state_of(0));
Column(Modifier::new().fill_max_width(), || {
Text(format!("{}", count.get()));
Button(|| count.set(count.get() + 1), || Text("+1"));
});
}
One language for the UI, one engine for the pixels
Rust owns your code and your state. Kotlin owns the pixels, the text stack and the input method. Between them sits a narrow C ABI: synchronous, on one thread, with records read where they were written, so a keystroke gets its answer inside the same call.
The authoring API shown here arrives with 1.0.0 on 2026-10-20. The boundary, the schema and the renderers under it ship today in 0.0.1.
The first two numbers are for the Kotlin/Native renderer linked into the executable, which becomes the default after 0.0.1. 0.0.1 ships a GraalVM native image on the desktop. See What runs where.
Where it stands today
| Part | State |
|---|---|
| Boundary, protocol, schema, renderer download | Works in 0.0.1 |
Authoring API: #[composable], remember, launch | Planned for 1.0.0 on 2026-10-20 |
| macOS, Android, Web | Works end to end |
| Linux, Windows, iOS | Builds and starts |
This is an early project and it says so plainly. The status and platforms sections say what each line means.
Start here
Getting started
Add the crate, let the build fetch the renderer, and build this repository.
Writing UI
The planned authoring API: composables, state, effects, events and animation.
Widget reference
Every widget, modifier and role in the schema, and where each widget keeps its state.
Design systems
Seven design systems behind one set of roles, unified or adaptive.
Architecture
The boundary, the records, the measure call, zoom and the renderer per platform.