Iced (Rust GUI)
Cross-platform GUI library for Rust inspired by Elm architecture. Uses a Model-Update-View pattern where the entire UI is defined as a pure function of application state. Renders with wgpu (GPU-accelerated) and targets desktop (Linux, macOS, Windows) and web (via WASM). Iced is more opinionated than egui with a declarative reactive architecture vs immediate mode.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
Client-side Rust GUI library. Memory safety from Rust. No external network calls in UI layer.
⚡ Reliability
Best When
You want Elm-inspired architecture in Rust for desktop apps with predictable state management and GPU-accelerated rendering.
Avoid When
You prefer immediate-mode simplicity (use egui) or need embedded/IoT targets (use Slint) or web-first applications (use Leptos/Dioxus).
Use Cases
- • Build cross-platform desktop applications in Rust using Elm's Model-Update-View architecture for predictable state management
- • Create GPU-accelerated desktop UIs in Rust with wgpu rendering for smooth animations and visual effects
- • Develop agent-facing desktop control panels in Rust with reactive architecture where state changes drive UI updates
- • Build WASM-compatible Rust UIs that work identically on desktop and web with the same codebase
- • Create data visualization and dashboard apps in Rust where the Elm-inspired unidirectional data flow simplifies complex state
Not For
- • Embedded/IoT targets with limited resources — egui is lighter and Slint targets embedded better
- • Teams wanting immediate-mode simplicity — Iced's Elm architecture requires upfront investment in message/state design
- • Production web apps requiring HTML/CSS SEO — Iced renders to canvas/WebGL, not DOM HTML
Interface
Authentication
GUI library. No authentication required.
Pricing
MIT license.
Agent Metadata
Known Gotchas
- ⚠ Iced's version history has significant breaking changes between 0.x releases — pin versions carefully and review migration guides when upgrading
- ⚠ The Elm Message type must be an enum covering all possible UI events — deeply nested components require forwarding messages up through the hierarchy (verbose boilerplate)
- ⚠ Async operations use Command::perform — integrating Tokio-based async code requires careful runtime setup to avoid blocking the GUI event loop
- ⚠ Custom widgets require implementing the Widget trait which has changed significantly across versions — prefer built-in widgets when possible
- ⚠ wgpu backend requires GPU drivers — may fail on headless CI servers without virtual GPU; software rendering fallback exists but is slow
- ⚠ Iced WASM bundle size can be 5-15MB before compression — optimize with wasm-opt and ensure your deployment can serve large WASM files
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Iced (Rust GUI).
Scores are editorial opinions as of 2026-03-06.