
Iced
A Rust library for building desktop and web graphical interfaces, modeled on the Elm architecture.
- Stars
- 31.9k
- Forks
- 1.7k
- Licence
- MIT
- Language
- Rust
- Last update
- 4 days ago
- Type
- Library
What it is
Iced is a toolkit for Rust programmers who want to build windowed graphical user interfaces. You describe your app as state, messages, a view function that draws widgets, and an update function that reacts to messages, following the Elm architecture. The README says it targets Windows, macOS, Linux, and the Web, and it is described as experimental software.
- Build a counter or other small interactive app using buttons and text widgets
- Create a desktop app with text inputs and scrollable areas
- Write a custom widget for a specialized part of your interface
- Use the built-in wgpu or tiny-skia renderers depending on your graphics needs
Great for
- Rust developers building a desktop GUI application
- Developers who like the Elm-style state, message, and update pattern
- Projects that want a renderer-agnostic runtime they can plug into existing systems
- Developers who want to write custom widgets
Not ideal for
- People who are not programming in Rust, since the library is a Rust crate
- Teams that need a production-stable UI toolkit, because the README says Iced is currently experimental software
- Users looking for an end-user application to install rather than a library to build with
How to get it
- 1
Install with a package manager
You'll need: Rust toolchain (version not stated in the README excerpt)
Clone the repository
git clone https://github.com/iced-rs/iced - 2
Run it
- Install the Rust toolchain.
- Create a new Rust project and add iced as a dependency (see the book or docs.rs for the exact setup).
- Write a state struct, a message enum, a view function, and an update function.
- Run the app with iced::run(Counter::update, Counter::view).
- 3
Get the most out of it
- Read the Iced book at book.iced.rs for guided learning
- Browse the examples directory in the repository for working code
- Use the debug tooling with performance metrics and time traveling mentioned in the README
- Use async actions with futures to handle background work
Downloads
Strengths
- Follows a clear, type-safe Elm-style model for state, messages, and updates
- Supports multiple platforms, including Windows, macOS, Linux, and the Web, according to the README
- Modular design with a renderer-agnostic runtime and a software fallback renderer
Trade-offs
- The README states that Iced is currently experimental software
- The latest release is listed without binaries, so you build from source or through Rust tooling
- Documentation and learning resources are mainly external (book, docs.rs, examples), and the README excerpt does not show setup steps
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| iced (this) | 31.9k | Library | intermediate | 4 days ago | Rust developers building a desktop GUI application |
| DearPyGui | 15.7k | Library | beginner | 17 days ago | Python developers who want a desktop GUI for a script or internal tool |
| nicegui | 16.3k | Library | beginner | 5 days ago | Python developers who want a quick web interface for a script or tool |
| imgui | 76.9k | Library | intermediate | 6 days ago | Game developers who want an in-engine debug or tools panel |
| ratatui | 23.1k | Library | intermediate | 5 days ago | Rust developers building interactive command-line tools or dashboards |
| webview | 14.3k | Library | intermediate | 15 days ago | C or C++ developers who want an HTML-based GUI without bundling a full browser framework |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.