explaingit

iced-rs/iced

Analysis updated 2026-05-18

30,411RustAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A Rust library for building graphical desktop applications with a functional, predictable architecture inspired by Elm. Write once, run on Windows, macOS, Linux, and the web.

Mindmap

mindmap
  root((Iced))
    What it does
      Build desktop GUIs
      Cross-platform apps
      Web support
    Architecture
      State management
      Event handling
      View rendering
      Update logic
    Graphics
      wgpu backend
      Software fallback
      Hardware acceleration
    Use cases
      Config tools
      File managers
      Chat clients
    Tech stack
      Rust language
      Elm-inspired design
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a configuration tool with a native graphical interface for your Rust application.

USE CASE 2

Create a file manager or document editor that runs identically on Windows, macOS, and Linux.

USE CASE 3

Develop an IRC chat client or messaging app with a responsive, event-driven UI.

USE CASE 4

Write a web-based dashboard that compiles to WebAssembly from the same Rust codebase.

What is it built with?

RustwgpuVulkanMetalDirectX 12

How does it compare?

iced-rs/icedsunface/rust-coursevercel/turborepo
Stars30,41130,34030,320
LanguageRustRustRust
Setup difficultymoderateeasymoderate
Complexity3/52/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Rust toolchain installation and native graphics drivers (wgpu backends), compilation time can be slow on first build.

Use freely for any purpose including commercial, as long as you keep the copyright notice.

In plain English

Iced is a library for building graphical desktop applications in Rust. It solves the problem of creating native user interfaces, windows, buttons, text fields, layouts, in a language that historically lacked good options for this. Iced targets Windows, macOS, Linux, and the web from a single codebase. The design is inspired by Elm, a functional programming language with an architecture that keeps application logic predictable. In practice this means a developer defines their application around four concepts: the data the app holds (called State), the events the user can trigger (Messages), how to display the data as visual elements (View logic), and how to update the data when an event occurs (Update logic). The library handles the loop of drawing the interface, listening for input, calling the update function, and redrawing, the developer only writes the data and the responses to events. Under the hood, Iced can render using two different graphics backends: one that uses wgpu (which runs on Vulkan, Metal, and DX12, the low-level graphics APIs for Windows, Mac, and Linux respectively), and a software-based fallback for environments where hardware acceleration is unavailable. A Rust developer would use Iced when building a desktop application that needs a real graphical interface, a configuration tool, a file manager, an IRC client (the README shows one as an example), and wants to stay entirely within the Rust ecosystem. The README notes it is currently experimental software. It is written in Rust and available as a package on crates.io, the standard Rust package registry.

Copy-paste prompts

Prompt 1
Show me how to set up a basic Iced app with a button that increments a counter when clicked.
Prompt 2
How do I structure an Iced application using the State, Message, View, and Update pattern?
Prompt 3
Can you help me build a simple text input form in Iced that validates and displays user input?
Prompt 4
What's the difference between the wgpu and software rendering backends in Iced, and when should I use each?
Prompt 5
How do I deploy an Iced application to the web using WebAssembly?

Frequently asked questions

What is iced?

A Rust library for building graphical desktop applications with a functional, predictable architecture inspired by Elm. Write once, run on Windows, macOS, Linux, and the web.

What language is iced written in?

Mainly Rust. The stack also includes Rust, wgpu, Vulkan.

What license does iced use?

Use freely for any purpose including commercial, as long as you keep the copyright notice.

How hard is iced to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is iced for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub iced-rs on gitmyhub

Verify against the repo before relying on details.