All tests run on an 8-year-old MacBook Air.
I've shipped multiple Mac apps with Tauri v2. I evaluated Electron seriously before choosing Tauri.
Here's what 6 months of actual development taught me — not benchmarks, actual experience.
Bundle size: Tauri wins, obviously
Electron bundles Chromium. Your app is 150MB before you write a line of code.
Tauri uses the system WebView (WKWebView on macOS). My largest app is under 10MB as a DMG.
For a paid app distributed outside the App Store, this matters. A 150MB download for a PDF tool is a hard sell.
The Rust learning curve is real
Electron lets you write everything in JavaScript. Tauri requires Rust for the backend.
If you know Rust: Tauri is a joy. The type system catches errors before they reach users. The performance headroom is enormous.
If you don't know Rust: budget 2-3 months of frustration before you're productive. The borrow checker will fight you on everything involving shared state between async tasks.
I knew some Rust going in. It still took longer than I expected.
Where Tauri v2 surprised me (positively)
The capabilities/permissions system is well thought out. Granular control over exactly what each window can access.
The plugin ecosystem is growing fast. tauri-plugin-fs, tauri-plugin-shell, tauri-plugin-notification — most of what you need exists.
IPC between frontend and Rust backend via invoke() is clean and type-safe with the right setup.
Where Tauri v2 frustrated me
macOS-specific native API access is manual.
Calling PDFKit or Vision Framework requires a Swift/ObjC sidecar binary. Tauri doesn't abstract this — you build and manage the bridge yourself. It works, but it's not documented well.
Hot reload is flaky.
cargo tauri dev hot reloads the frontend fine. Rust changes require a full recompile. For a complex app this is 30-60 seconds per backend change. Electron's dev experience is faster.
Error messages from the JS side are opaque.
When a Tauri command fails, the error that surfaces in the frontend is often just "command failed." You need explicit error serialization on the Rust side to get useful messages.
The verdict
Tauri v2 for apps where bundle size, performance, and Rust access matter.
Electron for teams that move fast in JavaScript and don't need the performance headroom.
Not a universal answer. Depends on your constraints.
Hiyoko PDF Vault → https://hiyokoko.gumroad.com/l/HiyokoPDFVault
X → @hiyoyok
Top comments (0)