Compare
Desktop app frameworks,
compared.
Bundle size, memory, ecosystem, and distribution for Electron, Tauri, Flutter, React Native, Wails, Qt, and Avalonia. Real numbers, no vendor bias.
Verdict
For most modern desktop apps in 2026, Electron and Tauri are the two serious choices. Electron for ecosystem depth and web-team familiarity, Tauri for installer size and memory. Flutter and React Native are worth considering only if you already ship mobile with them. Qt and Avalonia serve real niches but require an intentional decision to use.
Seven frameworks, side by side.
Bundle sizes and memory are typical for a small-to-medium app; your mileage will vary.
| Dimension | |||||||
|---|---|---|---|---|---|---|---|
| Language | JavaScript / TypeScript | Rust backend + any web frontend | Dart | JavaScript / TypeScript (plus C++, C#, Swift for native modules) | Go backend + any web frontend | C++, QML; also Python (PySide6), Rust (CXX-Qt) | C# / F# with XAML (AXAML) |
| License | MIT | MIT or Apache-2.0 | BSD 3-Clause | MIT | MIT | Dual: LGPLv3 or commercial (GPL for some modules) | MIT |
| First release | 2013 | 2019 | 2017 | 2016 | 2018 | 1995 | 2016 |
| Bundle size | 80–200 MB | 3–15 MB | 18–80 MB | Varies (no authoritative range) | 4–30 MB | 15–80 MB | 26–80 MB |
| Memory (idle) | 120–200 MB | 30–80 MB | 96–170 MB | Varies (no authoritative range) | 30–100 MB | 15–60 MB | 50–100 MB |
| OS support | macOS, Windows, Linux | macOS, Windows, Linux | macOS, Windows, Linux | macOS, Windows | macOS, Windows, Linux | macOS, Windows, Linux | macOS, Windows, Linux |
| Runtime | Bundles Chromium + Node.js per app | System webview via WRY: WebKit (macOS), WebView2 (Windows), WebKitGTK (Linux) | Custom self-drawn UI on Skia; Impeller rolling out to desktop targets in 2026 | Native platform widgets: WinUI/XAML on Windows, AppKit on macOS. JS runs in Hermes | System webview: WebView2 (Windows), WKWebView (macOS), WebKitGTK (Linux) | Custom native renderer: QPainter for Widgets, Qt Quick Scene Graph on Qt RHI (Metal, Vulkan, D3D) | Custom renderer on SkiaSharp; GPU-accelerated; own composition and input stack per platform |
- Language
- JavaScript / TypeScript
- License
- MIT
- First release
- 2013
- Bundle size
- 80–200 MB
- Memory (idle)
- 120–200 MB
- OS support
- macOS, Windows, Linux
- Runtime
- Bundles Chromium + Node.js per app
- Language
- Rust backend + any web frontend
- License
- MIT or Apache-2.0
- First release
- 2019
- Bundle size
- 3–15 MB
- Memory (idle)
- 30–80 MB
- OS support
- macOS, Windows, Linux
- Runtime
- System webview via WRY: WebKit (macOS), WebView2 (Windows), WebKitGTK (Linux)
- Language
- Dart
- License
- BSD 3-Clause
- First release
- 2017
- Bundle size
- 18–80 MB
- Memory (idle)
- 96–170 MB
- OS support
- macOS, Windows, Linux
- Runtime
- Custom self-drawn UI on Skia; Impeller rolling out to desktop targets in 2026
- Language
- JavaScript / TypeScript (plus C++, C#, Swift for native modules)
- License
- MIT
- First release
- 2016
- Bundle size
- Varies (no authoritative range)
- Memory (idle)
- Varies (no authoritative range)
- OS support
- macOS, Windows
- Runtime
- Native platform widgets: WinUI/XAML on Windows, AppKit on macOS. JS runs in Hermes
- Language
- Go backend + any web frontend
- License
- MIT
- First release
- 2018
- Bundle size
- 4–30 MB
- Memory (idle)
- 30–100 MB
- OS support
- macOS, Windows, Linux
- Runtime
- System webview: WebView2 (Windows), WKWebView (macOS), WebKitGTK (Linux)
- Language
- C++, QML; also Python (PySide6), Rust (CXX-Qt)
- License
- Dual: LGPLv3 or commercial (GPL for some modules)
- First release
- 1995
- Bundle size
- 15–80 MB
- Memory (idle)
- 15–60 MB
- OS support
- macOS, Windows, Linux
- Runtime
- Custom native renderer: QPainter for Widgets, Qt Quick Scene Graph on Qt RHI (Metal, Vulkan, D3D)
- Language
- C# / F# with XAML (AXAML)
- License
- MIT
- First release
- 2016
- Bundle size
- 26–80 MB
- Memory (idle)
- 50–100 MB
- OS support
- macOS, Windows, Linux
- Runtime
- Custom renderer on SkiaSharp; GPU-accelerated; own composition and input stack per platform
Which one for you?
A rough decision tree. Not a religion.
New paid desktop app in 2026 with a web team
→ Electron or Tauri
Prioritizing app size and security
→ Tauri
Already shipping React or Vue on mobile
→ React Native or Flutter
Go backend team
→ Wails
.NET or WPF background
→ Avalonia
Complex native UI, C++ shop
→ Qt
Ready to ship
whichever one you pick?
Prod0 handles the shipping infra for any of them. Same install, same release pipeline, same download and update story.