Picking a GUI library for Rust used to be easy: there weren't many options, and most of them were quietly abandoned.
Now it's hard in a different way. Dioxus, egui, Iced, Xilem, Tauri, Leptos — each has real momentum, real users, and a different mental model. The problem isn't that nothing works. It's that everything works, and you have to pick.
I've been digging into the 2025 survey from boringcactus (who spent two weeks testing the same "hello world" across every major framework), plus newer developments, to figure out what's actually worth your time.
The Big Three (And Then Some)
egui is the quickest way from zero to a window. You add eframe, write 15 lines of code, and you have a running app. It renders to a canvas, uses immediate mode, and feels like a debug UI that grew up. The trade-off: it looks like a debug UI. Custom styling is possible but not the point.
Dioxus took the React world by storm and carried that energy to desktop. It uses WebView under the hood — which sounds like a hack, but it's genuinely practical. You get accessibility for free (Windows Narrator works), IME input works, and if you've done any React, the mental model translates. The downside is the WebView dependency. You're not writing native UI; you're writing something that wraps native UI.
Iced takes the Elixir/Telecom approach — functional, declarative, inspired by Elm. It has a more native feel than egui but requires more setup. The API is clean, but documentation has gaps that Dioxus doesn't have.
Xilem is the new one. It's from the Druid team (which was the "official" Rust GUI bet for years before being sunsetted), and it's building on a new architecture. It's not ready for production yet, but it's worth watching — the team behind it has been doing this longer than anyone.
What Actually Matters
A few things I noticed from the testing:
-
WebView is more viable than it sounds. Dioxus on desktop uses Tauri-like WebView2 on Windows, WebKit on macOS. Yes, it's "Electron but less." But it works, and the accessibility story is better than the native options.
-
Windows support varies wildly. The boringcactus survey tested everything on Windows, and several frameworks that work fine on macOS/Linux simply don't work there. If Windows matters to you (and it should — it's the most popular OS for developers), check before you commit.
-
Immediate mode vs. retained mode isn't the debate you think it is. People argue about this like it matters for performance. For most apps, it doesn't. What matters is: does the framework's mental model match how you think about UI?
My Take
If you're building something today and just want to ship:
- Dioxus for web developers who want desktop
- egui for internal tools, prototypes, and anything where looks don't matter
If you're building something that needs to last:
- Wait on Xilem, or pick a framework with a company behind it (Dioxus has this now)
If you're building a CLI tool and just want a quick TUI:
- That's a different post, but the answer is Ratatui
The Rust GUI ecosystem isn't mature yet. But it's no longer early. You can ship real apps with these tools — you just have to pick the right one first.