// the find
RibirX/Ribir
Non-intrusive GUI framework for Rust/WASM
Ribir is a Rust GUI framework built around a 'non-intrusive state' model — you define your data structures and their APIs normally, then describe the UI separately without the data knowing anything about presentation. It targets desktop (Linux/Windows/macOS) and Web/WASM from a single codebase, using wgpu as its GPU backend.
The non-intrusive state concept is the real idea here: your data structs don't implement any framework traits, and the reactive binding happens at the UI layer via `Stateful<T>` wrappers and the `pipe!` macro. That's a cleaner separation than most Rust GUI frameworks manage. The architecture diagram shows a well-layered stack — painter → GPU backend → wgpu — meaning you could swap render backends without touching widget code. There are genuinely useful working examples (todos, pomodoro, wordle game) with real state management, not just counters. CI covers desktop and WASM, which at least proves the cross-platform story isn't vaporware.
1,719 stars with 38 forks after what looks like several years of development is a weak adoption signal — the community is thin and the widget library is explicitly described as 'rough stage, API not stable yet'. Mobile (iOS/Android) is unimplemented with no timeline. Text support is flagged as 'usable but rough' which is a real problem for any app with actual text input. The macro DSL adds learning overhead that isn't well-justified versus something like iced or egui for most use cases, and the escape hatch (builder API without DSL) is noticeably more verbose — the README counter example without macros takes twice as many lines for the same widget.