Deno Desktop arrives — Electron's binary bloat finally has a real challenger

4 min read 1 source clear_take
├── "Deno Desktop is the right answer to the Electron problem because it leverages OS-native webviews instead of bundling Chromium"
│  └── top10.dev editorial (top10.dev) → read below

The editorial argues that Electron's dominance was a historical accident from 2013 when bundling Chromium was the only way to ship JS desktop apps. It frames Deno Desktop's use of WebView2/WKWebView/WebKitGTK as the architectural correction the ecosystem has been waiting for, citing the ~150MB disk and ~200MB RAM cost of a blank Electron window as evidence the status quo is wasteful.

├── "The decisive advantage over Tauri is that Deno keeps developers in TypeScript instead of forcing them into Rust"
│  └── top10.dev editorial (top10.dev) → read below

The editorial concedes Tauri proved the native-webview model works with 3MB binaries back in 2022, but identifies Rust as the adoption blocker. Deno Desktop's win is delivering Tauri's architecture inside a runtime millions of developers already use for servers and edge functions, with the same --allow-read/--allow-net permission model extended to desktop binaries.

└── "Developers have been actively waiting for a credible Electron alternative from a mainstream JS runtime"
  └── @GeneralMaximus (Hacker News, 300 pts) → view

Submitted the Deno Desktop docs to Hacker News where it hit 300 points and 106 comments within hours. The velocity of that response, cited by the editorial as 'the signal,' indicates strong latent demand for a non-Electron, non-Rust path to native desktop apps from an established JS runtime vendor.

What happened

Deno shipped Desktop — a first-class path for building cross-platform native applications directly from the Deno runtime. The docs went live at `docs.deno.com/runtime/desktop/` and hit 300 points on Hacker News within hours, which is the signal that developers have been waiting for an answer to the Electron problem from someone who isn't Electron.

The architecture is the headline: Deno Desktop renders through the operating system's native webview — WebView2 on Windows, WKWebView on macOS, WebKitGTK on Linux — rather than bundling its own browser engine. This is the same bet Tauri made in 2020, but executed inside the runtime millions of developers already use for servers, scripts, and edge functions. Your `deno run` script can now also be your installer.

The positioning matters. Deno isn't asking developers to learn Rust, adopt a new build system, or abandon their existing TypeScript codebases. It's saying: the runtime you already use for `Deno.serve()` can produce a signed `.app`, `.exe`, or AppImage with the same permission model — `--allow-read`, `--allow-net`, `--allow-write` — that gates your server code today.

Why it matters

Electron's dominance in desktop tooling is a historical accident, not a design victory. Slack, VS Code, Discord, Notion, 1Password, Figma's desktop client — every one of them ships a copy of Chromium because in 2013, that was the only way to write desktop software in JavaScript that actually worked. The cost of that decision compounds quietly: a blank Electron window is ~150MB on disk and ~200MB of RAM before you've rendered a single component. Multiply that across the eight Electron apps a typical developer has running and you're burning a gigabyte of memory on duplicate browser engines.

Tauri proved the alternative works. Its 1.0 release in 2022 demonstrated that you could ship a 3MB binary instead of a 150MB one by trusting the OS to provide a webview. The catch was the language: Tauri's backend is Rust, which is fine if you're already a Rust shop and a wall if you're a TypeScript shop trying to ship a side project on a weekend. Deno Desktop's pitch is that it closes the last gap — you get Tauri's binary economics without leaving the language and stdlib you write everything else in.

The permission model is the subtler win. Electron apps run with the full authority of the user account that launched them. If a malicious npm dependency makes its way into a preload script, it can read your SSH keys, exfiltrate `.env` files, and write to anywhere on disk — and you have no runtime mechanism to stop it short of code review. Deno's deny-by-default permissions, ported from the server runtime, mean a desktop app that only needs to read its own config directory can be launched with `--allow-read=./config` and physically cannot touch anything else. For a software supply chain that produced the `xz-utils` backdoor and the `event-stream` incident, this is not academic.

The community reaction on HN split predictably. The skeptics pointed out that webview behavior fragments across platforms — WKWebView's JavaScript engine ships with macOS and can be a year behind V8, WebView2 requires the runtime to be installed on older Windows builds, and WebKitGTK on Linux is famously the weakest of the three. The optimists countered that this is exactly the trade Tauri users have lived with for four years and shipped real products against — Spacedrive, Pot, and dozens of indie tools — without their users mutinying over rendering inconsistencies.

What this means for your stack

If you're maintaining an Electron app right now, this isn't a migration you start on Monday. The ecosystem gap is real: Electron has a decade of integrations for native menus, auto-updaters, tray icons, deep links, and code signing pipelines, and Deno Desktop is on day one of building those. Expect to spend more time on platform plumbing than you would in Electron, and budget for the parts that Tauri took two years to mature.

If you're starting something new, the calculus inverts. A Deno Desktop app with a SQLite backend and a Preact frontend can plausibly ship as a 5MB download with sub-100ms cold-start, which is the kind of footprint that lets you compete with native apps on user experience rather than apologizing for being web-tech. For internal tools, dashboards, and developer utilities — the long tail of "I just need a UI for this CLI" — that's a serious unlock.

The interesting medium-term play is hybrid: you already have a web app deployed to Deno Deploy or a similar edge platform. The same TypeScript codebase, with maybe ten lines of conditional logic around `Deno.build.os`, becomes a desktop client that talks to your own backend offline-first. The cost of building "a desktop version" of your web app drops from "hire two engineers for six months" to "add a build target."

Looking ahead

The desktop runtime landscape is finally getting competitive after a decade of Electron-by-default. Tauri carved out the niche, Wails proved it worked in Go, and now Deno Desktop brings it to the TypeScript mainstream. The next 18 months will be a stress test of the ecosystem story — auto-update infrastructure, code-signing tooling, native module access, and the inevitable "why doesn't my CSS work on WebKitGTK" issues. If Deno can ship the boring tooling as aggressively as they shipped the runtime, Electron's reign ends not with a dramatic exit but with a slow drift of new projects choosing the lighter option. That drift has now started.

Hacker News 1083 pts 388 comments

Deno Desktop

→ read on Hacker News

// share this

// get daily digest

Top 10 dev stories every morning at 8am UTC. AI-curated. Retro terminal HTML email.