This document summarizes the upgrade from Tauri v1.6 to v2.8 and Vite v4.4 to v5.4.20.
- Vite: v4.4.4 → v5.4.20
- @vitejs/plugin-react: v4.0.4 → v4.7.0
- @vitejs/plugin-react-swc: v3.3.2 → v3.11.0
- @tauri-apps/api: v1.6.0 → v2.8.0
- @tauri-apps/cli: v1.6.1 → v2.8.4
- tauri: v1.7.2 → v2.8.5
- tauri-build: v1.5.4 → v2.8.5
- dirs: v5.0 (for home directory access)
- Multiple Tauri plugins: All migrated to v2 versions
-
Path API Migration
- Changed from:
tauri::api::path::home_dir() - Changed to:
dirs::home_dir() - Files affected:
src-tauri/src/db/mod.rs,src-tauri/src/modules/python/mod.rs,src-tauri/src/modules/node/mod.rs
- Changed from:
-
Event Handling
- Changed from:
app.listen_global() - Changed to: Event handling via app context (temporarily commented out)
- File:
src-tauri/src/main.rs
- Changed from:
-
Window API
- Changed from:
app.get_window() - Changed to:
app.get_webview_window() - File:
src-tauri/src/main.rs
- Changed from:
-
RunEvent Import
- Now part of:
tauri::RunEvent(direct usage) - File:
src-tauri/src/main.rs
- Now part of:
-
Configuration Changes
tauri.conf.jsonmigrated to v2 formatdistDir→frontendDistdevPath→devUrl- Removed
trayIconfrom config (needs plugin reimplementation)
-
HTTP Plugin API
- Changed from:
fetch<string>(url, { responseType: ResponseType.Text }).then(res => res.data) - Changed to:
fetch(url, { method: 'GET' }).then(res => res.text()) - File:
src/modules/dictionary/index.tsx
- Changed from:
-
Shell Command API
- Changed from:
new Command('cmd', args) - Changed to:
Command.create('cmd', args) - File:
src/modules/tauri/components/shell/index.tsx
- Changed from:
-
FS writeTextFile API
- Changed from:
writeTextFile({ contents, path }, { dir: BaseDirectory.Home }) - Changed to:
writeTextFile(path, contents, { baseDir: BaseDirectory.Home }) - File:
src/modules/tauri/components/shell/index.tsx
- Changed from:
-
Import Path Updates
- Changed from:
import { invoke } from '@tauri-apps/api' - Changed to:
import { invoke } from '@tauri-apps/api/core' - File:
src/modules/tauri/components/storage/index.tsx
- Changed from:
- Status: Disabled during migration
- Reason: Tauri v2 completely redesigned the menu API
- Files affected:
src-tauri/src/menus/mod.rs,src-tauri/src/main.rs - TODO: Reimplement using Tauri v2's new menu API
- Status: Disabled during migration
- Reason: Tauri v2 moved system tray to a plugin-based system
- Files affected:
src-tauri/src/main.rs,src-tauri/tauri.conf.json - TODO: Install and configure
tauri-plugin-trayand reimplement tray functionality
Tauri v2 introduces a new permissions/capabilities system. Migration created:
src-tauri/capabilities/migrated.json- Migrated v1 permissionssrc-tauri/capabilities/desktop.json- Desktop-specific capabilities
✅ All builds successful:
- Frontend build:
pnpm run build✓ - Rust check:
cargo check✓ - Rust release build:
cargo build --release✓
Minor warnings remain but don't affect functionality:
- Unused variables in Rust code
- Browserslist outdated warning (cosmetic)
-
Reimplement Menu System
- Use
tauri::menuAPI - Refer to Tauri v2 menu documentation
- Use
-
Reimplement System Tray
- Add
tauri-plugin-traydependency - Implement using plugin API
- Add
-
Consider Additional Optimizations
- Code splitting for frontend bundle size
- Update browserslist database
Before deploying to production:
- Test all Tauri commands (greet, db operations, blockchain commands)
- Test shell execution features
- Test file system operations
- Test HTTP fetch functionality
- Test event system if reimplemented
- Test on all target platforms (Windows, macOS, Linux)