mrkeyoor.com_
Wed 09 Sept 13:30 UTC
Dev Toolsevaluationupdated 09 Sept 2026

gpui-kit review

The repository formerly called GPUI Component now resolves to GPUI Kit, a Rust framework for native desktop interfaces. It combines styled controls, lower-level UI behavior, data-heavy widgets, and optional JavaScript extensions so teams do not have to assemble those parts from separate libraries.

+455stars / 7d
Verdict

Our GPUI Kit build ran for 431 seconds before xkbcommon-x11 stopped the linker, and its tests hit the same missing library after 14 seconds. Use it for a Rust desktop product whose hard parts are tables, text editing, docking, and shared input behavior, provided your team can own native setup and accessibility verification. Pick a smaller Rust GUI library when those finished systems do not offset the cost of 863 packages and GPUI coupling.

We ran it

Lab card: what happened when we ran gpui-kitScreenshot of gpui-kit (gpui-kit.com)
Install✓ · 112s863 packages
Build✗ · 431s
Tests✗ · 14sran, no count parsed
Repo1062 files~182,601 lines of source · 12.3 MB · 4 CI workflows

Answers from our run

Does gpui-kit build from source?

Dependencies installed in 112 seconds (863 packages), and the build failed. We cloned commit 7885c41 into a clean Debian container with 3 CPUs and no project-specific setup.

Do gpui-kit's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use gpui-kit?

Linux developers who expect Cargo to supply the whole desktop stack: our build and tests stopped because the linker could not find xkbcommon-x11.

What are the alternatives to gpui-kit?

Iced, egui, Slint. Our GPUI Kit build ran for 431 seconds before xkbcommon-x11 stopped the linker, and its tests hit the same missing library after 14 seconds.

Setup2/5863 packages fetched, then native Linux linking failed
Docs4/5Good architecture and examples; system setup is outside the quick start
Community5/514,188 stars with same-day release and issue activity
Maturity4/5Commercial use and broad controls, with accessibility gaps open

Discussed on

  1. hnRust cross-platform GPUI components515 points
  2. hnGpui-component: Rust GUI components for building cross-platform apps4 points
  3. hnUI components for building fantastic desktop application by using GPUI3 points

Who it’s for

Rust teams building desktop software around tables, editors, docks, menus, and keyboard workflows.
Product teams that want one themed component system and accept GPUI as the rendering base.
Design-system authors willing to use the unstyled gpui-base layer and supply the visual treatment.
Developers who will pin the moving GPUI dependency and test each supported operating system.

Who it’s NOT for

Linux developers who expect Cargo to supply the whole desktop stack: our build and tests stopped because the linker could not find xkbcommon-x11.
Teams that require browser deployment: GPUI Kit targets native Windows, macOS, and Linux applications, with desktop-specific input conventions.
Products whose sidebar navigation must already work with assistive technology: open issue 2968 says sidebar items do not enter the accessibility tree.
File managers needing modifier-aware table selection from the stock API: issue 2795 says click modifiers are missing from row events, forcing one adopter to maintain a fork.
Teams that cannot absorb upstream API movement: the project tracks GPUI through version-aligned snapshots and pauses its automated publishing when upstream breaks compatibility.

Setup reality

Our sandbox installed 863 Rust packages in 112 seconds. The build failed with exit code 101 after 431 seconds, and tests failed with exit code 101 after 14 seconds. Both log tails show rust-lld unable to find -lxkbcommon-x11; the build stopped on the story binary and the tests stopped while compiling its brush example.

Basic use needs Rust, Cargo, native desktop libraries, and an explicit gpui_kit::init call. No credential or hosted service is required. The contributor guide tells Linux developers to run ./script/bootstrap, while Windows has a PowerShell setup script.

This is platform-bound GUI code, so a successful dependency fetch does not prove that the host can link or open a window. The 12.3 MB checkout had 1,062 files, about 182,601 source lines, 4 CI workflows, no Dockerfile, and no separate tests directory.

GPUI Kit puts more than 60 desktop controls over GPUI

The requested longbridge/gpui-component URL now redirects to GPUI Kit, which packages the old styled component layer into a wider framework. Its README lists more than 60 controls plus virtual tables, lists, a code editor, dock layouts, Markdown, HTML, and charts. Rust applications can depend on gpui-kit as the main crate instead of matching several related packages themselves. The result aims at information-dense native software rather than a thin wrapper around web content.

Three layers divide the work. gpui-component supplies styled controls, gpui-base owns reusable behavior and state, and gpui-shell lets a shipped Rust host run JavaScript extensions with explicit capabilities. That split gives a design team room to replace presentation while retaining focus, selection, positioning, and scrolling code. It also makes adoption architectural: GPUI Kit becomes the common UI vocabulary across the application, not one isolated widget dependency.

Tables and text editing are the reason to accept the larger stack

The table supports virtual scrolling, fixed and resizable columns, sorting, and cell selection. The editor covers Tree-sitter syntax work, diagnostics, completion, hover, search, folding, and multiple cursors. Release v0.6.1, published on 2026-09-09, added automatic bracket pairing, smarter indentation, and a headless UI test API. Those are costly systems to recreate, and they share the same theme and event conventions here.

The stock interfaces still leave holes for demanding products. Open issue 2795 documents row events that omit mouse-button modifiers, blocking Command-click and Shift-click selection without custom table code. Its reporter maintains a fork for a file manager and has to port upstream fixes by hand. Issue 3017 says editor search allocates every matching range in a large document even though only visible matches can be drawn. Both reports identify specific extension costs behind the broad feature list.

What happened when we ran it

Our run at commit 7885c41 installed 863 packages in 112 seconds. The checkout contained 1,062 files, about 182,601 lines of source, and occupied 12.3 MB before installed dependencies. Cargo completed the install stage, but the build failed with exit code 101 after 431 seconds. The final linker message said rust-lld could not find -lxkbcommon-x11, so it could not compile the gpui-component-story binary.

Tests failed with exit code 101 after 14 seconds. The supplied tail shows the same missing xkbcommon-x11 library while Cargo was compiling the story package's brush example. It does not contain a failed assertion or a Rust compiler diagnostic about project logic. Our fresh Debian container therefore reached native linking and stopped there; the evidence does not tell us which tests would pass after the library is present.

The contributor guide treats native packages as a required step and points Linux users to ./script/bootstrap. Windows gets a separate PowerShell installer. That requirement is easy to miss if someone copies only the README's short dependency snippet. The repository has 4 CI workflow files, no Dockerfile, and no tests directory, while the current release notes describe a feature-gated headless testing API and broader integration coverage.

Native accessibility still needs product-level checking

Open issue 2968 reports that SidebarMenu and SidebarMenuItem have no AccessKit role. The reporter reproduced the problem with GPUI Component 0.6.0 on macOS and says sidebar destinations never appear in the platform accessibility tree. Issue 2838 separately asks for complete keyboard behavior in tabs, including roving focus, arrow navigation, Home and End, activation, and disabled-item handling. Teams shipping to regulated or keyboard-heavy environments should test their exact control set.

The latest v0.6.1 release did improve accessible activation for selects, name calendar items, and adjust dialog close buttons. It also introduced headless interaction and layout checks through gpui_kit::test. That is useful movement, though the two open reports show why a new testing surface should not be mistaken for finished coverage. Native behavior varies across Windows, macOS, and Linux, so the release gate needs all target platforms.

Weekly GPUI snapshots trade convenience for upstream movement

GPUI Kit pins a matching GPUI release and republishes version-aligned gpui-pre snapshots. The contribution guide says an automated job checks Zed's GPUI crates weekly. Publishing pauses if an upstream API change breaks compatibility, then GPUI Kit adapts rather than carrying behavioral patches. This avoids a permanent fork, but application teams still need locked revisions and an upgrade window for changes arriving from two projects.

Icons and initialization remain application duties. The default asset feature supplies Lucide icons, while teams can disable it and provide SVG files under names defined by IconName. Every application must call gpui_kit::init before using components and put a Root at the first level of a window. None of these steps is unreasonable, yet together they make the framework more opinionated than a bag of Rust controls.

A same-day release and 103 open items show an active, moving project

GitHub recorded 14,188 stars, 103 combined issues and pull requests, a push on 2026-09-09, and the v0.6.1 release on that same date. The open count is not a bug count. Recent reports and release work span editor allocation, sidebar accessibility, keyboard behavior, Windows library loading, Markdown rendering, and testing, which shows users and maintainers working on current code.

GPUI Kit makes the most sense when its table, editor, dock, and shared desktop behavior match the product closely. Iced is a cleaner comparison for a standalone Rust application model, egui favors immediate-mode tools, and Slint adds declarative files plus embedded targets. Our 431-second failed build is a warning to budget native setup before evaluation, while the current issue detail is a reason to prototype the hardest interaction before committing the rest of an application.

Alternatives

ProjectWhat it isPick it when
Iced gh↗A cross-platform Rust GUI library with an Elm-inspired application model.pick this instead when you want a standalone framework and do not need GPUI Kit's editor or dock system.
egui gh↗An immediate-mode Rust GUI often used for developer tools and visual applications.pick this instead when quick custom tooling matters more than native-style component behavior.
Slint gh↗A declarative UI toolkit for desktop and embedded products with its own markup language.pick this instead when declarative UI files or embedded targets are part of the brief.

What people are saying

  1. [github-trending] longbridge/gpui-kit
  2. [github-trending] longbridge/gpui-component

Sources

  1. GPUI Kit README
  2. GPUI Kit v0.6.1 release
  3. GPUI Kit contributing guide
  4. Sidebar accessibility issue 2968
  5. Table modifier issue 2795
  6. Editor allocation issue 3017

More dev tools reviews

chezmoi · iced · Files · linux · tokio · lerna · the whole board →