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

56 ~MiB private memory
Idle means idleEvent-driven rendering
One rendererNative + WebAssembly

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 features

Good building blocks.

Browse all components

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 started
view.rs
use 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)
}

Your next interface starts here.

Get started with Argui