| Crates.io | tessera-ui |
| lib.rs | tessera-ui |
| version | 2.1.0 |
| created_at | 2025-07-15 14:07:37.131488+00 |
| updated_at | 2025-09-22 08:38:52.169406+00 |
| description | Gui Rust In Rust. |
| homepage | https://tessera-ui.github.io |
| repository | https://github.com/tessera-ui/tessera |
| max_upload_size | |
| id | 1753412 |
| size | 515,901 |
Tessera is a declarative, immediate-mode UI framework for Rust. With a functional approach at its core, it aims to provide ultimate performance, flexibility, and extensibility.
#[tessera] macro, resulting in clean and intuitive code.Fixed, Wrap, Fill) layout engine, combined with components like row and column (inspired by Jetpack Compose), makes it easy to implement responsive layouts from simple to complex.
Example of `row`, viewable in `example/alignment_showcase.rs`
Pluggable Shader Engine: Shaders are first-class citizens in Tessera. The core of Tessera doesn't come with built-in drawing primitives like a "brush". Instead, it provides an easy-to-use WGPU rendering/compute pipeline plugin system, offering an experience closer to some game engines. This is intentional, for the following reasons:
Using custom shaders instead of a built-in brush allows us to easily achieve advanced glass effects like this. This example can be found in `example/fluid_glass_showcase.rs`.
tessera itself does not include any built-in components. While tessera_basic_components provides a set of common components, you are free to mix and match or create your own component libraries.Arc<Lock<State>> due to the highly parallel design), and interaction logic is handled within the input_handler closure, making data flow clear and controllable.An excerpt from example\examples\alignment_showcase.rs:
/// Create a small colored box
#[tessera]
fn small_box(text_content: &str, color: Color) {
surface(
SurfaceArgs {
style: color.into(),
shape: Shape::RoundedRectangle {
top_left: Dp(25.0),
top_right: Dp(25.0),
bottom_right: Dp(25.0),
bottom_left: Dp(25.0),
g2_k_value: 3.0,
},
padding: Dp(8.0),
width: DimensionValue::Fixed(Px(40)),
height: DimensionValue::Fixed(Px(40)),
..Default::default()
},
None,
move || {
text(
TextArgsBuilder::default()
.text(text_content.to_string())
.color(Color::WHITE)
.size(Dp(12.0))
.build()
.unwrap(),
)
},
);
}
Here is a showcase video of the example:
This is the official website and main documentation for the framework, containing the quick start guide, API documentation, and tutorials.
The API documentation for the tessera_ui crate. This is the core crate of the framework.
docs.rs tessera_ui_basic_components
The API documentation for the tessera_ui_basic_components crate. This is a separate crate that provides the official set of basic components.
Please refer to the Quick Start Guide to create your first application with Tessera.
Tessera adopts a multi-crate workspace structure:
tessera-ui: Framework core, including the component tree, rendering system, runtime, basic types (Dp, Px), and event handling.tessera-ui-basic-components: Provides a set of ready-to-use UI components (such as row, column, text, button, surface) and their rendering pipelines.tessera-ui-macros: Contains the #[tessera] procedural macro for simplified component definition. Documentationexample: Example project demonstrating framework usage.Read the Contributing Guide for details on how to contribute to the project.
Tessera is licensed under either of the MIT License or the Apache License 2.0.