Tessera
A fast, GPU-first Rust UI framework that is declarative and reactive.
cargo install cargo-tessera- 100+Material 3 Expressive components
- 6Platforms, one codebase
- 0Redraws when nothing changed
- 100%Rust, no webview
use tessera_components::{
alignment::{CrossAxisAlignment, MainAxisAlignment},
button::button,
column::column,
modifier::ModifierExt as _,
surface::surface,
text::text,
theme::material_theme,
};
use tessera_ui::{Dp, Modifier, remember, tessera};
#[tessera]
pub fn app() {
let count = remember(|| 0i32);
material_theme().child(move || {
surface()
.modifier(Modifier::new().fill_max_size())
.child(move || {
column()
.modifier(Modifier::new().fill_max_size())
.main_axis_alignment(MainAxisAlignment::Center)
.cross_axis_alignment(CrossAxisAlignment::Center)
.children(move || {
text(count.get().to_string()).size(Dp(40.0));
button()
.filled()
.on_click(move || count.with_mut(|c| *c += 1))
.child(|| text("Increment"));
});
});
});
}How it works
The UI is a Rust function of state. Tessera runs these functions as needed to build each frame, then draws it on the GPU using Vulkan, Metal, DirectX 12 or WebGPU. No HTML, no CSS, no WebView.
Start a project
$ cargo install cargo-tessera
$ cargo tessera new my-app
$ cd my-app && cargo tessera dev
Cross-platform
Runs on Windows, macOS, Linux, Android, iOS and the web.
Bring your own shader
Every effect is a pluggable shader, the built-in component library included.
Modern scaffolding
cargo-tessera is all you need, for everything.
Pure Rust
Plain Rust syntax, 0% RSX.