Skip to content

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
Step-by-step guide: how to use IcedInstall, first run, examples, tips and FAQs

How to get it

  1. 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. 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. 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

ProjectStarsTypeLevelUpdatedBest for
iced (this)31.9kLibraryintermediate4 days agoRust developers building a desktop GUI application
DearPyGui15.7kLibrarybeginner17 days agoPython developers who want a desktop GUI for a script or internal tool
nicegui16.3kLibrarybeginner5 days agoPython developers who want a quick web interface for a script or tool
imgui76.9kLibraryintermediate6 days agoGame developers who want an in-engine debug or tools panel
ratatui23.1kLibraryintermediate5 days agoRust developers building interactive command-line tools or dashboards
webview14.3kLibraryintermediate15 days agoC 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.