The short list
| Tool | What you ship | How it draws the UI | App languages | Phones |
|---|---|---|---|---|
| Electron | A package per operating system, each with its own Chromium and Node.js. | Its own Chromium. | JavaScript, HTML, CSS. | No. |
| Tauri | A bundle or installer per operating system, plus store packages for mobile. | The system WebView. | A web frontend, with Rust in the core. | Yes. |
| Wails | A binary per operating system and architecture, with an optional Windows installer. | The system WebView. | Go, with a web frontend. | Only in v3, marked experimental. |
| Neutralinojs | A prebuilt binary per operating system and CPU, all made by one build on any host, plus a resources file. | The system WebView. | JavaScript, HTML, CSS. | No. |
| Flutter | A build per operating system (.exe with DLLs, .app, or a Linux package). | Its own widgets and renderer, no WebView. | Dart. | Yes. |
| Qt | A per-platform build, static or with Qt's shared libraries. | Its own widgets or scene graph, no WebView by default. | C++, QML, or Python through Qt for Python. | Yes. |
| Krate | One .krate file for every desktop. | The Krate runtime draws a native window, with no browser or WebView. | Rust today, or built with AI in Krate Studio. | Not yet. |
Sources: Electron and Electron Forge, Tauri distribution and Tauri webviews, Wails, Neutralinojs and its distribution overview, Flutter desktop and supported platforms, Qt deployment and supported platforms.
What the user installs, and what the app can touch
| Tool | What the user installs | What limits the app |
|---|---|---|
| Electron | Your app's own package. | Renderers run in Chromium's sandbox by default since Electron 20; the main process is not sandboxed. |
| Tauri | Your app's own package; on Windows it relies on WebView2, which the installer can add on older systems. | Capabilities limit what the frontend can call; the Rust core has full access to system resources. |
| Wails | Your app's own binary; on Windows the WebView2 runtime is needed. | The v2 guides linked here describe Go methods bound to the frontend, not a permission model. |
| Neutralinojs | Your app's own binary and resources file. | An allow list and a block list in the config control which native APIs the frontend can call. |
| Flutter | Your app's own package; on Windows, the Visual C++ redistributables too. | macOS builds use App Sandbox by default, with entitlements for network, camera or files. |
| Qt | Your app, plus Qt's libraries unless the system already has them. | Permission APIs ask for operating-system consent, such as the microphone; no Qt-level sandbox is described. |
| Krate | The Krate runtime, once; then every .krate opens from its file. | The whole app starts with no file or network access; the person sees what it asks for and grants it before it opens. |
Sources: Electron sandbox, Tauri security and capabilities, Wails on Windows, Neutralinojs configuration, Flutter on macOS, Qt permissions.
How to choose
- You have a web app and want it on the desktop as it is: Electron, or Tauri, Wails or Neutralinojs if you want the system WebView instead of a bundled Chromium.
- You also need phones: Flutter, Qt or Tauri.
- You want one file for every desktop, sandboxed by default: Krate. It is the only option here where the same file opens on macOS, Windows and Linux.
- You write C++ or need a long-established widget toolkit: Qt.
Whichever you pick, a native installer still needs signing on macOS and Windows; the code signing page explains what that takes, and the distribution guide walks through both routes.
When to pick something else
Krate is young (0.5.4). Pick another tool when:
- you want to keep running an existing HTML, CSS and JavaScript codebase;
- you need iOS or Android today;
- you need a mature accessibility stack, enterprise widgets or a large plugin ecosystem;
- your team writes a language other than Rust and does not want Krate Studio to write the code;
The limits page lists what Krate cannot do yet.
Try Krate in five minutes
Download Krate, then open chart.krate, an 11,455-byte chart app, on any of the three systems. The quickstart shows how to inspect what it asks for before it runs.
Questions
Which Electron alternatives use the system WebView?
Tauri, Wails and Neutralinojs. Flutter and Qt draw their own interface, and Krate's runtime draws a native window with no browser or WebView.
Can I keep my web frontend?
With Tauri, Wails or Neutralinojs, yes. Krate does not run HTML; an Electron app moves to Krate by porting its interface to Krate's own interfaces, and krate port reports what that would take.
Which alternative ships one file for every operating system?
Krate. Neutralinojs builds every platform's binary in one step, but you still ship one binary per system; a .krate is the same file on macOS, Windows and Linux.
Do any of them sandbox apps by default?
Electron sandboxes renderers by default; Tauri limits what the frontend can call; Flutter's macOS builds use App Sandbox. In Krate the whole app starts with no file or network access until the person allows it.