Back to skills
SKILL.md
Tauri Project Setup
DSecurityHelps users create and initialize new Tauri v2 projects for building cross-platform desktop and mobile applications. Covers system prerequisites and setup requirements for macOS, Windows, and Linux. Guides through project creation using create-tauri-app or manual Tauri CLI initialization. Explains project directory structure and configuration files. Supports vanilla JavaScript, TypeScript, React, Vue, Svelte, Angular, SolidJS, and Rust-based frontends.
- 33 stars
- 0 votes
- 0 copies
- 4 views
- Added February 8, 2026
Works with
Security analysis
55/100- Pipes output to a shell interpreter
- Uses curl or wget to download content
- Downloads and executes remote scripts — classic supply chain attack
- Downloads and executes remote scripts — classic supply chain attack
- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add dchuk/claude-code-tauri-skills --skill tauri-project-setup --agent claude-codeAre you the author of Tauri Project Setup?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dchuk-tauri-project-setup)---
name: setting-up-tauri-projects
description: Helps users create and initialize new Tauri v2 projects for building cross-platform desktop and mobile applications. Covers system prerequisites and setup requirements for macOS, Windows, and Linux. Guides through project creation using create-tauri-app or manual Tauri CLI initialization. Explains project directory structure and configuration files. Supports vanilla JavaScript, TypeScript, React, Vue, Svelte, Angular, SolidJS, and Rust-based frontends.
---
# Setting Up Tauri Projects
## What is Tauri?
Tauri is a framework for building tiny, fast binaries for all major desktop and mobile platforms. It combines any frontend that compiles to HTML/JS/CSS with Rust for the backend.
**Key characteristics:**
- Minimal apps can be under 600KB (uses system webview, not bundled browser)
- Built on Rust for memory, thread, and type safety
- Supports virtually any frontend framework
- Cross-platform: Windows, macOS, Linux, iOS, Android
## System Prerequisites
### macOS
```bash
# For desktop + iOS development
# Install Xcode from Mac App Store
# For desktop-only development (lighter option)
xcode-select --install
```
### Windows
1. **Microsoft C++ Build Tools**: Download from Visual Studio, select "Desktop development with C++"
2. **WebView2**: Pre-installed on Windows 10 v1803+ (install manually if needed)
3. **Rust toolchain**:
```powershell
winget install Rustlang.Rustup
rustup default stable-msvc
```
### Linux
**Debian/Ubuntu:**
```bash
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
```
**Arch Linux:**
```bash
sudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl \
appmenu-gtk-module libappindicator-gtk3 librsvg xdotool
```
**Fedora:**
```bash
sudo dnf install webkit2gtk4.1-devel openssl-devel curl wget file \
libappindicator-gtk3-devel librsvg2-devel libxdo-devel \
@development-tools
```
### Rust (All Platforms)
```bash
# macOS/Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Windows (PowerShell)
winget install Rustlang.Rustup
```
### Node.js
Required only for JavaScript/TypeScript frontends. Install LTS version from nodejs.org.
### Mobile Development (Optional)
**Android (all platforms):**
```bash
# Install Android Studio, then add Rust targets
rustup target add aarch64-linux-android armv7-linux-androideabi \
i686-linux-android x86_64-linux-android
```
Set environment variables: `JAVA_HOME`, `ANDROID_HOME`, `NDK_HOME`
**iOS (macOS only):**
```bash
# Requires full Xcode (not just Command Line Tools)
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
# Install Cocoapods
brew install cocoapods
```
## Creating a Project
### Method 1: create-tauri-app (Recommended)
Interactive scaffolding with framework templates.
```bash
# npm
npm create tauri-app@latest
# pnpm
pnpm create tauri-app
# yarn
yarn create tauri-app
# bun
bun create tauri-app
# cargo (no Node.js required)
cargo install create-tauri-app --locked
cargo create-tauri-app
# Shell scripts
sh <(curl https://create.tauri.app/sh) # Bash
irm https://create.tauri.app/ps | iex # PowerShell
```
**Prompts you'll see:**
1. Project name
2. Bundle identifier (e.g., `com.example.app`)
3. Frontend language: TypeScript/JavaScript, Rust, or .NET
4. Package manager
5. UI template: vanilla, Vue, Svelte, React, SolidJS, Angular, Preact, Yew, Leptos, Sycamore
**After scaffolding:**
```bash
cd your-project
npm install
npm run tauri dev
```
### Method 2: Manual Setup (Existing Projects)
Add Tauri to an existing frontend project.
```bash
# 1. In your existing project, install Tauri CLI
npm install -D @tauri-apps/cli@latest
# 2. Initialize Tauri (creates src-tauri directory)
npx tauri init
```
**tauri init prompts:**
- App name
- Window title
- Frontend dev server URL (e.g., `http://localhost:5173`)
- Frontend build output directory (e.g., `dist`)
- Frontend dev command (e.g., `npm run dev`)
- Frontend build command (e.g., `npm run build`)
```bash
# 3. Start development
npx tauri dev
```
## Project Structure
```
my-tauri-app/
├── package.json # Frontend dependencies
├── index.html # Frontend entry point
├── src/ # Frontend source code
│ └── main.js
└── src-tauri/ # Rust backend
├── Cargo.toml # Rust dependencies
├── Cargo.lock
├── build.rs # Tauri build script
├── tauri.conf.json # Main Tauri configuration
├── capabilities/ # Permission/capability definitions
├── icons/ # App icons (all formats)
└── src/
├── lib.rs # Main Rust code + mobile entry point
└── main.rs # Desktop entry point
```
### Key Files
**tauri.conf.json** - Primary configuration:
```json
{
"productName": "my-app",
"version": "0.1.0",
"identifier": "com.example.my-app",
"build": {
"devUrl": "http://localhost:5173",
"frontendDist": "../dist"
},
"app": {
"windows": [{ "title": "My App", "width": 800, "height": 600 }]
}
}
```
**src/lib.rs** - Rust application code:
```rust
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
```
**src/main.rs** - Desktop entry point:
```rust
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
app_lib::run();
}
```
**capabilities/** - Define what commands JavaScript can invoke:
```json
{
"identifier": "main-capability",
"windows": ["main"],
"permissions": ["core:default"]
}
```
## Common Commands
```bash
# Development with hot reload
npm run tauri dev
# Build production binary
npm run tauri build
# Generate app icons from source image
npm run tauri icon path/to/icon.png
# Add Android target
npm run tauri android init
# Add iOS target
npm run tauri ios init
# Run on Android
npm run tauri android dev
# Run on iOS simulator
npm run tauri ios dev
```
## Quick Reference: Supported Frontend Templates
| Template | Languages | Notes |
|----------|-----------|-------|
| vanilla | JS, TS | No framework |
| react | JS, TS | Vite-based |
| vue | JS, TS | Vite-based |
| svelte | JS, TS | Vite-based |
| solid | JS, TS | Vite-based |
| angular | TS | Angular CLI |
| preact | JS, TS | Vite-based |
| yew | Rust | Rust WASM frontend |
| leptos | Rust | Rust WASM frontend |
| sycamore | Rust | Rust WASM frontend |
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.