wieslawsoltes / FerroUI
git clone https://github.com/wieslawsoltes/FerroUI.git
v0.3.0 · 3d ago
Cross-platform UI framework for Rust: styled property system, data binding, XAML, control themes and a composition renderer. A port of Avalonia.
+6
stars, 24h · #5,093
+~51
stars, 7 days · #3,924
+136
stars, 30 days · #5,466
136
★ total · +51% this week
11
forks · 18 open issues
Star history (as recorded here)
LanguageRust
LicenseMIT
Created2026-10-05 (18d ago)
Last pushtoday
Watchers0
OwnerUser
GitHub topics
Links
- GitHub: github.com/wieslawsoltes/FerroUI
- Homepage: https://wieslawsoltes.github.io/FerroUI/
- Releases · Issues · Hacker News mentions
README excerpt
# FerroUI FerroUI is a cross-platform UI framework for Rust: a retained-mode control library with a styled property system, data binding, XAML markup, control themes and a composition-based renderer. It is a port of the Avalonia UI framework to Rust that keeps the original architecture, contracts and behaviour, so that applications, themes and markup written against that model carry over with their structure intact. > **Status: 0.3.0, with the preview 0.4.0-preview.1.** `0.3.0`, which adds ports of Rx, DynamicData and ReactiveUI for MVVM applications (docs/mvvm.md), is the current release on crates.io. `0.4.0-preview.1` previews the next one: it adds a declarative Rust API for user interfaces without XAML, with builders, the `rsx!` macro and signals (docs/declarative-ui.md), and makes the Vello backend faster (CHANGELOG.md). Every upstream file and member in scope is ported or waived with a recorded reason. The framework runs on macOS, Windows, Linux (X11, Wayland and the framebuffer), iOS, Android and in the browser. It was verified in continuous integration, in virtual machines, in the iOS simulator and on the Android emulator, not on a range of real devices. Within 0.3 the public API is kept; 0.4.0 may change it. See Project status. The ControlCatalog sample with the WinUI 3 theme (`ferroui-themes-winui`), its default theme, on Windows 11 with the Mica backdrop. Text is shaped with HarfBuzz and drawn by Skia with the platform's text rendering settings: the contrast and gamma of ClearType on Windows, greyscale antialiasing on a high-density display, and colour emoji (`docs/porting/text-rendering.md`). | Text on Windows | The same catalog on macOS | |---|---| | | | ## Highlights - **Complete object model.** Styled and direct properties with value priorities, inheritance, coercion and change notification; logical and visual trees; routed events; layout; input, focus and gestures. - **Styling and theming.** Selectors, styles, control themes, resources, theme variants and transitions. The Fluent, Simple and WinUI 3 themes are included. - **Data binding.** Compiled and reflection-style binding paths, converters, multi-bindings, data validation and templates. - **XAML.** A port of the XamlX compiler front end with the framework's transformers and markup extensions. Documents are compiled to Rust source by the build script of a crate, or loaded at run time. - **Composition renderer.** A compositor with a render loop on its own thread, dirty-region tracking, server-side visuals and composition animations, drawing through a backend-neutral drawing context. - **Swappable backends.** Rendering and windowing sit behind contracts. Skia renders through Graphite on Metal, Ganesh on OpenGL, ANGLE, WebGL and Vulkan, or in software; an experimental Vello backend sits behind the same contracts; HarfBuzz shapes text. - **Safe Rust.** The controls, markup, XAML and theme crates contain no `unsafe` code. It is confined to a small part of the object model core and to