The state of building user interfaces in Rust

mahirsaid1 pts0 comments

Are we GUI yet?

The roots aren't deep but the seeds are planted.

As a low level language, Rust is perfectly suitable for making user<br>interfaces the old fashioned way, with native APIs. However, competing<br>in today's world typically means supporting many platforms, and<br>that makes using native APIs an unattractive option for many.

Rust's expressiveness and high level abstractions make it ideal for<br>building intricate and complex user interfaces. Unfortunately, there<br>is little consensus on what the best abstractions are.

There are a number of bindings available today to existing frameworks,<br>but those looking for a mature, easy to use, and completely Rust-based<br>solution will most likely find themselves out of luck.

Current approaches to building GUIs in Rust include interfacing with<br>Electron and building GUIs with HTML (or a framework on top of it), while<br>others have taken to using graphics APIs and various wrappers to emulate<br>classical widgets. The cross platform parallel rendering engine Webrender,<br>built for Servo and usable in Firefox Nightly, takes this latter approach<br>and is multi-platform, but is more of a base for a GUI framework than one<br>in itself.

Stay in the loop.

Below are recent community links submitted to the site. If you're working on or writing about GUIs in Rust, please contribute! Each<br>news entry can be a link back to your blog, Reddit thread, etc. See the

README for details.

Building apps in Rust shouldn't be this hard, so I made Ply by TheRedDeveloper

https://plyx.iz.rs/blog/introducing-ply/ (2026-03-01)

A 2025 Survey of Rust GUI Libraries by boringcactus

https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-gui-libraries.html (2025-04-13)

Linebender in November 2024: color! by Bruce Mitchener, Daniel McNab

https://linebender.org/blog/tmil-11/ (2024-12-18)

Dioxus 0.6 by Jonathan Kelley

https://dioxuslabs.com/blog/release-060/ (2024-12-09)

Tauri 2.0 Stable Release by Tillmann Weidinger

https://v2.tauri.app/blog/tauri-20/ (2024-10-02)

See more posts

Ecosystem

Select a tag (or tags) below to only show relevant crates. All crates will be shown when no tags are selected.

Bindings

CSS

Embedded

FLTK

GTK

HTML

Immediate mode API

MacOS

QML

Qt

Reactive API

WebGPU

WebRender

WinApi

iOS

piet

proc-macro

winit

Azul GUI is a free, functional, reactive GUI framework<br>for rapid development of desktop applications written in Rust and C,<br>using the Mozilla WebRender rendering engine.

webrender

Blinc application framework with clean layout and rendering API.

native

android

ios

Rust bindings for AppKit (macOS/Airyx/GNUStep, beta) and UIKit (iOS/tvOS, alpha).

macos

ios

Bindings to Core Foundation for macOS.

bindings

macos

Cross-platform app development in Rust.

bindings

A wgpu-powered graphical user interface (GUI) library with a reactive data model.

winit

CXX-Qt is a library that automatically generates code to transfer data between Rust and C++ through common interfaces such as QObjects that can be exposed directly into QML. It uses the cxx crate for safe interaction between Rust and C++.

bindings

qt

qml

Elegant React-like library for building user interfaces for desktop, web, mobile, SSR, liveview, and more.

Zero-cost ultra-high-performance declarative DOM library using FRP signals.

An easy-to-use immediate mode GUI that runs on both web and native.

immediate

UI library aiming to be extremely performant while providing world-class developer ergonomics. From the team that made the Lapce code editor.

reactive

winit

The FLTK crate is a crossplatform lightweight gui library which can be linked to statically to produce small, self-contained and fast binaries.

bindings

fltk

Flutter/Dart Rust binding generator, feature-rich, but seamless and simple.

bindings

Cross-platform and non-web GUI Library powered by Skia.

skia

winit

MVVM-oriented (properties, observable collections, bindings), ui! macro, multiplatform, renderer-agnostic, with styles.

winit

proc-macro

GUI application library.

A hybrid immediate and retained mode, GPU accelerated, UI framework, designed to support a wide variety of applications.

winapi

macos

linux

UNMAINTAINED Rust bindings for the GTK+ 3 library (use gtk4 instead).

bindings

gtk

Rust bindings of the GTK 4 library.

gtk

bindings

A renderer-agnostic GUI library for Rust focused on simplicity and type-safety. Inspired by Elm.

winapi

macos

linux

High-level Rust bindings to dear imgui.

bindings

immediate

A modern approach to stateful GUI: Rust-native, accessible, scalable.

winapi

macos

linux

proc-macro

accessibility

Automated GUI testing using AccessKit.

Leptos is a full-stack, isomorphic Rust web framework leveraging fine-grained reactivity to build declarative user interfaces.

LVGL bindings for Rust. A powerful and easy-to-use embedded GUI with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash).

bindings

embedded

Makepad...

rust bindings library macos building user

Related Articles