Deno Desktop

Overview of Deno Desktop

  • Provides a way to build desktop apps with Deno using web technologies (HTML/CSS/JS/TS).
  • Supports multiple backends: system WebView (default in design), bundled Chromium via CEF, and a low-level “raw” backend aimed at custom rendering (e.g., WebGPU).
  • Integrates with Deno’s existing features: compilation to single binaries, cross-compilation, Node compatibility, auto-updates, and the npm ecosystem.

Comparisons with Electron, Tauri, and Others

  • Positioned as “like Tauri, but can also be like Electron”:
    • WebView backend for small binaries using the OS engine.
    • Optional CEF backend for consistent, modern rendering across platforms.
  • Compared to Electron: easier setup, potential for smaller bundles, TS-first, Deno API instead of Node, and built-in tooling.
  • Compared to Tauri: Tauri is Rust-based backend and system WebView only (CEF coming), while Deno Desktop is JS/TS-based and already ships CEF.
  • Other alternatives mentioned: Wails (Go), Dioxus/Blitz (Rust, custom engine), Sciter, Java/Qt/GTK, WASM-based approaches (Jumpjet).

Binary Size, Performance, and WebViews vs CEF

  • Some users report a “hello world” build at ~440 MB on Windows due to CEF; disappointment given expectations of sub-20 MB apps.
  • Maintainers indicate WebView + compression can reach ~15 MB, but the default/backend behavior is currently confusing and docs need correction.
  • System WebViews:
    • Pros: smaller binaries, reuse existing browser engine.
    • Cons: platform-specific bugs and age (especially WebKitGTK on Linux, older macOS Safari/WebView).
  • CEF:
    • Pros: predictable, evergreen rendering and APIs across OSes.
    • Cons: large binaries; questions about shared runtime/versioning and whether it meaningfully avoids “Electron-per-app browser” duplication.

Native vs Web UI and UX Consistency

  • Long, heated debate on whether “web UI slop” is acceptable versus native toolkits.
  • Arguments for web UIs:
    • Cross-platform consistency across OSes.
    • Huge developer familiarity with HTML/CSS/JS.
    • Native toolkits are fragmented, inconsistent, or painful (Win toolkits churn, GTK vs Qt, SwiftUI issues, Linux diversity).
  • Arguments for native UIs:
    • OS-level consistency and patterns aid usability, discoverability, and accessibility.
    • Many web/electron apps ignore platform conventions, produce “pixel soup,” and have weak a11y.
    • Some say users do complain about inconsistent behavior, even if they don’t use the term “native UI.”
  • General sense that OSs themselves have grown less consistent, which weakens the “must look native” argument for many developers.

Security, Permissions, and IPC Model

  • Questions about how Deno’s permission system applies to compiled desktop binaries.
    • Current docs: desktop apps don’t yet provide runtime permission prompts; permissions are baked in at compile time.
    • Some worry permission prompts would be misleading if you don’t control the bundled runtime.
  • Suggestions: run downloaded apps via a trusted local Deno (deno run) or in containers/VMs if you care about enforcing permissions.
  • IPC/architecture:
    • Backend and UI run in the same process (CEF) or a tightly coordinated process group (WebView), using in-process C ABI bindings rather than socket-based IPC.
    • This is seen as lower overhead than traditional Electron-style IPC; security implications are debated but not resolved in the thread.

Platform Support, Tooling, and Use Cases

  • Currently canary-only (Deno v2.9); some users hit early bugs (blank windows) and were asked to file issues.
  • Mobile (iOS/Android) support is “planned/being investigated” but not available; docs hint at future support.
  • Use cases discussed: internal tools, kiosk apps, packaging web games for Steam/desktop, shipping Deno-based CLIs with optional GUIs.
  • Some are enthusiastic about Deno overall (TS-first, integrated tooling, compilation, Node compat); others are weary of “yet another way to ship bloated JavaScript desktop apps.”