gpuicn is an open-source library of Rust components for native GPUI apps. Install the source in your app, then keep ownership of its styling and behavior. Applications use GPUI Kit for native controls, text editing, motion, and popup hosts. gpuicn supplies Nova styling and application components. See the migration notes for the new APIs and verification status.
The current beta supports GPUI Kit 0.6.4 and its pinned gpui-pre 0.3.5
runtime. Import GPUI types through gpui_kit; apps on another GPUI revision
must migrate before installing gpuicn source.
The project follows the shadcn/ui source distribution model. It brings shadcn's visual language and themes to idiomatic GPUI APIs. It does not copy React APIs.
Warning
gpuicn is in beta. APIs and styling can change. Pin dependency revisions and review updates before replacing installed source.
The registry covers 40 component families, including Sidebar, Resizable, and Virtual List, with shadcn Neutral Nova defaults. The catalog uses real GPUI/WASM previews. Installed source stays editable.
- Catalog
- Registry setup
- Source pins
- Desktop expansion plan and local review gates
- Full Lucide icon library
The native CLI is not published to crates.io. Install the current published beta from its Git tag and use the matching registry snapshot:
cargo install gpuicn-cli --git https://github.com/devaryakjha/gpuicn --tag v0.5.0-beta.4 --locked
# From your app directory:
gpuicn --registry https://raw.githubusercontent.com/devaryakjha/gpuicn/v0.5.0-beta.4/site/pages/r init
gpuicn add button sidebarNo Node.js is required. gpuicn.toml selects the registry and output directory.
The CLI copies shared modules and maintains mod.rs. Existing edits are kept
unless you pass --overwrite. See setup and updates for
Cargo dependencies and theming for colors, density, type,
radius, per-instance styles, and motion.
The tag and registry URL above pin the current published beta; they do not
include later fixes until a new release is tagged. To update, move both pins to
the same release, commit your app-specific edits, and use
gpuicn add button sidebar --dry-run --overwrite to list files before replacing
them. Review the resulting source diff after the actual overwrite.
GitHub issue #58 tracks the current adoption-readiness work. TODO.md preserves earlier local pass records and desktop batches.
Launch the local workspace example app:
cargo run --release -p gpuicn-showcase --features gpui_platform/runtime_shadersThe app combines projects, tasks and local chat with saved state. The component
gallery is available with -- --catalog. Build a macOS app and website download with
python3 scripts/package-showcase.py. See showcase packaging
for signing, validation, and distribution limits.
The TanStack/shadcn website lives in web/. The Rust crate in site/ builds
the embedded GPUI/WASM previews.
Use Rust 1.97.1 for native development, the pinned WASM nightly, Trunk 0.21.14, and Bun. On macOS, native builds require Xcode's Metal toolchain.
rustup toolchain install nightly-2026-08-17 --component rust-src --target wasm32-unknown-unknown
cd site
RUSTUP_TOOLCHAIN=nightly-2026-08-17 CARGO_UNSTABLE_BUILD_STD=std,panic_abort trunk build --release --dist ../web/public/demo --public-url /demo/
cd ../web
bun install
bun run devThe site generates its code examples and API reference from the same Rust source
used by the previews. It also includes a searchable gallery of all 1,818 Lucide
icons, backed by the standalone gpui-icons library.
cargo test -p gpuicn --lib --locked
cargo clippy -p gpuicn --lib --tests --locked -- -D warnings
cargo check -p gpuicn-showcase --locked
cargo check -p gpuicn --example usage --locked
cd web
bun run build
bun run lintCI builds the registry with Rust and checks native installation. It also installs every registry item with the stock shadcn CLI. CI compares the installed source byte for byte, tests overwrite behavior, and compiles the app.
The components use GPUI Kit's native state and input behavior. The browser catalog renders the same Rust components through WebGPU and WASM. It needs a WebGPU-capable browser. Source and installation instructions remain available when a preview cannot start.
The WASM canvas does not expose a browser accessibility tree. Relationship
attributes, nested overlays, motion, and other differences are documented per
component under docs/parity/ and in the catalog. These are platform limits,
not claims of complete browser or shadcn behavioral parity.
Open an issue for a bug, parity gap, or component request. Focused pull requests are welcome. Include the checks that support the change.
gpuicn is available under the MIT License.


