For a cross-platform GUI framework for Rust desktop apps, the first results are emilk/egui (egui is a Rust immediate-mode GUI library that runs on multiple desktop platforms and web with GPU-accelerated rendering, perfectly fitting the search for a cross-platform Rust GUI framework, though it is immediate-mode only rather than offering a retained-mode option), lapce/floem and iced-rs/iced (Iced is a cross-platform GUI framework written in Rust with an Elm-inspired architecture, providing retained-mode widgets, immediate-mode rendering, and event-driven state management — a comprehensive fit for building graphical desktop applications across platforms). linebender/xilem and linebender/druid round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
High-performance libraries and toolkits for building native desktop applications using the Rust programming language.
This library is an immediate mode graphical user interface toolkit that reconstructs the entire interface every frame. By executing procedural code within a high-frequency loop that matches the display refresh rate, it allows developers to define interactive elements and state updates directly. The framework utilizes a multi-pass rendering approach to resolve layout dependencies, ensuring that widget sizes and positions are calculated accurately before final placement to prevent visual jitter. The project functions as a cross-platform graphics toolkit, providing a portable rendering layer tha
egui is a Rust immediate-mode GUI library that runs on multiple desktop platforms (and web) with GPU-accelerated rendering, perfectly fitting the search for a cross-platform Rust GUI framework, though it is immediate-mode only rather than offering a retained-mode option.
Floem is a native desktop UI framework and cross-platform toolkit for building high-performance user interfaces. It functions as a reactive UI library that uses a signal-based state management system to automatically synchronize the interface with data changes via lightweight observable primitives. The framework utilizes a GPU-accelerated rendering engine to ensure visual consistency and high performance across different desktop operating systems. It features a layout engine based on flexible box and grid models to create responsive screens that adapt to various window sizes. The toolkit cov
Floem is a native Rust UI framework with GPU-accelerated rendering and reactive state management, making it exactly the cross-platform desktop toolkit this search is after; it covers GPU acceleration, retained mode, and event-driven architecture, though it does not offer an immediate mode option.
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 para
Iced is a cross-platform GUI framework written in Rust with an Elm-inspired architecture, providing retained-mode widgets, immediate-mode rendering, and event-driven state management — a comprehensive fit for building graphical desktop applications across platforms.
Xilem is a native user interface framework for the Rust programming language. It provides a reactive view tree that links application state to the interface to automate updates when data changes. The framework incorporates a GPU-accelerated 2D graphics engine and a dedicated text layout engine to handle complex typography and high-performance visual rendering. It is built as an accessible UI framework with integrated support for system accessibility services and screen readers. The system utilizes a retained-mode architecture with a graphics pipeline that translates drawing commands into har
Xilem is a Rust-native retained-mode UI framework with GPU-accelerated rendering, cross-platform support, and reactive data binding, covering nearly all the features you listed, though it does not include an immediate mode GUI path.
Druid is a native user interface toolkit and 2D graphics engine for the Rust programming language. It functions as a retained-mode, data-driven framework for building graphical user interfaces that run across Linux, macOS, and web browsers via WebAssembly. The toolkit distinguishes itself through a data-first approach to UI design, utilizing lenses to isolate subsets of global application state and synchronize them with specific widgets. This allows the visual layout to update automatically when the underlying data model changes. Its capability surface includes a constraint-based box layout
Druid is a retained-mode, data-driven UI toolkit and 2D graphics engine for Rust that runs on Linux, macOS, and web via WebAssembly, fitting the cross-platform desktop framework need; it lacks immediate-mode GUI and explicit GPU acceleration, but its Rust-native, event-driven architecture aligns with the core requirements.
Iced is a cross-platform GUI library for Rust designed for building native desktop applications. It functions as a reactive toolkit that manages application state by mapping user interactions to messages, which then trigger automatic view refreshes. The framework utilizes a rendering system that supports both hardware-accelerated GPU graphics and software backends to ensure compatibility across multiple operating systems. It implements a reactive model inspired by the Elm architecture to coordinate state updates and view reconciliation. The toolkit includes a flexible layout engine and a mod
Iced is a cross-platform, Rust-native GUI library with GPU-accelerated rendering and a retained-mode reactive architecture (Elm-inspired), covering most of your required features—including event-driven messaging and multi-backend support—but it does not offer an immediate-mode GUI option, focusing solely on retained-mode.
Azul is a native desktop application builder and UI toolkit for creating high-performance graphical user interfaces. It utilizes a functional and reactive programming model for managing layout and state, enabling the development of native software through a CSS-based toolkit. The framework is distinguished by its use of the WebRender engine to provide GPU-accelerated rendering. This allows the system to display complex user interface elements with high efficiency and speed by leveraging hardware acceleration. The project enables the design of desktop interfaces using a document object model
Azul is a Rust-native desktop GUI framework that uses WebRender for GPU-accelerated rendering and offers a functional reactive, CSS-based styling model for building cross-platform applications, fitting the search closely though it lacks an explicit immediate mode option.
Slint is a declarative user interface framework designed for building native graphical applications across desktop, mobile, and embedded platforms. It utilizes a specialized markup language to define reactive interface components, which are then compiled into optimized machine code to ensure high performance and minimal resource consumption. By separating visual structure from application logic, the framework enables developers to create consistent interfaces that run efficiently on hardware ranging from resource-constrained microcontrollers to high-end desktop systems. The framework distingu
Slint is a Rust-native declarative UI framework that delivers cross-platform desktop applications with GPU-accelerated rendering and event-driven architecture, but it focuses on retained mode widgets rather than offering an immediate mode option, making it a solid fit though not covering every feature you listed.
Dioxus is a cross-platform development framework designed for building native desktop, mobile, and web applications from a single codebase. It utilizes a declarative component model and macro-powered syntax to define reusable interface elements, which are then rendered as native widgets or web elements. At its core, the framework employs a signal-based reactivity system that tracks state dependencies to trigger granular updates, ensuring efficient interface performance without re-rendering the entire application tree. The framework distinguishes itself through a unified full-stack runtime tha
Dioxus is a cross-platform Rust framework for building desktop applications using a declarative, component-based model, but it does not explicitly advertise GPU-accelerated rendering or an immediate mode GUI option, which may narrow its feature set compared to what the query lists.
Nuklear is a portable, header-only immediate mode graphical user interface library written in C. It is designed to function as a lightweight framework for creating interfaces that render directly to hardware, making it suitable for integration into custom graphics engines, embedded systems, and resource-constrained environments. The library operates by generating abstract draw commands that are converted into vertex buffers, allowing for hardware-accelerated rendering through standard graphics APIs. By utilizing an immediate mode approach, the interface state is defined and updated within the
Nuklear is a C library, not a Rust-native one, so it does not match the request for a Rust library for building desktop GUI applications; you would need Rust bindings to use it, and it is aimed more at embedded systems than desktop apps.
Nuklear is a minimal, header-only graphical user interface toolkit written in C. It utilizes an immediate-mode rendering model, where the interface is reconstructed and drawn directly within the application loop each frame. This approach eliminates the need for persistent widget state or complex synchronization between the interface and underlying application data. The library is designed for portability and integration into resource-constrained environments. It requires the host application to manage memory manually, allowing it to function in systems that lack standard library support. By d
This is a portable immediate-mode GUI toolkit in C, not a Rust-native library, so it does not meet the requirement for a Rust implementation.
libui is a native C GUI library and cross-platform framework used to build desktop applications. It provides a unified C abstraction layer and a native widget toolkit that maps directly to the host operating system's original controls, windows, and menu bars. The project functions as a portable UI wrapper, employing platform-specific backends and a native-API wrapper to maintain visual and behavioral fidelity across different operating systems. It utilizes a C-language binding layer to ensure portability across various compilers and targets. The library covers native interface construction a
libui is a native C cross-platform GUI library, not a Rust-native implementation, so it does not match the visitor's requirement for a Rust library; it could serve as a building block via bindings but lacks GPU-accelerated rendering and immediate mode support.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| emilk/egui | 29.4K | Rust | Apache-2.0 | |
| lapce/floem | 4K | Rust | mit | |
| iced-rs/iced |
| 30.8K |
| Rust |
| MIT |
| linebender/xilem | 5.4K | Rust | Apache-2.0 |
| linebender/druid | 9.7K | Rust | Apache-2.0 |
| hecrj/iced | 30.8K | Rust | MIT |
| fschutt/azul | 6.1K | Rust | MIT |
| slint-ui/slint | 23K | Rust | NOASSERTION |
| dioxuslabs/dioxus | 36.4K | Rust | Apache-2.0 |
| vurtun/nuklear | 14.2K | C | — |