An easy-to-use immediate mode GUI library for Rust that runs on the web and natively, and can be embedded in game engines.
iced-rs/iced
A cross-platform GUI library for Rust with a simple, type-safe, Elm-inspired programming model.
- Stars
- 31,808
- Forks
- 1,709
- Open issues
- 512
- Last commit
- 7 hours ago
What is it?
Iced is a GUI library for Rust that lets developers build desktop and web user interfaces using an Elm-style architecture. An interface is split into state, messages, a view function that renders state as widgets, and an update function that reacts to messages by changing state. The library handles layout and event processing, so application code only describes what the interface shows and how it responds.
Iced targets Windows, macOS, Linux, and the Web. It includes built-in widgets such as text inputs and scrollables, supports custom widgets, and offers first-class async actions built on futures. Its modular design separates a renderer-agnostic runtime from the renderers: iced_wgpu uses wgpu for Vulkan, Metal and DX12, and iced_tiny_skia provides a software fallback. A windowing shell connects the pieces to the operating system.
The project describes itself as experimental software, so its API may still change between releases.
Key features
- 01Elm-style state, message, view and update model with type-safe messages
- 02Cross-platform support for Windows, macOS, Linux and the Web
- 03Built-in widgets including text inputs and scrollables, plus custom widget support
- 04Renderers based on wgpu (Vulkan, Metal, DX12) and tiny-skia software fallback
- 05First-class async actions using futures
Use cases
- Building a cross-platform desktop application in pure Rust
- Creating a small tool or utility with a native-looking interface
- Embedding a renderer-agnostic GUI runtime into an existing system
- Exploring Elm-style architecture in Rust GUI code
Quick start
- 1
Add the iced crate to your Rust project
- 2
Read the book, documentation, and examples to learn more
Things to know
- The README states Iced is currently experimental software.
- The README describes the project as early and may have breaking changes between versions.
Topics
FAQ
- What is iced?
- A cross-platform GUI library for Rust with a simple, type-safe, Elm-inspired programming model. Iced is a GUI library for Rust that lets developers build desktop and web user interfaces using an Elm-style architecture. An interface is split into state, messages, a view function that renders state as widgets, and an update function that reacts to messages by changing state. The library handles layout and event processing, so application code only describes what the interface shows and how it responds.
- Is iced free to use? What license does it have?
- iced is open source under the MIT license. Check the license terms before using it in commercial products.
- Is iced still maintained?
- Actively maintained. The last commit to iced was on Oct 21, 2026.
- What can I use iced for?
- Building a cross-platform desktop application in pure Rust Creating a small tool or utility with a native-looking interface Embedding a renderer-agnostic GUI runtime into an existing system Exploring Elm-style architecture in Rust GUI code
- How do I install iced?
- Add the iced crate to your Rust project Read the book, documentation, and examples to learn more
- Where can I get iced?
- The source code and installation instructions are on GitHub: https://github.com/iced-rs/iced
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Slint is a declarative GUI toolkit for building native user interfaces in Rust, C++, JavaScript, or Python apps.
A Rust desktop GUI kit with 75+ styled components for building cross-platform apps on the GPUI framework.
A Rust engine for native cross-platform UI, letting you write apps in Rust or TSX and render with each platform's own widgets.
An open-source, clean-room photo editor rebuilt in pure Rust, with layers, masks, adjustment layers, type, vectors and real PSD file support.
A lightweight native Spotify desktop client in Rust that plays music locally and supports Spotify Connect on Linux, macOS, and Windows.