# iced-rs/iced

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/iced-rs-iced).**

29,548 stars · 1,497 forks · Rust · mit

## Links

- GitHub: https://github.com/iced-rs/iced
- Homepage: https://iced.rs
- awesome-repositories: https://awesome-repositories.com/repository/iced-rs-iced.md

## Topics

`elm` `graphics` `gui` `interface` `renderer-agnostic` `rust` `toolkit` `user-interface` `widget` `widgets`

## Description

Iced is a cross-platform graphical user interface framework designed for building interactive applications with a focus on type safety and predictable state management. It utilizes a declarative architecture that separates application state, update logic, and view rendering, allowing developers to construct complex interfaces by nesting reusable functional components.

The framework distinguishes itself through an Elm-inspired message-passing pattern, where all user interactions are processed as discrete messages to ensure reliable state transitions. It employs an immediate-mode rendering paradigm and a constraint-based layout engine, which together ensure that the interface remains synchronized with the application state and responsive across varying screen sizes and operating systems.

Beyond its core architecture, the project provides a comprehensive set of primitives for interface engineering. This includes tools for managing dynamic text, container alignment, and styling, all of which map to native graphical backends to maintain a consistent look and feel. The system relies on strict data modeling to prevent invalid states, ensuring that business logic remains maintainable and robust throughout the development lifecycle.

## Tags

### User Interface & Experience

- [Type-Safe GUI Frameworks](https://awesome-repositories.com/f/user-interface-experience/type-safe-gui-frameworks.md) — Uses strict data modeling and message-based state transitions to ensure predictable application behavior.
- [Cross-Platform Desktop Toolkits](https://awesome-repositories.com/f/user-interface-experience/cross-platform-desktop-toolkits.md) — Renders native-feeling interfaces across multiple operating systems using a unified and consistent layout model.
- [Cross-Platform GUI Frameworks](https://awesome-repositories.com/f/user-interface-experience/cross-platform-gui-frameworks.md) — Provides a toolkit for building graphical applications that run consistently across multiple operating systems.
- [Declarative UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/declarative-ui-frameworks.md) — Constructs user interfaces by nesting functional components that describe visual structure.
- [Application Architectures](https://awesome-repositories.com/f/user-interface-experience/application-architectures.md) — Provides a structured pattern for managing state and view logic in interactive interfaces. ([source](https://book.iced.rs/architecture.html))
- [Message Passing Systems](https://awesome-repositories.com/f/user-interface-experience/message-passing-systems.md) — Processes updates through a central loop that consumes discrete messages to produce new state.
- [Cross-Platform Development](https://awesome-repositories.com/f/user-interface-experience/cross-platform-development.md) — Builds consistent graphical applications across multiple operating systems using shared logic.
- [Cross-Platform UI Abstractions](https://awesome-repositories.com/f/user-interface-experience/cross-platform-ui-abstractions.md) — Maps layout and styling primitives to native graphical backends for consistent rendering.
- [Declarative Component Architectures](https://awesome-repositories.com/f/user-interface-experience/declarative-component-architectures.md) — Enables building complex user interfaces by nesting reusable visual elements into a structured hierarchy.
- [Layout Engines](https://awesome-repositories.com/f/user-interface-experience/layout-engines.md) — Calculates element boundaries and alignment rules to maintain responsive designs.
- [State Update Logic](https://awesome-repositories.com/f/user-interface-experience/state-update-logic.md) — Transforms current state into new versions by processing messages through dedicated functions. ([source](https://book.iced.rs/first-steps.html))
- [Graphical Application Runtimes](https://awesome-repositories.com/f/user-interface-experience/graphical-application-runtimes.md) — Manages state initialization, event processing, and rendering for graphical applications. ([source](https://book.iced.rs/the-runtime.html))
- [Immediate-Mode Rendering](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-rendering.md) — Redraws the interface entirely during each frame to maintain synchronization with state.
- [Component Layout Engines](https://awesome-repositories.com/f/user-interface-experience/component-layout-engines.md) — Provides a structured system for building complex user interfaces by nesting visual elements within flexible containers.
- [UI Composition Utilities](https://awesome-repositories.com/f/user-interface-experience/ui-composition-utilities.md) — Arranges visual elements into a structured hierarchy using independent components. ([source](https://book.iced.rs/first-steps.html))
- [Interaction Handling](https://awesome-repositories.com/f/user-interface-experience/interaction-handling.md) — Represents user interactions as distinct variants to ensure explicit handling. ([source](https://book.iced.rs/first-steps.html))
- [Responsive Layout Systems](https://awesome-repositories.com/f/user-interface-experience/responsive-layout-systems.md) — Creates flexible user interfaces that automatically adjust structure and alignment across different screen sizes.

### Software Engineering & Architecture

- [Functional UI Architectures](https://awesome-repositories.com/f/software-engineering-architecture/functional-ui-architectures.md) — Separates state management, update logic, and view rendering into distinct components using a declarative pattern.
- [Predictable State Containers](https://awesome-repositories.com/f/software-engineering-architecture/predictable-state-containers.md) — Manages application data through explicit message patterns to ensure reliable transitions and prevent invalid states.
- [Type-Safe State Management](https://awesome-repositories.com/f/software-engineering-architecture/type-safe-state-management.md) — Ensures predictable application behavior through strict data modeling and message-based transitions.
- [State Modeling](https://awesome-repositories.com/f/software-engineering-architecture/state-modeling.md) — Structures data models using strict types to ensure predictable state transitions. ([source](https://book.iced.rs/first-steps.html))
- [Type-Safe Interface Architectures](https://awesome-repositories.com/f/software-engineering-architecture/type-safe-interface-architectures.md) — Uses strict data modeling to ensure that all user interactions and state changes are handled safely.
- [Message-Based Event Handlers](https://awesome-repositories.com/f/software-engineering-architecture/message-based-event-handlers.md) — Manages user interactions through explicit message patterns to ensure reliable and predictable action handling.
