What is Iced?
Iced is a modern GUI framework that brings functional, reactive programming patterns to Rust. It emphasizes:Type-Safe
Leverage Rust’s type system to catch errors at compile time
Cross-Platform
Build once, run everywhere: Windows, macOS, Linux, and the Web
Reactive
State-driven UI with automatic updates and efficient rendering
Batteries-Included
Rich set of built-in widgets and styling options out of the box
Key Features
- Simple, easy-to-use API - Get started quickly with minimal boilerplate
- Type-safe, reactive programming model - Inspired by The Elm Architecture
- Cross-platform support - Windows, macOS, Linux, and the Web
- Responsive layout - Flexible layout system with rows, columns, and containers
- Built-in widgets - Text inputs, scrollables, buttons, and more
- Custom widget support - Create your own widgets when needed
- Debug tooling - Performance metrics and time traveling debugger
- First-class async support - Use futures and streams naturally
- Modular ecosystem - Choose between GPU-accelerated (wgpu) or software rendering (tiny-skia)
Iced is currently experimental software. While it’s production-ready for many use cases, the API may evolve as the library matures.
The Elm Architecture
Iced follows The Elm Architecture, which splits user interfaces into four distinct concepts:
This architecture provides a clear separation of concerns and makes it easy to reason about your application’s behavior.
Philosophy
Iced leverages Rust to its full extent: ownership, borrowing, lifetimes, futures, streams, first-class functions, trait bounds, closures, and more. The library is designed for advanced Rust programmers who want to build type-safe, performant GUIs.Who Should Use Iced?
Iced is ideal for:- Rust developers building desktop or web applications
- Systems programmers who need native GUI applications
- Teams wanting type-safe UI code with compile-time guarantees
- Cross-platform projects targeting multiple operating systems
- Performance-critical applications requiring efficient rendering
Next Steps
Ready to get started? Follow our installation guide to set up Iced in your project.Installation
Learn how to add Iced to your Rust project
