TL;DR / Key Takeaways
- New frameworks like Tauri, Deno, and Electrobun promise to dethrone Electron, but our real-world tests reveal a shocking reality.
- We built the same demanding app on all four to expose the truth about performance, bundle size, and developer pain.
The Bloat War: A 400MB Bundle is a Failure
Bundles are battlegrounds in the modern desktop app landscape. The test application, an identical screen recording tool, reveals stark differences in deployment size. Electron, once the standard, weighs in at 323 MB. Tauri leads the pack at a mere 57 MB, with deno desktop following at 111 MB. Electrobun, however, ballooned to a staggering 418 MB, making it the undeniable loser in this category. (Note: all sizes include 45 MB for embedded FFmpeg).
Electrobun’s colossal size stems from a critical architectural flaw. Its native system web view lacks essential APIs like the Screen Capture API and `getDisplayMedia`, which are vital for JavaScript-based screen recording functionality. This forces developers to bundle a full Chromium instance, adding roughly 200 MB of bloat just to enable core features. Deno’s API successfully implements these functions, allowing it to avoid this heavy overhead.
Tauri employs a superior strategy. It offloads intensive tasks like screen recording to its Rust backend, leveraging powerful native OS frameworks such as macOS’s Screen Capture Kit. This approach means the web view only handles the UI, never processing a single video frame. The result is a dramatically smaller bundle and optimized performance, demonstrating a clear path forward for efficient desktop app development.
Performance Myths: Startup vs. Reality
Startup performance often dictates initial user perception, and here, the results surprise. Despite assumptions, deno desktop launched fastest at 242ms, outperforming Electron's 273ms and Tauri's 311ms. The expectation that Tauri, with its Rust backend and system web view, would deliver instant starts proved incorrect, as the rendering engine still requires boot time.
Next, clarify the persistent "Tauri is 10x lighter" memory myth. While its on-disk bundle size is indeed dramatically smaller than Electron's, actual runtime memory footprints are much closer. Electron consumed 128MB, while Tauri used 109MB. This figure correctly accounts for system web view processes, which macOS starts separately, often leading to misreported lower initial memory usage (e.g., 36MB) before a full accounting.
Tauri truly excels in runtime performance, especially for demanding tasks like screen recording. It achieves superior results by offloading intensive video processing to native code, leveraging system frameworks such as macOS's Screen Capture Kit. This method bypasses browser-based limitations, allowing Tauri to deliver smooth 60 FPS recording that browser-based applications struggle to match. Its backend handles audio mixing and MP4 finalization, further optimizing performance.
The Developer Gauntlet: Code, Crashes, and Hacks
While Electron and Tauri offer a mature, straightforward developer experience, the journey with their modern alternatives proved anything but. building the same screen recording application exposed a developer gauntlet for the newer frameworks, marked by frustrating setup challenges, inexplicable dependencies, and even system crashes. Stability and ease of implementation remain key differentiators.
deno desktop, despite its impressive startup speed, revealed a critical flaw in its developer experience. When a screen recording started and the application window was subsequently hidden, the entire process would unexpectedly terminate. This forced developers to implement a hacky workaround: instead of hiding the window, they had to move it off-screen to prevent the application from crashing. This suggests deno desktop's platform needs significant maturation.
Electrobun presented a truly frustrating developer gauntlet. Its native system web view lacked the crucial Screen Capture API and `getDisplayMedia` function necessary for JavaScript-based screen recording. This technical deficit necessitated bundling an entire Chromium instance, adding an extra 200 MB of avoidable bloat to the application's already massive size. Furthermore, the package inexplicably pulled in 3D rendering libraries, including Three.js and Babylon.js, for an app that performed no 3D rendering whatsoever.
The Verdict: Your Next Desktop App Stack
Tauri emerges as the decisive winner for desktop applications demanding a lean footprint and peak performance. With a mere 57MB bundle size and native backend screen capture, it delivers superior runtime efficiency. Your team must embrace Rust, but the trade-off is unparalleled resource optimization.
Enjoying this? Get one like it in your inbox each morning.
one email a day · unsubscribe in two clicks · no third-party tracking
Electron remains the undisputed champion for TypeScript-first teams prioritizing ecosystem maturity, stability, and an expansive knowledge base. Despite a 323MB bundle and 273ms startup, its straightforward developer experience and robust community mitigate performance concerns for many projects. It offers a reliable, well-understood path.
deno desktop is a promising contender, boasting a swift 242ms startup and a 111MB bundle. However, its current instability, marked by application crashes and hacky workarounds for core functionalities, makes it a risky choice for production. Watch this space, but proceed with caution.
Electrobun, in this rigorous test, proved the worst of all worlds. Its bloated 418MB bundle, necessitated by shipping Chromium for essential APIs, combined with a sluggish 773ms startup and complex developer gauntlet, makes it an unviable option. Ignore Electrobun for serious development.
Frequently Asked Questions
Which framework had the smallest bundle size?
Tauri was the clear winner at just 57 MB. This was significantly smaller than Electron (323 MB), Deno Desktop (111 MB), and especially Electrobun (418 MB).
Is Tauri faster than Electron?
In startup speed, Deno Desktop was the fastest, surprisingly beating both Electron and Tauri. However, Tauri demonstrated superior runtime performance for demanding tasks like 60 FPS screen recording due to its direct use of native system APIs.
Why was Electrobun's bundle size so large?
Electrobun's native system web view lacked the required Screen Capture API for the test application. This forced the bundling of the entire Chromium browser, adding approximately 200 MB of bloat to the final package.
What is the best Electron alternative for TypeScript developers?
For teams wanting to avoid Rust, Electron remains the most mature and stable platform. Deno Desktop shows promise but currently suffers from stability issues, making Electron the safer bet for pure TypeScript projects.
