$ cat ~/build-log/tauri-over-electron.log
Why I chose Tauri over Electron for macOS apps — and what I gave up
// A practical comparison from building Oliver and PointerSense: where Tauri wins, where it costs you, and what the tradeoff actually looks like day-to-day.
When I started building Oliver, Electron was the obvious choice — large community, mature tooling, and a JavaScript runtime I already knew. I chose Tauri instead. A year later building PointerSense, I made the same call. Here is what the tradeoff actually looks like.
Tauri wins on binary size and memory. An Electron app ships a full Chromium instance — 150MB before you write a line of code. A Tauri app uses the system WebView and a Rust core, landing around 8MB. For a menu bar utility that runs all day, memory footprint matters. PointerSense needs to be invisible in Activity Monitor, not just invisible on screen.
Tauri wins on native API access. The Rust backend can call macOS APIs directly — NSWindowSharingNone for screen-capture exclusion in Oliver, AXUIElement for Accessibility text detection in PointerSense, and the Keychain for encrypted key storage in both. Electron can do all of this through native Node modules, but the integration layer is thicker and the debugging is harder.
What you give up is ecosystem. Electron's plugin and community surface is larger. When I hit an edge case with BlackHole audio routing in Oliver, there were Stack Overflow answers. When I hit an edge case in Tauri's IPC surface, I was reading source code.
The rule I use now: if you are building a long-running utility that needs deep OS integration and a small footprint, use Tauri. If you are building a complex app where development speed matters more than runtime efficiency, Electron is still a defensible choice.