Create modern Tauri desktop apps with shadcn/ui and a desktop-first default setup.
create-tauri-ui scaffolds the frontend with the upstream shadcn CLI, generates the native shell with create-tauri-app, and merges the result into a Tauri-ready project. The goal is to stay close to upstream tools without maintaining a large local template tree.
- 🧱 Upstream-first scaffolding: uses the
shadcnCLI for the frontend andcreate-tauri-appfor the native shell - 🖥️ Desktop defaults out of the box: window sizing, startup flash prevention, external link guarding, overscroll prevention, and desktop-style selection behavior
- 🔋 Built-in batteries: optional starter dashboard, Rust invoke example, desktop release workflow, and a dev-only debug panel
- 🧭 Framework-aware adapters: tuned for
vite,next,start,react-router, andastro - 🧹 Low-maintenance generator design: no large local template tree, just a small asset and patch surface
Primary commands:
bun create tauri-ui my-app
# direct binary command
bunx create-tauri-ui@latest my-appThen run the generated app:
cd my-app
bun install
bun run tauri devDetailed Commands
Generate a Vite app with defaults:
npm create tauri-ui@latest my-app -- --template vite --yesGenerate a Next.js app without the starter dashboard or workflow:
npm create tauri-ui@latest my-app -- --template next --yes --no-starter --no-workflowGenerate an Astro app with a custom identifier:
bun create tauri-ui my-app --template astro --identifier com.example.astroapp --yesCore setup
shadcnfrontend (upstream)- merged
src-taurinative layer - framework adapters (
vite,next,start,react-router,astro)
Desktop defaults
- centered
1400x918window - no startup flash (delayed show)
- external links open in system browser
- no overscroll / rubber-band scrolling
- desktop-style selection (
select-none+ opt-in)
Dev tools
- built-in debug panel
(invokes, events, logs, paths, webview info)
Assets
- included
app-icon.png
Optional
- starter dashboard (
dashboard-01) - Rust
invokeexample - GitHub Actions release workflow
prompts -> shadcn init -> create-tauri-app (temp) -> merge src-tauri -> apply framework patches -> add batteries
This project avoids shipping full local project templates. It keeps a small local surface of assets and patch logic, and lets the upstream CLIs do the heavy lifting.
This repository is a monorepo. The CLI package lives at packages/create-tauri-ui. For the full package documentation, examples, CLI options, and development notes, see packages/create-tauri-ui/README.md.
MIT
