/web-to-desktop-framework-comparison

This repository was made to create an objective comparison of multiple framework that grant us to "transform" our web app to desktop application formats.

Primary LanguageC++MIT LicenseMIT

Web to Desktop framework comparison

This repository was made to create an objective comparison of multiple framework that grant us to "transform" our web app to desktop application formats.

Table Of Content

Major characteristics

Electron NW.JS Tauri NodeGui Neutralino Flutter .Net MAUI
Github stars 102k 39k 37k 8k 6k 139k 15k
Forks 14k 4k 0.9k 0.2k 0.2k 22k 0.9k
Creation date 2013 2011 2019 2019 2018 2018 2020
Last Update 2021 2021 2021 2021 2021 2021 2021
Framework Language C++, JS, Objective-C, Python C++ Rust C++ C++ C, C++, Dart C#
Usage Language - Back JS, C++ JS, C++ Rust JS, C++ JS, C++ Dart C#
Usage Language - Front HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS Dart C#
License MIT MIT MIT MIT MIT BSD 3-Clause MIT
Developer Dependencies Node.js, Electron NPM Package Node.js, NW.JS SDK C++ Compiler, Node.js, Rustc, Cargo Cmake, make, Node.js, NodeGUI NPM Package Node.js, Neu NPM Package Flutter SDK, Visual Studio 2019 / Clang .Net SDK, Visual Studio (optionnal), WebView2 (optionnal), Xcode (optionnal)
User Dependencies None None None None None None None
npm/yarn module support ✔️ ✔️ ✔️
Engine Chromium Webkit, Chromium WRY (WebKitGTK for Linux, WebKit for MacOS, Webview2 for Windows) Qt WebkitGTK+ Flutter engine .NET MAUI

Operating systems support

Electron NW.JS Tauri NodeGui Neutralino Flutter .Net MAUI
Developement Environment Windows ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
MacOS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Linux ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Target Environment Windows ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
MacOS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Linux ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ Soon
Android Requested Soon1 ✔️ ✔️
iOS In progress1 ✔️ ✔️
tvOS ✔️
Web ✔️2 ✔️

1: https://github.com/tauri-apps/tauri#platforms
2: Uses modes to generate web apps

Benchmarks

See Benchmark.txt to get more informations about following data.

01 - Empty app

See source in benchmark/01-empty-app folder.

Electron NW.JS Tauri NodeGui Neutralino Flutter .Net MAUI
Build size Windows (x64) 180MB 264MB 2.6MB 83.6MB 2MB 18MB 108MB
Windows (x86) 160MB 237MB ? 83.6MB 2MB 18MB ?
Windows (ARM64) 193MB Requested ? ? ? ? ?
MacOS ? 265MB ? ? 2MB ? ?
Linux (x64) 181MB 328MB 5.8MB ? 2MB 56.8MB ?
Linux (x86) 171MB 329MB ? ? 2MB ? ?
Linux (ARM64) 196MB Requested ? ? ? ? ?
Linux (ARMv7l) 128MB Requested ? ? ? ? ?
Android - - ? ? ? ? ?
iOS - - ? ? ? ? ?
tvOS - - - ? ? ? ?
Web - - - ? ? ? ?
Memory Usage Windows ≈58MB ≈67MB (Debug) / ≈63MB (Release) ≈59MB ≈44MB then ≈39MB ≈2.7MB ≈36.2MB (Debug) / ≈23.7MB (Release) ≈61.6MB (Debug) / ≈60.4MB (Release)
MacOS ? ? ? ? ? ? ?
Linux ? ? ? ? ? ? ?
Android - - ? ? ? ? ?
iOS - - ? ? ? ? ?
tvOS - - - ? ? ? ?
Web - - - ? ? ? ?
Start duration Windows ≈131ms ≈21ms (Debug) ≈121ms ≈103ms (Debug) ? ≈5.6ms ?
MacOS ? ? ? ? ? ? ?
Linux ? ? ? ? ? ? ?
Android - - ? ? ? ? ?
iOS - - ? ? ? ? ?
tvOS - - - ? ? ? ?
Web - - - ? ? ? ?

02 - Empty app (Headless)

See source in benchmark/02-empty-app-headless folder.

Electron NW.JS Tauri NodeGui Neutralino Flutter .Net MAUI
Build size Windows (x64) 180MB 264MB 2.6MB 83.6MB 2MB N/A1 108MB
Windows (x86) 160MB 237MB ? 83.6MB 2MB N/A1 ?
Windows (ARM64) 193MB Requested ? ? ? N/A1 ?
MacOS ? 265MB ? ? ? N/A1 ?
Linux (x64) 181MB 328MB 5.8MB ? 2MB N/A1 ?
Linux (x86) 171MB 329MB ? ? 2MB N/A1 ?
Linux (ARM64) 196MB Requested ? ? ? N/A1 ?
Linux (ARMv7l) 128MB Requested ? ? ? N/A1 ?
Android - - ? ? ? N/A1 ?
iOS - - ? ? ? N/A1 ?
tvOS - - - ? ? N/A1 ?
Web - - - ? ? N/A1 ?
Memory Usage Windows ≈57MB ≈67MB (Debug) / ≈63MB (Release) ≈59MB ≈44MB then ≈39MB ≈2.7MB N/A1 ≈61.6MB (Debug) / ≈60.4MB (Release)
MacOS ? ? ? ? ? N/A1 ?
Linux ? ? ? ? ? N/A1 ?
Android - - ? ? ? N/A1 ?
iOS - - ? ? ? N/A1 ?
tvOS - - - ? ? N/A1 ?
Web - - - ? ? N/A1 ?
Start duration Windows ≈123ms ≈21ms (Debug) ≈121ms ≈105ms (Debug) ? N/A1 ?
MacOS ? ? ? ? ? N/A1 ?
Linux ? ? ? ? ? N/A1 ?
Android - - ? ? ? N/A1 ?
iOS - - ? ? ? N/A1 ?
tvOS - - - ? ? N/A1 ?
Web - - - ? ? N/A1 ?

1: Frameless mode not supported yet

Future content

TODO:

  • WebGL Support
  • Build constraints
  • Source code protection
  • Modules support (npm, native, etc.)

Benchmarks ideas:

  • BabylonJS scene
  • spreadsheet
  • IDE