finds.dev← search

// the find

emilk/eframe_template

★ 1,157 · Rust · Apache-2.0 · updated Aug 2026

The easy way to make a Rust app with a GUI

A template repository for bootstrapping a Rust GUI app with egui/eframe, maintained by egui's own author. It scaffolds both native and WebAssembly builds (via Trunk) with a GitHub Actions workflow to auto-deploy the web build to GitHub Pages. Good starting point for anyone who wants to ship a cross-platform desktop+web GUI without piecing together the egui/eframe/Trunk/wasm-bindgen setup themselves.

fill_template.sh/.ps1 scripts automate the rename across Cargo.toml, main.rs, index.html, and sw.js — the usual template papercut of missing one of these four spots is handled for you. Ships a working CI pipeline (rust.yml, pages.yml, typos.yml) and a Trunk.toml already configured for wasm32-unknown-unknown, so the web target builds on first try. Being maintained in lockstep by egui's author means it tracks breaking changes immediately rather than drifting stale like most community templates.

It's a template, not a library — there's no versioning or update path once you've renamed the crate and diverged from it; every future egui breaking change has to be manually re-applied to your fork. The included service worker (sw.js) caches the app for offline use, which silently serves stale builds during local dev unless you remember to append #dev to the URL — a sharp edge not called out until you've already been confused by it. Native builds still require manually installing OS packages (libxcb, libxkbcommon, openssl-devel, etc.) per-distro rather than via a documented dev container, despite a flake.nix existing for Nix users only. The example app.rs is trivial (a counter and a slider), so it doesn't demonstrate real-world concerns like multi-window apps, async integration, or persisting state beyond eframe's built-in storage.

View on GitHub →

// 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 →