finds.dev← search

// the find

emilk/egui

★ 28,849 · Rust · Apache-2.0 · updated Apr 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →