Rust-native GUI frameworks (by crates.io downloads):
1. egui (30.3M total / 9.2M last 90 days)
https://crates.io/crates/egui
2. Iced (3.2M / 770k)
https://crates.io/crates/iced
3. Slint (2.4M / 955k)
https://crates.io/crates/slint
4. GPUI (447k / 255k)
https://crates.io/crates/gpui
5. Dioxus Native (181k / 26k)
https://crates.io/crates/dioxus-native
6. Freya (49k / 12k)
https://crates.io/crates/freya
7. Floem (45k / 15k)
https://crates.io/crates/floem
8. Vizia (7k / 700)
https://crates.io/crates/vizia
List is hand-picked list, ordered by crates.io downloads. I had an LLM fetch the download counts and links. Webview based UI like Tauri and Dioxus Desktop are excluded. As are bindings to native toolkits and GTK.In 2026 IMO it's much better to use an LLM to keep 3 separate native front ends in sync than it is to try and use any sort of cross platform UI.
Speaking of which, my dream is an "HTML light" standard with a subset of functionality specifically designed for local UI use, ideally with lightweight non-browser engines supporting this standard shipping with all major OS platforms as shared system components.
We had browsers that ran on systems with 8 MB RAM, after all, and while it's not a fair comparison, there's no technical reason why a system with three orders of magnitude more RAM should struggle to run more than a handful of applications merely because they use HTML and JavaScript for rendering.
Though 8 MB RAM is a non-starter when a single RGBA texture @4k is ~30Mb and modern system often require 2 or 3 for buffering. Somewhere around the 60MB to 100MB mark seems to be the base for modern setups, at least on macOS.
New rule: Programmers with limited UI experience (that includes myself) should abstain from weighing in on what UI designers and programmers need.
So:
- The initial version was released over a year ago (3 month is the most recent patch release of the stable version).
- It is part of the Dioxus project (https://github.com/dioxuslabs/dioxus) which has been going since 2021 (but the other renderers are web/webview based).
- The native renderer (https://github.com/dioxuslabs/blitz) has been under development since December 2024 (building a whole new web engine is just a big project).
You're ultimately kind of right that it's not as established as 1-4 in the list. But I think it justifies it's place with the other frameworks lower down the list as one of the lesser-known frameworks that compete technically with those further up the list.
I've given up when the code reached 300 lines and was still buggy/not working.
egui is not mature. I'd prefer declarative approach, data binding, and styling. Therefore will skip egui.
And the recommended component library for it (GPUI Kit) seems to have been 100% Clauded, down to the website and README.
> We don't take pull requests. Have your agent open
> an issue describing the bug or idea, and our agents
> usually turn it around fast.
Pretty interesting approach, compared to receiving a zillion potentially sloppy PRs. Open source in the age of LLMs.. ("agent source"?)Or human is completely removed from the development whatsoever..
Then they would be better off contributing to a project that welcomes them.
You could fork and reference it in the issue if you still wanted to contribute.
It's up to the maintainer. Sometimes it's just easier to listen to what's needed and do it the way you know and are efficient with than to review someone else's code.
> What if some beginner finds this project interesting and wants to invest own time into it?
There's nothing stopping them. They can even publish it in a fork.
This is a natural progression (only on these types of projects). We accepted contributions because it actually helped and they were difficult and time consuming. When that is no longer the case, contributions are a burden, the actual problem/idea is the real value, hence the request to open the issue.
Of course, one could conclude that another agents screwed up before, still was a good experience.
Also a bit wild to assume that no person will just create an issue manually. This is not something I'd normally use an agent for.
Which gate is easier to maintain?
1. Check issues for malicious intent
2. Check PR for malicious intent.
I think in PR requests it is easier to introduce purposeful bugs or obfuscated code than it is to hide them in issues.
So I think gating on issues is easier and more secure.
The approach is at least better than accepting slop PRs that could have backdoors injected into them.
This is cool. I hope SwiftUI / UIKit borrow this idea for native mac apps.
- Accessibility? E.g. Screen reader support?
- Alternative inputs? Full keyboard support?
- Full internationalization, including right-to-left and diacritics?
What happens when no GPU is available?
Just curious as this matters for it to be a serious library and not a proof of concept.
It has some tradeoffs to consider but seems quite good overall.
An approach I've found useful, albeit for a DSL that ships a binary for execution, is to give a way for the LLM agent to get a high-level topic list so it can drill down all the way to specific language/API implementation details.
Perhaps with this project the author could make a website that does the same?
The double-edged sword of choice!
Sorry, what? I feel like I've studied the Rust UI ecosystem pretty well, and the examples look nice, but if I've learned anything it's that "native" and "GPU-rendered" are oxymoronic.
Likely the fonts will be fuzzy on various platforms, accessibility will be under-baked and it will land in the bucket with every other UI framework depending on winit. I like the personalities at anomaly, but I'm quite confused about what's even driving a decision to build something like this versus contributing to egui, GPUI, Iced, etc.
But I agree with the reset
[0]: https://rune.build/
Various other toolkits have tried this approach, but unfortunately, I'm not aware of any others that succeed. Common deficiencies include keyboard navigation and text rendering.
*(Except on Qt-based desktops like KDE Plasma, of course.)
I like your definition quite a bit, but I need another word for, "code that doesn't need a runtime to execute."
I ended up using "experience layer" to describe the SDK components.
If you define it as "using the widgets provided by the operating system", then "native" is by definition incompatible with "cross-platform." And what does that mean on Linux, where the operating system doesn't provide widgets? Are gtk and Qt not native?
When discussing GUI toolkits, "native" should be understood to mean "native to the host's graphical environment".
"Native to the OS" might or might not be equivalent, depending on the OS and what one considers "OS" to mean. (Does it mean a kernel? A desktop distro? Something else?) Because of this ambiguity, it's not a very practical way to approach the discussion. Different people attach different meanings to that phrase.
Some frameworks are native to Qt. Others are native to Gtk. Practically none are native to Linux. ;)
I don't think "cross-platform" is incompatible with "native". It has been achieved more than once using toolkit wrappers, usually selected at build time.
e.g. https://github.com/anomalyco/rune/tree/dev/crates/rune-kit/t...
Have a read of the clean documentation that they never wrote or read. [0]
All the clean code, architecture principles thrown out of the window in favour of hundreds of code smells, anti-patterns, zero tests, and tons of unmaintainable slop.
[0] https://github.com/anomalyco/rune/blob/dev/crates/rune/READM...
But I agree, I think they would be better served by making a normal website and linking to the demo prominently (For comparison, see iced's website https://iced.rs, which is great IMO)
This isn't much better. It's super laggy with high CPU usage.