finds.dev← search

// the find

RibirX/Ribir

★ 1,719 · Rust · MIT · updated Apr 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →