// the find
emilk/egui
egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native
egui is an immediate-mode GUI library for Rust that targets both native desktop and WebAssembly. It's the go-to choice for Rust developers who need to quickly add a UI to a tool, game, or data visualization app without caring about native platform look-and-feel. Used in production by Rerun and a growing ecosystem of game engine integrations.
- Zero unsafe code in the core library, which is a meaningful guarantee given how GUI libraries typically look internally.
- The web+native story actually works: the same eframe app compiles to WASM and runs in a browser or as a native binary with no code changes.
- Snapshot-based visual regression tests for every demo widget are checked into the repo, so rendering regressions get caught before they ship.
- The integration surface is minimal and well-defined (provide input, get back triangle meshes), making it genuinely straightforward to embed in a custom engine or renderer.
- Frequent breaking changes between releases are explicitly acknowledged by the maintainer - if you need API stability for a library that depends on egui, you're going to have a bad time.
- Layout model is fundamentally constrained by immediate mode: centering content dynamically, doing text that wraps to fit an unknown container, or building anything resembling a CSS flexbox takes real effort and sometimes produces first-frame jitter.
- Styling is limited compared to retained-mode toolkits. You can set colors and spacing globally, but per-widget CSS-class-style theming doesn't exist yet, which makes producing a polished branded UI painful.
- Large scroll areas with thousands of items will tank performance unless you manually implement virtualization - there's no built-in list virtualization, which is a real gap for data-heavy apps.