StackDependenciesGPUI

GPUI

Last updated: Jul 1, 2026


Rationale

GPUI is the desktop UI technology we use to build native applications in our Rust-first stack. It is a GPU-accelerated UI framework developed and battle-tested by Zed Industries as the foundation of the Zed code editor.

The main reasons why we chose it over other alternatives are:

  • It is open source.
  • It is pure Rust end to end, the same language we use for the application's domain logic, so the whole app (both the UI and the core) is a single type-checked codebase with no language boundary, no JavaScript bridge, and no inter-process serialization between the view and the engine.
  • It renders on the GPU using an immediate-mode model, which keeps interactions fast and the UI code straightforward to reason about.
  • A single Rust toolchain produces a self-contained binary, which keeps building, linting, and distribution simple.
  • It lets us enforce a functional-core/imperative-shell architecture, where the pure domain crate is no_std (the compiler proves it cannot reach the filesystem, network, or clock) and the GPUI shell is the only place doing input/output.
  • It pairs with a component library (gpui-component by Longbridge) that provides ready-made widgets, reducing the amount of UI we build from scratch.

Alternatives

Qt (PyQt)

  • It is a mature, cross-platform, native desktop toolkit, used through the PyQt bindings.
  • We currently use it for signals, our security-assessment desktop tool written in Python, and it remains a solid choice there.
  • It is the right tool for a Python desktop application, but it does not fit the Rust-first stack as well as GPUI: it spans two languages across a C++/Python binding layer, ships a large C++ runtime rather than a single Rust binary, and its licensing (GPL/LGPL or commercial) is heavier than the permissive license GPUI carries.

Tauri

  • It is open source.
  • We built, shipped, and tested a real version of an internal tool on Tauri before moving to GPUI, so this is a tested alternative rather than a theoretical one.
  • It pairs a Rust backend with a web frontend (HTML/CSS/JavaScript) rendered in the operating system's WebView. That split means two languages and a serialization boundary between the UI and the Rust core, which adds glue code and a class of runtime errors the compiler cannot catch.
  • The web frontend cannot be type-checked together with the Rust domain, so a change to a shared shape has to be kept in sync by hand.
  • Rendering and behavior depend on the platform's WebView, which varies across operating systems and versions.
  • It is a strong option when a team already has a web frontend or web skills to reuse, and wants native packaging around it.

egui

  • It is open source and pure Rust, with a simple immediate-mode model.
  • Its visual style is geared toward tools and debug UIs, which makes pixel-accurate, polished native chrome harder to achieve than with GPUI.
  • Its component ecosystem is smaller.

Iced

  • It is open source and pure Rust, with an Elm-style architecture.
  • It is promising but less proven at the scale of a full application than GPUI, which powers the Zed editor in production, and it has a smaller component ecosystem.

Usage

We use GPUI for:

  • mrq, our merge-request review companion, a macOS menu-bar desktop client written entirely in Rust.

On this page