Copy it. Ship it.
Make it yours.
gpui-starter is a working multi-page desktop app you can clone and build on. Every feature actually runs. The patterns come from shipping real GPUI software, not from imagining what might work.
Why it exists
GPUI is Zed's GPU-accelerated UI framework for Rust. The API is solid and fast, but there is almost nothing written about how to structure a real app with it. gpui-starter started as a personal reference: a working desktop application with navigation, themes, i18n, forms, and system integration wired up end to end. Other people found it useful, so I cleaned it up and released it.
Design principles
Real Rust code
Not toy examples. Proper error handling, entity lifecycle management, render purity. The kind of code you write when the app has to work.
Everything ships
Themes, i18n, forms, launcher, tray icon. All working when you first run cargo run. No stub sections to fill in later.
Battle-tested structure
State tiers, render purity, backpressure handling. Patterns I use in production GPUI apps, not things that looked good in a blog post.
Open source
MIT licensed. Fork it, change it, ship it. No attribution required, no strings attached.
How it works
AppRoot owns the layout
A resizable sidebar next to a content area. Pages are enum variants; the active one gets rendered.
Sidebar drives navigation
Click a nav item to switch pages. The content area re-renders with the new view. No router, just an enum match.
Cmd+K launcher
A floating popup with fuzzy search. Selections write back through a global, so any part of the app can respond.
Themes reload from disk
ThemeRegistry watches the themes/ directory. Edit a JSON file, save it, and the running app picks up the change immediately.
gpui-query handles async data
Fetch from APIs, cache results, refetch on a timer. Same pattern as TanStack Query, built for GPUI entities.
Auto-updater checks for new versions
Ed25519-signed manifests from GitHub Releases. The app prompts the user, downloads in the background, and applies on next launch.