← Back to news

The state of building user interfaces in Rust

areweguiyet.com|18 points|7 comments|by mahirsaid|Jun 10, 2026

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:

  1. Web-Tech Integration: Interfacing with Electron or utilizing HTML (and its associated frameworks) to render the interface.
  2. 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 TheRedDeveloperIntroducing Ply (2026-03-01): Addressing the difficulty of building apps in Rust.
  • 2025 Survey of Rust GUI Libraries by boringcactusSurvey Link (2025-04-13).
  • Linebender Update by Bruce Mitchener & Daniel McNabNovember 2024: color! (2024-12-18).
  • Dioxus 0.6 by Jonathan KelleyRelease Notes (2024-12-09).
  • Tauri 2.0 Stable by Tillmann WeidingerStable 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 WebRender engine.
    • Tags: webrender, blinc
  • 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
  • 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
  • Tessera: A performance-focused, extensible, cross-platform declarative functional UI library.
    • Tags: proc-macro, webgpu, winit

Immediate Mode GUIs

  • egui: A simple, easy-to-use immediate mode GUI that functions on both native and web platforms.
    • Tags: immediate
  • imgui: High-level Rust bindings for the popular dear imgui library.
    • Tags: bindings, immediate
  • Pane UI: A user-friendly, data-defined immediate mode system.
    • Tags: winit, wgpu, immediate
  • Ply: An app engine based on macroquad featuring an immediate-mode API, accessibility, shaders, and flexbox-like layout.
    • Tags: immediate, cross-platform, accessibility, wasm, ios, android, macos, linux, winapi
  • Rosin: A library designed specifically for extreme ease of use.
    • Tags: immediate, css, macos

Native Bindings & Platform Wrappers

  • Cacao: Rust bindings for AppKit (macOS/Airyx/GNUStep - beta) and UIKit (iOS/tvOS - alpha).
    • Tags: native, android, ios
  • Core Foundation: Bindings for macOS Core Foundation.
    • Tags: bindings, macos
  • CXX-Qt: Generates code to bridge Rust and C++ via QObjects, allowing direct exposure to QML using the cxx crate.
    • Tags: bindings, qt, qml
  • FLTK: A lightweight, cross-platform library that can be statically linked for fast, small binaries.
    • Tags: bindings, fltk
  • GTK 3: UNMAINTAINED. Bindings for GTK+ 3 (users are encouraged to use GTK 4).
    • Tags: bindings, gtk
  • GTK 4: Current Rust bindings for the GTK 4 library.
    • Tags: gtk, bindings
  • qmetaobject: Enables the creation of Qt/QML apps by building QMetaObjects at compile time.
    • Tags: proc-macro, bindings, qt, qml
  • SDL3: Bindings to SDL3 for abstracting platform-specific details.
    • Tags: emscripten, wasm, android, ios

Specialized & Hybrid Toolkits

  • Blinc: An application framework featuring a clean rendering and layout API.
    • Tags: native
  • Crux: A toolkit for cross-platform app development.
    • Tags: bindings
  • Cushy: A wgpu-powered GUI library utilizing a reactive data model.
    • Tags: winit
  • flutter_rust_bridge: A seamless and feature-rich binding generator for Flutter/Dart and Rust.
    • Tags: bindings
  • Freya: A non-web, cross-platform GUI library powered by Skia.
    • Tags: skia, winit
  • fui: An MVVM-oriented UI library (properties, bindings, observable collections).
    • Tags: winit, proc-macro
  • GemGui: A general GUI application library.
  • GPUI: A GPU-accelerated hybrid (immediate and retained mode) framework for diverse applications.
    • Tags: winapi, macos, linux
  • Iced: A type-safe, simple, renderer-agnostic GUI library.
    • Tags: winapi, macos, linux
  • Kas: A scalable, accessible, Rust-native approach to stateful GUIs.
    • Tags: winapi, macos, linux, proc-macro, accessibility
  • kittest: A tool for automated GUI testing via AccessKit.
  • Makepad: A rendering framework for native, web, and VR applications.
    • Tags: webgpu
  • 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
  • Relm4: An idiomatic, Elm-inspired library based on gtk4-rs.
    • Tags: gtk, bindings, macos, css
  • Rinf: Combines Rust for native business logic with Flutter for the UI.
    • Tags: bindings, flutter, cross-platform
  • rui: An experimental declarative UI library.
    • Tags: winit, ios, macos, webgpu
  • 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
  • Tauri: A framework for creating small, fast binaries for desktop platforms using HTML.
    • Tags: html, macos, gtk
  • 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