Build interfaces. Keep it native.
A Rust UI library for applications that feel right. From the first button to the whole window.
Linux · macOS · Windows · Web

Measured on Linux with the release gallery. Memory depends on features and workload. Read the measurements ↗
A small footprint. Room for big ideas.
A retained UI tree, shaped text and a GPU renderer. The parts you need to build an application, with the freedom to make it yours.
See all featuresWork only when it changes.
Retained subtrees, explicit dirty tracking and virtualized lists keep repeated work out of the frame. Idle views do not request continuous redraws.
Accessibility is part of the tree.
Semantic roles, accessible names, keyboard navigation, focus management and reduced-motion support are built into the widgets.
Give pixels a little personality.
GPU effects, gradients, blur and custom WGSL shaders share the renderer. Apply effects to a surface, a component or a whole layer.
Rust, all the way down.
Compose your interface with typed building blocks. Enable the widgets you need, and keep application state in your hands.
Get starteduse argui::{
ui::Element,
widgets::{Button, WidgetTheme},
};
fn view(theme: &WidgetTheme) -> Element {
Element::row([
Button::new("save", "Save changes", theme.button())
.build(),
Button::new("cancel", "Cancel", theme.ghost_button())
.build(),
])
.gap(10.0)
}