Skip to main content

Build Beautiful GUI Applications in Rust

A cross-platform GUI library focused on simplicity and type-safety. Create responsive, elegant interfaces with Elm-inspired architecture.

Why Iced?

Iced brings the simplicity of The Elm Architecture to Rust, making GUI development intuitive and enjoyable.

Type-Safe

Leverage Rust’s type system for compile-time guarantees and fearless refactoring

Cross-Platform

Build once, run everywhere: Windows, macOS, Linux, and the Web

GPU-Accelerated

Hardware-accelerated rendering with wgpu and software fallback with tiny-skia

Reactive

Elm-inspired architecture with predictable state management

Rich Widgets

40+ built-in widgets from buttons to canvas with custom widget support

Async Ready

First-class support for async operations with tasks and subscriptions

Quick Start

Get up and running with Iced in minutes.

Installation

Add Iced to your Rust project with Cargo

Quickstart Guide

Build your first application in under 5 minutes

Core Concepts

Learn the Elm Architecture pattern used by Iced

Examples

Explore 50+ real-world examples

Learn by Example

use iced::widget::{button, column, text};

fn main() -> iced::Result {
    iced::run(update, view)
}

#[derive(Default)]
struct Counter {
    value: i32,
}

#[derive(Debug, Clone)]
enum Message {
    Increment,
    Decrement,
}

fn update(counter: &mut Counter, message: Message) {
    match message {
        Message::Increment => counter.value += 1,
        Message::Decrement => counter.value -= 1,
    }
}

fn view(counter: &Counter) -> iced::Element<Message> {
    column![
        button("+").on_press(Message::Increment),
        text(counter.value).size(50),
        button("-").on_press(Message::Decrement),
    ]
    .into()
}

Explore the Ecosystem

Widget Library

Comprehensive collection of built-in widgets

Theming & Styling

Customize the look and feel of your application

API Reference

Complete API documentation

Advanced Topics

Deep dive into custom renderers and performance

Build docs developers (and LLMs) love