Repolode
iced-rs

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

    Add the iced crate to your Rust project

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