finds.dev← search

// the find

iced-rs/iced

★ 30,311 · Rust · MIT · updated Apr 2026

A cross-platform GUI library for Rust, inspired by Elm

Iced is an Elm-inspired GUI framework for Rust using The Elm Architecture (TEA) — state, messages, view, update. It targets desktop (Windows, macOS, Linux) and WASM, with two renderers: wgpu-backed GPU rendering and tiny-skia software fallback. Aimed at Rust developers who want a typed, reactive UI model without reaching for C++ toolkits.

- The Elm Architecture maps cleanly to Rust's ownership model — no shared mutable state between widgets, messages are plain enums, update functions are pure. The type system catches a surprising amount of UI bugs at compile time.

- Dual renderer strategy is practical: wgpu for production performance (Vulkan/Metal/DX12), tiny-skia as a software fallback for CI/headless/unusual targets. Custom shader integration via wgpu is also exposed directly.

- The example collection is genuinely broad — custom shaders, multi-window, async downloads, game of life, markdown rendering, pane grids. You can learn the entire widget lifecycle from examples alone without touching the book.

- Modular crate split (iced_core, iced_wgpu, iced_tiny_skia, iced_winit) means you can integrate just the runtime into an existing wgpu app, which the integration example actually demonstrates.

- Still self-described as experimental, and the API has broken significantly between releases. The 0.12→0.13 migration was painful for downstream crates, and there's no stability guarantee. Building anything production-critical on it today is a bet.

- Accessibility support is essentially absent. No screen reader integration, no ARIA-equivalent semantics. This is a known gap and a blocker for any app that needs to ship to users with disabilities.

- The widget set is thinner than mature toolkits. No native tree view, no data table with virtualization, no date picker, no rich file dialog. The ecosystem fills some gaps (iced_aw), but quality varies and it often lags behind iced's own API changes.

- Text rendering and complex layout edge cases (RTL, complex scripts, inline mixed content) are still rough. The text editor widget is functional but nowhere near the fidelity of platform-native text controls, and IME support has had recurring issues.

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 →