About this project

Floem is a native Rust UI library focused on fine-grained reactivity and ergonomic declarative code. The README describes it as a high-performance declarative UI library inspired by Xilem, Leptos and rui. The view tree is constructed once, which the project says avoids accidentally creating a bottleneck in view generation functions. It also provides tools such as a virtual list for writing efficient UI code. The library is cross-platform for Windows, macOS and Linux. Rendering can use wgpu through vger or vello, or AnyRender's GPU-backed Skia renderer. If a GPU is unavailable, a CPU renderer based on tiny-skia is used. Layout uses Taffy and supports both Flexbox and Grid on any view node. Floem includes reactive primitives called signals, inspired by leptos_reactive, to keep UI state updates minimal and efficient. Widgets are customizable in appearance and behavior through a styling API that supports classes and theming. Third-party themes can be installed. It supports transitions and keyframe animations, with easing via spring functions. Other features mentioned in the README include an element inspector for debugging layout, global light and dark themes, a built-in design system for declaring custom themes, and localization through the Fluent crate with fallbacks, runtime language switching and per-part language overrides. A quickstart example shows a counter with RwSignal, Button and Label. Documentation and code examples are linked, including a widget gallery. The project notes it is still maturing and may make occasional breaking changes before v1. Contributions are welcomed, and a ready-to-use Lapdev cloud development environment is provided.