Xilem — an experimental Rust native UI framework

Xilem and its sibling Masonry are the latest entries in Rust's quiet-but-steady march toward native GUI tooling. Think React and SwiftUI, but compiled and portable — or at least that's the pitch. It has been reported that Xilem is the higher-level, reactive framework for most app authors, while Masonry sits lower as a toolkit to build UI frameworks (including Xilem). Need a native GUI in Rust? This aims to be that — experimental, opinionated, and hungry.
Under the hood
The project leans on an ecosystem you might already know: winit for windows, Vello and wgpu for 2D rendering, Parley and Fontique for text, and AccessKit for accessibility plumbing. Examples live in the repo (to_do_mvc, calc_masonry, even an xilem-chess demo), and you can try them with cargo run --example to_do_mvc or add the crate with cargo add xilem. The architecture separates a retained widget tree (Masonry) from a lightweight reactive view tree (Xilem), with backends for both web and native.
Getting started & requirements
Linux and BSD users will need some native dev packages — pkg-config, clang, libwayland, libxkbcommon, libxcb and Vulkan dev files — with distro-specific install hints in the README (Fedora and Debian/Ubuntu commands are provided). There's also a Nix flake in docs/ for NixOS tinkering; it is explicitly offered as a starting point and may not be kept perfectly up to date. Minimum supported Rust is 1.92. Developers are nudged to use split-debuginfo in Cargo to keep build artifacts sane when hacking on the many examples and crates.
Why it matters
Rusters have long wanted a first-class native UI story — and Xilem is a clear, if cautious, step in that direction. It's experimental, so don’t bet your product roadmap on it yet. But if you love control, low-level graphics and the idea of a compiled reactive UI, this repo is worth poking. Ready to roll up your sleeves? Community discussion happens openly in the Linebender Zulip #xilem channel, and contributions are welcome under Apache 2.0 — proof that the project is as much an invitation as it is code.
Sources: github.com/linebender, Hacker News
Comments