Comparison with other tools
ende desktop is one of several ways to ship desktop apps with web
technologies. Here is how it compares to the alternatives.
At a glance
| Electron | Electrobun | Tauri | Dioxus | ende desktop |
|
|---|---|---|---|---|---|
| Language | JS/TS (Node.js) | JS/TS (Bun) | Rust + web frontend | Rust | JS/TS (Ende) |
| Web engine | Bundled Chromium | System WebView | System WebView | System WebView | Bundled CEF or WebView |
| Consistent rendering | Yes | No | No | No | Yes (CEF) |
| Process model | Multi-process | Multi-process | Multi-process | Single process | Multi-thread (CEF) / process group (WebView) |
| Backend ↔ UI | IPC | IPC | IPC | Native Rust | In-process channels |
| App size | ~100 MB+ | ~61 MB | ~2–10 MB | ~5 MB | ~40 MB / ~150 MB (CEF) |
| HMR | No | Yes | Yes (Vite-based) | Yes (dx serve) |
Yes |
| Built-in auto-update | Full binary | bsdiff | Plugin | None | bsdiff |
| Built-in installers | Yes | No | Yes | No | Partial (DMG, AppImage) |
| Cross-compile | Yes (electron-builder) | No (needs target OS) | No (needs target OS) | No | Yes (--target) |
| macOS / Windows / Linux | All three | All three | All three | All three | All three |
| iOS / Android | No | No | Yes | Yes | Not yet |
What ende desktop is good at
Cross-compile from one machine. Same as ende compile --target. Tauri and
Dioxus need the target platform locally to build (their toolchain includes Rust,
which has to compile for the target). Electrobun runs on macOS, Windows, and
Linux, but builds each app on its own target platform. Electron supports
cross-platform builds via electron-builder, but needs Node and platform-specific
signing tools per target.
A choice of backend. Electron bundles both Chromium and Node, but is
massive. Tauri and Dioxus are small but have no JS runtime. ende desktop
defaults to the OS webview (small, like Tauri) with the Ende runtime behind it,
and can bundle Chromium (CEF) when you need consistent rendering.
In-process bindings instead of IPC. Electron / Electrobun / Tauri all use
socket-based IPC between the backend and the UI. Calls serialize, cross a
process boundary, and deserialize. ende desktop runs the Ende runtime and the
rendering backend inside the same process, talking over in-process channels.
Values are still encoded as JSON across the call, but there is no cross-process
round-trip.
Built-in auto-update with binary diffs. Electron ships full binaries.
Tauri's update plugin downloads full builds. Electrobun and ende desktop both
do bsdiff patches, but ende desktop integrates the update flow with the
runtime: no separate updater binary, automatic rollback, manifest polling all in
one API.
What other tools are good at
Electron: ecosystem. Years of tooling, packaging, and signing machinery. Every major editor and chat app uses it. If you need mature plugin ecosystems (Spectron, electron-builder, autoUpdater abstractions), Electron has them.
Tauri: small footprint and mobile. Tauri's binaries are an order of
magnitude smaller than ende desktop (or Electron) and Tauri 2 supports iOS and
Android. If size or mobile is the priority, Tauri wins.
Electrobun: fast iteration in the Bun ecosystem. Electrobun has good start-up speed and HMR, and officially supports macOS, Windows, and Linux (Ubuntu). If you work in the Bun ecosystem, it is worth a look.
Dioxus: Rust-only. No JS runtime at all. If you are writing everything in Rust and want a unified codebase, Dioxus is a good pick.
What ende desktop doesn't have yet
These are documented on the relevant pages of this section, but worth listing in one place:
- One-step notarization. macOS bundles are code-signed (ad-hoc by default,
or with a configured Developer ID identity), but notarization is still a
separate
notarytoolstep. See Distribution. - Windows MSI and Linux
.deb/.rpminstaller outputs. - Auto-update on Windows. Binary-diff auto-update applies on macOS and Linux; Windows is not yet supported.
- iOS / Android targets.
- Native clipboard and secure-storage APIs (use the Web
ClipboardAPI from the webview side until they land). Native notifications and system tray / dock APIs are available. - Runtime permissions for desktop apps (a permission prompt on every filesystem / network access, i.e. Ende's permission system applied to desktop sandboxing).
- Shared CEF runtime across apps. Every app currently bundles its own CEF copy. A managed shared runtime would drop binary sizes to a few MB per app. On the roadmap.
When to pick ende desktop
- Your codebase is JavaScript / TypeScript and you do not want to write Rust.
- You want consistent rendering across platforms and are OK with the binary size that comes with bundling Chromium.
- You want cross-compilation from one machine.
- You want auto-update built in, not bolted on.
When to pick something else
- Tauri if binary size is non-negotiable and you want mobile.
- Electron if your team's existing tooling, signing, and CI already target Electron.
- Dioxus if you are writing Rust top to bottom.
- Electrobun if you want to live on the Bun side.