Electron apps ship fast. Native apps feel fast. We chose Rust and Tauri and haven't looked back — but it came with real tradeoffs worth being honest about.
Why not Electron
The obvious answer is performance. Electron bundles a full Chromium browser. For an app where the perceived speed of every interaction matters, starting with a 150MB binary and 200ms startup overhead felt like the wrong foundation.
But performance wasn't the only reason. Electron's memory model, security surface, and update mechanism all felt at odds with what we were building: an app that holds your email and should behave like a trusted piece of system software.
Why Tauri + Rust
Tauri uses the platform's native webview (WKWebView on macOS) for the UI layer, with Rust handling everything that touches your data: parsing, storing, syncing, and classifying email. The binary is under 15MB. Cold start is under 100ms.
The tradeoff: Rust has a steep learning curve, and the Tauri ecosystem is younger than Electron's. Some things that are one npm install in Electron required us to write from scratch. We think that's the right trade.
What we'd do differently
We'd start with stronger type contracts between the Rust and TypeScript layers earlier. The IPC boundary is where most of our early bugs lived. A typed schema for commands from day one would have saved weeks.