GPUI Kit documentation index
Retrieved 2026-10-01T10:02:28+00:00. All 183 English pages from the official index are bundled below. Chinese translations remain discoverable in llms.txt; images stay remote.
Read only the pages relevant to the task. These are documentation snapshots, not proof that an API exists in a project's locked version. See manifest.json for page sources and SHA-256 hashes.
Credit: GPUI Kit. Prose and original illustrations: CC BY 4.0. Code: Apache-2.0. Third-party material retains its terms. Links and attribution are adapted; the guide content is retained.
Application guides
| Page | Covers |
|---|
| Accessibility | Build and test accessible GPUI Kit interfaces with AccessKit semantics and actions. |
| Action | Define typed commands and route them through focus, key contexts, and GPUI's dispatch path. |
| Animation | Choose GPUI element animation, GPUI Base motion, and GPUI Component motion with correct identity, interruption, and reduced-motion behavior. |
| Auto Update | Plan safe update checks, verified downloads, installation, and restart for GPUI Kit desktop apps. |
| Coding Guides | Architecture and coding conventions for maintainable GPUI Kit applications |
| Comparison | Compare GPUI Kit, Iced, egui, Qt 6, and Slint for desktop application architecture and capabilities. |
| Context | Understand how GPUI provides application, Entity, Window, and async access. |
| Design Guides | Product and interaction design guidance for GPUI Kit applications |
| Element | Understand GPUI's element tree and low-level rendering lifecycle. |
| ElementId | Give GPUI elements stable identity and understand how keyed state survives frames. |
| Entity | Create, share, read, update, and observe state with GPUI Entity. |
| Event | Use GPUI Events for typed notifications and connect them to Actions. |
| Focus | Build keyboard reachable GPUI views with stable focus handles, focus events, and safe focus traps. |
| Fonts | System fonts, theme fonts, per-element overrides, and bundling custom fonts. |
| FPS Monitor | Read the gpui-fps HUD — what MAX FPS is, why it is derived rather than counted, and what each row measures. |
| Geometry | Work with GPUI's typed coordinates, layout lengths, and colors in practical UI code. |
| Getting Started | Build your first GPUI Kit desktop application with one dependency and one view. |
| Global | Share application-wide state with GPUI Global, and connect changes to Views and windows. |
| GPUI Kit | A comprehensive Rust framework for building fantastic, high-performance desktop applications with GPUI. |
| I18N | Set up translations, switch locales, and check text behavior in GPUI Kit. |
| Icons & Assets | Configure bundled icons and custom assets for GPUI Kit applications. |
| Images | How img() and svg() load, decode, size, and cache images, and how to cache remote images over HTTP. |
| Installation | Install GPUI Kit and the platform dependencies required to build Rust desktop applications on macOS, Windows, and Linux. |
| KeyBinding | Bind GPUI Actions to keys, chords, and focused Key Contexts. |
| Mobile | Build an iOS application or embed GPUI Kit in a Swift UIKit container with the experimental gpui-pre-mobile platform. |
| Multi Window | Open multiple GPUI Kit windows, share application state, route work to the right window, and handle closing and restoration. |
| Native Extensions | Integrate native menus and child views with GPUI Kit, including handles, layout, input, lifetime, and platform limits. |
| Packaging | Turn a GPUI Kit release build into a macOS app and DMG, a Windows installer, or a Linux tarball and DEB. |
| Paint | Draw custom geometry in GPUI and understand the boundary between layout, hit testing, and painting. |
| Render | Turn Entity state into an element tree and understand when GPUI rebuilds a View. |
| RenderOnce | Build reusable, declarative GPUI components from owned data. |
| SharedString | Choose and use GPUI's immutable, cheaply cloned text for UI state and components. |
| Style | Style GPUI elements with Tailwind CSS–familiar utilities, typed values, and fluent Rust builders. |
| SystemNotification | Send OS notifications with GPUI, handle activation, and understand GPUI Kit's Notification integration and platform limits. |
| Task | Run asynchronous work with GPUI Task, control its lifetime, and return results to the UI. |
| Testing | Test GPUI Kit applications and GPUI behavior with Rust unit tests, TestAppContext, native UI interactions, layout assertions and CI. |
| TextSystem | Shape, measure, lay out, and paint text through GPUI's text system and GPUI Kit components. |
| View Cache | Reuse clean GPUI view subtrees and distinguish view caching from element state, geometry caching, and virtualization. |
| WebAssembly | Build and run GPUI Kit applications in a browser with the repository's WebAssembly examples. |
| WebView | Embed a native Wry WebView in a GPUI Kit window, with the current platform and overlay limitations. |
| Window | Use GPUI Window for window-local input, focus, rendering, and asynchronous work. |
Styled components
| Page | Covers |
|---|
| Accordion | The accordion uses collapse internally to make it collapsible. |
| Alert | Displays a callout for user attention. |
| AlertDialog | A modal dialog that interrupts the user with important content and expects a response. |
| Attachment | A composable file and media attachment surface with lifecycle states, previews, and actions. |
| Avatar | Displays a user avatar image with fallback options. |
| Badge | A red dot that indicates the number of unread messages, status, or other notifications. |
| Bubble | A composable chat surface for text, rich content, and reaction controls. |
| Button | Displays a button or a component that looks like a button. |
| Calendar | A flexible calendar component for displaying months, navigating dates, and selecting single dates or date ranges. |
| Carousel | A composable carousel for browsing related content. |
| Chart | Beautiful charts and graphs for data visualization including line, bar, area, pie, radar, candlestick, and sankey charts. |
| Checkbox | A control that allows the user to toggle between checked and not checked. |
| Clipboard | A button component that helps you copy text or other content to your clipboard. |
| Collapsible | An interactive element which expands/collapses. |
| ColorPicker | A comprehensive color selection interface with support for multiple color formats, presets, and alpha channel. |
| Combobox | An autocomplete input paired with a searchable dropdown list. |
| Command | A command palette — a filtered list of commands and quick actions. |
| Components | Browse 75+ production-ready Rust UI components and primitives for forms, navigation, data, feedback, editing, and application layouts. |
| DataTable | High-performance data table with virtual scrolling, sorting, filtering, and column management. |
| DatePicker | A date picker component for selecting single dates or date ranges with calendar interface. |
| DescriptionList | Use to display details with a tidy layout for key-value pairs. |
| Dialog | A dialog dialog for displaying content in a layer above the app. |
| Dock | Production-ready dock layouts with styled tabs, split panes, edge docks, and persistent state. |
| DropdownButton | A DropdownButton is a combination of a button and a trigger button. It allows us to display a dropdown menu when the trigger is clicked, but the left Button can still respond to independent events. |
| Editor | Source-code editor with syntax highlighting, gutter, folding, and decorations. |
| Empty | Composable empty states with media, text, actions, and custom content. |
| Focus Trap | A utility element that traps keyboard focus within a container, preventing Tab navigation from escaping. |
| Form | Flexible form container with support for field layout, validation, and multi-column layouts. |
| GroupBox | A styled container element with an optional title to group related content together. |
| HoverCard | A floating overlay that displays rich content when hovering over a trigger element. |
| Icon | Display SVG icons with various sizes, colors, and transformations. |
| Image | Display embedded, local, and remote images with sizing, loading, and error states. |
| Input | Text input component with validation, masking, and various features. |
| Input Group | Combine inputs and textareas with text, icons, buttons, and toolbars. |
| Kbd | Displays keyboard shortcuts with platform-specific formatting. |
| Label | Text labels for form elements with highlighting and styling options. |
| List | A flexible list component that displays a series of items with support for sections, search, selection, and infinite scrolling. |
| Marker | A compact composable row for conversation status, notifications, loading, and separators. |
| Menu | Context menus and popup menus with support for icons, shortcuts, submenus, and various menu item types. |
| Message | Compose sender identity, metadata, rich content, and actions into an aligned chat message. |
| MessageScroller | A virtualized message list with tail following, history insertion, unread navigation, and customizable jump controls. |
| Notification | Display toast notifications that appear at the top right of the window with auto-dismiss functionality. |
| NumberInput | Number input component with increment/decrement controls and numeric formatting. |
| OtpInput | One-time password input component with multiple fields, auto-focus, and paste handling. |
| Pagination | Pagination with page navigation, next and previous links. |
| Plot | A low-level plotting library for creating custom charts and data visualizations. |
| Popover | A floating overlay that displays rich content relative to a trigger element. |
| Progress | Displays an indicator showing the completion progress of a task, typically displayed as a progress bar or circular indicator. |
| Questionnaire | A composable multi-step questionnaire with choice, freeform, validation, and navigation support. |
| Radio | A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time. |
| Rating | A simple interactive star rating component. |
| Resizable | A flexible panel layout system with draggable resize handles and adjustable panels. |
| Root View | Use the Root view to enable themes, notifications, dialogs, and other GPUI Component features in a window. |
| Scrollable | Scrollable container with custom scrollbars, scroll tracking, and virtualization support. |
| Select | Displays a list of options for the user to pick from—triggered by a button. |
| Settings | A settings UI with grouped setting items and pages. |
| Sheet | A sliding panel that appears from the edges of the screen for displaying content. |
| Shimmer | Theme-aware loading text with configurable sweep timing, spread, direction, and reduced-motion behavior. |
| Sidebar | A composable, themeable and customizable sidebar component for navigation and content organization. |
| Skeleton | Use to show a placeholder while content is loading. |
| Slider | A control that allows the user to select values from a range using a draggable thumb. |
| Spinner | Displays an animated loading showing the completion progress of a task. |
| StatusBar | A horizontal status bar with left, center, and right regions, usually placed at the bottom of a window or pane. |
| Stepper | A step-by-step progress for users to navigate through a series of steps or stages. |
| Switch | A control that allows the user to toggle between checked and not checked. |
| Table | A basic table component for directly rendering tabular data. |
| Tabs | A set of layered sections of content—known as tab panels—that are displayed one at a time. |
| Tag | A short item that can be used to categorize or label content. |
| Textarea | Multi-line text input with fixed rows, soft wrapping, and auto-grow. |
| TextView | Renders Markdown and HTML text with optional custom Markdown plugins. |
| Theme | Customize colors, typography, radii, and light or dark appearance with the GPUI Component theme system. |
| TimeField | A segmented input for a time of day, on a 24-hour or 12-hour clock. |
| TitleBar | A custom window title bar component with window controls and custom content support. |
| Toggle | A button-style toggle component for binary on/off or selected states. |
| Toolbar | A transparent, sizable container for commands in headers, tab panels, and custom surfaces. |
| Tooltip | Display helpful information on hover or focus, with support for keyboard shortcuts and custom content. |
| Tree | A hierarchical tree view component for displaying and navigating tree-structured data. |
| VirtualList | High-performance virtualized list component for rendering large datasets with variable item sizes. |
Base behavior and primitives
| Page | Covers |
|---|
| Accordion | A disclosure group composed from independently styleable header, trigger, and panel parts. |
| Alert Dialog | A modal confirmation surface for actions that need an explicit decision. |
| Avatar | An image with composable fallback content for a person or entity. |
| Button | An unstyled, accessible pressable with semantic state and keyboard activation. |
| Calendar | A state-driven date grid with selection matchers and custom item rendering. |
| Checkbox | A controlled tri-state check control with a separately styled indicator. |
| Collapsible | A composable region that shows or hides content without prescribing its trigger styling. |
| Color Picker | State and interaction foundations for selecting colors in a custom picker UI. |
| Combobox | A text input paired with keyboard-navigable suggestions and selection behavior. |
| Date Picker | A focus-aware date input that composes calendar behavior with a popup. |
| Dialog | A composable modal surface with focus management, backdrop, title, and close parts. |
| Dock | A dockable workspace — splits, tab groups, and edge docks — whose layout is pure data and whose appearance is entirely yours. |
| Editor | An unstyled source-code editor with language, gutter, folding, and decoration support. |
| Getting Started | Install, initialize, and render your first gpui-base control. |
| GPUI Base | The unstyled behavior and infrastructure foundation of GPUI Kit, the Rust desktop framework. |
| History | Browser-style navigation trails and grouped undo/redo transactions for application state. |
| Hover Card | A delayed floating card associated with a pointer or keyboard trigger. |
| Input | An unstyled single-line text input with masking, validation, and number stepping. |
| Link | An accessible link-like control with application-defined styling. |
| Motion | Typed transitions, springs, keyframes, presence, stagger, and reduced-motion behavior in gpui-base. |
| Nav Stack | A navigation stack of views with push, pop, forward, and replace, and an animatable transition lifecycle. |
| Number Input | A numeric input with reusable increment, decrement, and step behavior. |
| OTP Input | A multi-cell one-time-code input driven by a shared text state. |
| Pagination | A controlled page navigator with explicit current and total page state. |
| Plot | Unstyled plotting in gpui-base — scales, shapes, axes, the Plot element, and hover tracking — for building charts in any design system. |
| Popover | An anchored floating surface with controlled or internally managed open state. |
| Popup | A low-level trigger and anchored floating-content host. |
| Primitives | The complete catalog of user-facing gpui-base primitives. |
| Progress | Composable track and indicator parts for reporting task completion. |
| Radio | A controlled single-choice item with selectable and disabled semantics. |
| Radio Group | Groups radio items and provides keyboard navigation for a single selection. |
| Resizable | Panel groups and resize handles for user-adjustable split layouts. |
| Scrollbar | Add a styled, animated scrollbar to GPUI scroll views, lists, and custom viewports. |
| Select | A button-like selection control backed by an anchored, keyboard-navigable popup. |
| Sheet | A modal surface that enters from an edge while managing dismissal and focus. |
| Slider | A state-driven range input with independently styleable track, indicator, and thumb. |
| Switch | A controlled on/off control with separately styleable track and thumb. |
| Table | Semantic table primitives for composing headers, bodies, rows, and cells. |
| Tabs | A tab list and accessible tab controls with controlled selection. |
| Text Selection | Add native window-level text selection to plain text and custom GPUI participants. |
| Textarea | An unstyled multi-line text field with fixed rows or auto-grow behavior. |
| TextView | Render selectable Markdown and HTML directly with gpui-base. |
| Time Field | A segmented time-of-day editor with a complete keyboard model and 24- or 12-hour clocks. |
| Toast | A managed, animated stack of temporary status messages. |
| Toggle | A controlled two-state pressable for persistent choices such as formatting. |
| Toggle Group | Coordinates a set of toggle controls as a single- or multiple-selection group. |
| Tooltip | A delayed, positioned description associated with a trigger element. |
| Tree | A virtualized hierarchical list with explicit expansion and selection state. |
| VirtualList | Render a hundred thousand differently sized rows by drawing only the ones on screen. |
Shell and extensions
| Page | Covers |
|---|
| API Reference | Every name a script can import or reach — the four built-in modules, the cx and window globals, and the element methods that are not styles. |
| Capabilities | The default-deny model, the fs / storage / clipboard / process surface, where storage lives, and what the sandbox withholds. |
| Dependencies | Shell packages — what makes a Git repository one, and how a manifest names, selects, fetches and imports it, down to what an editor sees. |
| Dock and Panels | A dockable layout drawn entirely by script — panels that survive a restart, chrome you draw yourself, and commands instead of callbacks. |
| Elements | Constructors, composition with child / children / when, and why an element description can only be used once. |
| Examples | Complete standalone and embedded applications, including retained state, HostModule registrations, and native motion. |
| Getting Started | Add the runtime to a Rust application, write the script it loads, and check that script without opening a window. |
| GPUI Shell | Makes a Rust GPUI application extensible in JavaScript, rendered by GPUI itself — no WebView, no DOM. Plugins first, standalone script applications second. |
| Hosting | The Rust side in full — runtime lifetime, mounting script Views, refreshing them from host state, metrics, exit requests and hot-reload. |
| HostModule | How a host lends its own Rust to a script — registration, the import that reaches it, the plain-data boundary, and the rules a Host function runs under. |
| Overlays | Dialogs, the sheet and toasts, their stacking and dismissal order, and why they may only be opened from an event. |
| Performance | What a script costs once frame rate stops being the variable — invalidation against description size, the View as the boundary that bounds both, and the two failures FPS cannot tell apart. |
| State and Views | Views, init and render, cx.notify(), retained input state, and asynchronous work. |
| Styling | The fluent style surface, length and colour grammars, semantic theme tokens, and hover / active / focus styles. |
| The Engine Seam | QuickJS behind one internal interface, why the seam exists, and the three measurements that tell script cost apart from frame cost. |