The state of building user interfaces in Rust
The Current Landscape of User Interface Development in Rust
Because Rust is a low-level language, it is technically well-suited for creating user interfaces using traditional native APIs. However, in the modern software climate, the necessity of supporting multiple platforms simultaneously makes relying solely on native APIs a cumbersome and unattractive path for many developers.
While Rust's high-level abstractions and expressiveness make it a powerful candidate for crafting sophisticated and complex UIs, the community has yet to reach a consensus on the ideal architectural abstractions.
Currently, developers seeking a mature, intuitive, and purely Rust-centric solution may find the options lacking. Most existing tools are either bindings to external frameworks or experimental projects.
Prevailing Strategies for Rust GUIs
At present, the community generally follows two primary paths:
- Web-Tech Integration: Interfacing with
Electronor utilizing HTML (and its associated frameworks) to render the interface. - Graphics API Emulation: Using low-level graphics APIs and various wrappers to recreate classical UI widgets from scratch.
An example of the latter is Webrender—a cross-platform parallel rendering engine developed for Servo and available in Firefox Nightly. While highly capable and multi-platform, Webrender serves more as a foundational engine for a GUI framework rather than a complete framework itself.
Community Contributions & Recent News
The Rust GUI ecosystem is evolving rapidly. If you are developing or writing about this space, please contribute your findings! News entries can include links to blogs, Reddit discussions, and more.
- Ply by TheRedDeveloper — Introducing Ply (2026-03-01): Addressing the difficulty of building apps in Rust.
- 2025 Survey of Rust GUI Libraries by boringcactus — Survey Link (2025-04-13).
- Linebender Update by Bruce Mitchener & Daniel McNab — November 2024: color! (2024-12-18).
- Dioxus 0.6 by Jonathan Kelley — Release Notes (2024-12-09).
- Tauri 2.0 Stable by Tillmann Weidinger — Stable Release (2024-10-02).
The Ecosystem: Available Crates
Below is a categorized directory of libraries and bindings available for building UIs in Rust.
Reactive & Declarative Frameworks
- Azul: A free, functional, and reactive framework for rapid desktop app development. It utilizes the Mozilla
WebRenderengine.- Tags:
webrender,blinc
- Tags:
- Dioxus: An elegant, React-inspired library supporting desktop, web, mobile, SSR, and liveview.
- Dominator: A high-performance, zero-cost declarative DOM library utilizing FRP signals.
- Floem: A UI library prioritizing extreme performance alongside top-tier developer ergonomics.
- Tags:
reactive,winit
- Tags:
- Leptos: A full-stack, isomorphic web framework using fine-grained reactivity for declarative UIs.
- Ribir: A framework for building native, multi-platform applications from a single codebase.
- Tags:
non-intrusive,declarative,reactive,cross-platform,native
- Tags:
- Tessera: A performance-focused, extensible, cross-platform declarative functional UI library.
- Tags:
proc-macro,webgpu,winit
- Tags:
Immediate Mode GUIs
- egui: A simple, easy-to-use immediate mode GUI that functions on both native and web platforms.
- Tags:
immediate
- Tags:
- imgui: High-level Rust bindings for the popular
dear imguilibrary.- Tags:
bindings,immediate
- Tags:
- Pane UI: A user-friendly, data-defined immediate mode system.
- Tags:
winit,wgpu,immediate
- Tags:
- Ply: An app engine based on
macroquadfeaturing an immediate-mode API, accessibility, shaders, and flexbox-like layout.- Tags:
immediate,cross-platform,accessibility,wasm,ios,android,macos,linux,winapi
- Tags:
- Rosin: A library designed specifically for extreme ease of use.
- Tags:
immediate,css,macos
- Tags:
Native Bindings & Platform Wrappers
- Cacao: Rust bindings for
AppKit(macOS/Airyx/GNUStep - beta) andUIKit(iOS/tvOS - alpha).- Tags:
native,android,ios
- Tags:
- Core Foundation: Bindings for macOS Core Foundation.
- Tags:
bindings,macos
- Tags:
- CXX-Qt: Generates code to bridge Rust and C++ via
QObjects, allowing direct exposure to QML using thecxxcrate.- Tags:
bindings,qt,qml
- Tags:
- FLTK: A lightweight, cross-platform library that can be statically linked for fast, small binaries.
- Tags:
bindings,fltk
- Tags:
- GTK 3: UNMAINTAINED. Bindings for GTK+ 3 (users are encouraged to use GTK 4).
- Tags:
bindings,gtk
- Tags:
- GTK 4: Current Rust bindings for the GTK 4 library.
- Tags:
gtk,bindings
- Tags:
- qmetaobject: Enables the creation of Qt/QML apps by building
QMetaObjectsat compile time.- Tags:
proc-macro,bindings,qt,qml
- Tags:
- SDL3: Bindings to SDL3 for abstracting platform-specific details.
- Tags:
emscripten,wasm,android,ios
- Tags:
Specialized & Hybrid Toolkits
- Blinc: An application framework featuring a clean rendering and layout API.
- Tags:
native
- Tags:
- Crux: A toolkit for cross-platform app development.
- Tags:
bindings
- Tags:
- Cushy: A
wgpu-powered GUI library utilizing a reactive data model.- Tags:
winit
- Tags:
- flutter_rust_bridge: A seamless and feature-rich binding generator for Flutter/Dart and Rust.
- Tags:
bindings
- Tags:
- Freya: A non-web, cross-platform GUI library powered by
Skia.- Tags:
skia,winit
- Tags:
- fui: An MVVM-oriented UI library (properties, bindings, observable collections).
- Tags:
winit,proc-macro
- Tags:
- GemGui: A general GUI application library.
- GPUI: A GPU-accelerated hybrid (immediate and retained mode) framework for diverse applications.
- Tags:
winapi,macos,linux
- Tags:
- Iced: A type-safe, simple, renderer-agnostic GUI library.
- Tags:
winapi,macos,linux
- Tags:
- Kas: A scalable, accessible, Rust-native approach to stateful GUIs.
- Tags:
winapi,macos,linux,proc-macro,accessibility
- Tags:
- kittest: A tool for automated GUI testing via
AccessKit. - Makepad: A rendering framework for native, web, and VR applications.
- Tags:
webgpu
- Tags:
- masonry: Provides the traits and types for the Masonry toolkit.
- Pax: A 2D layout engine and UI language for cross-platform apps.
- Relm: An asynchronous GTK-based library inspired by the Elm architecture.
- Tags:
bindings,gtk
- Tags:
- Relm4: An idiomatic, Elm-inspired library based on
gtk4-rs.- Tags:
gtk,bindings,macos,css
- Tags:
- Rinf: Combines Rust for native business logic with Flutter for the UI.
- Tags:
bindings,flutter,cross-platform
- Tags:
- rui: An experimental declarative UI library.
- Tags:
winit,ios,macos,webgpu
- Tags:
- Slint: A toolkit for fluid UIs on desktop and embedded devices, featuring a custom markup language and OpenGL renderer.
- Tags:
proc-macro,winit,embedded,macos
- Tags:
- Tauri: A framework for creating small, fast binaries for desktop platforms using HTML.
- Tags:
html,macos,gtk
- Tags:
- tinyfiledialogs: (Entry truncated in original source).
- Embedded GUI: A low-memory (16K RAM, 64K Flash) embedded GUI with advanced visual effects and widgets.
- Tags:
bindings,embedded
- Tags: