Tauri v2 vs Electron After 6 Months of Real Development — My Honest Take
Source: Dev.to
Overview
All tests were run on an 8‑year‑old MacBook Air. I have shipped multiple macOS apps with Tauri v2 after a serious evaluation of Electron. The following reflects six months of real development—not synthetic benchmarks.
Bundle Size
- Electron bundles Chromium, resulting in an app size of roughly 150 MB before any code is added.
- Tauri uses the system WebView (WKWebView on macOS). My largest Tauri app ships as a DMG under 10 MB.
For a paid app distributed outside the App Store, the difference is significant—a 150 MB download for a simple PDF tool can be a hard sell.
Language and Development Experience
| Aspect | Electron | Tauri |
|---|---|---|
| Primary language | JavaScript/TypeScript | Rust for the backend, any web tech for the frontend |
| Learning curve | Low if you already know JS | Higher if you’re new to Rust; expect 2–3 months of friction with the borrow checker and async shared state |
| Type safety | None at runtime | Strong compile‑time guarantees; the type system catches many errors before they reach users |
| Performance headroom | Limited by Chromium | Large, thanks to native Rust code |
Even with some prior Rust knowledge, I found development slower than anticipated.
Permissions and Plugin Ecosystem
- Tauri’s capabilities/permissions system offers granular control over what each window can access.
- The plugin ecosystem is expanding rapidly. Frequently used plugins include:
tauri-plugin-fstauri-plugin-shelltauri-plugin-notification
Most common functionality is already available.
Inter‑Process Communication (IPC)
Communication between the frontend and Rust backend uses invoke(). With proper setup, this IPC is clean and type‑safe.
Native macOS API Access
Accessing macOS‑specific APIs (e.g., PDFKit, Vision Framework) requires a Swift/Objective‑C sidecar binary. Tauri does not abstract this layer; you must build and manage the bridge yourself. It works, but documentation is sparse.
Hot Reload and Development Speed
cargo tauri devprovides hot reload for the frontend.- Changes to Rust code trigger a full recompilation, taking 30–60 seconds for a complex backend.
- By comparison, Electron’s development experience feels faster.
Error Handling
When a Tauri command fails, the frontend often receives a generic “command failed” message. To obtain useful diagnostics, you need to explicitly serialize errors on the Rust side.
Conclusion
Tauri v2 is a strong choice for apps where bundle size, performance, and Rust integration matter. It is not a universal solution; the right tool depends on your project constraints and team expertise.
Example app: Hiyoko PDF Vault –
— @hiyoyok