All Projects → Elanis → web-to-desktop-framework-comparison

Elanis / web-to-desktop-framework-comparison

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

Programming Languages

javascript
184084 projects - #8 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects
Vue
7211 projects
C#
18002 projects
typescript
32286 projects

Projects that are alternatives of or similar to web-to-desktop-framework-comparison

stepmania-song-manager
Download and update song packs for StepMania with ease.
Stars: ✭ 23 (-96.2%)
Mutual labels:  electron-app, electronjs
HandyBrowser
A Handshake enabled Chromium web browser and reference client; works with HSD and the HNSD light client. Use our example to build or integrate Handshake into any browser.
Stars: ✭ 101 (-83.31%)
Mutual labels:  nwjs, nwjs-application
Manta
🎉 Flexible invoicing desktop app with beautiful & customizable templates.
Stars: ✭ 5,160 (+752.89%)
Mutual labels:  electron-app, electronjs
electron-react-parcel-boilerplate
Boilerplate code to create basic, production ready Electron app using React, Parcel application bundler.
Stars: ✭ 48 (-92.07%)
Mutual labels:  electron-app, electronjs
Evaluation
Neutralinojs vs Electron vs Nw.js
Stars: ✭ 301 (-50.25%)
Mutual labels:  nwjs, electronjs
svelte-electron-boilerplate
🧬 Create a desktop app with this user-friendly Svelte boilerplate for electron
Stars: ✭ 70 (-88.43%)
Mutual labels:  electron-app, electronjs
Thismypc
ThisMyPC provides a neat web interface that can be used for browsing your desktop drives from any device in your browser itself. With the help of NodeJs, the file details are displayed in JSON format that can then we easily displayed in web browsers.
Stars: ✭ 128 (-78.84%)
Mutual labels:  electron-app, electronjs
DropPoint
Make drag-and-drop easier using DropPoint. Drag content without having to open side-by-side windows
Stars: ✭ 303 (-49.92%)
Mutual labels:  electron-app, electronjs
Revolut Emergency
👨‍🚀 Unofficial Revolut PC app – Freeze cards, list transactions, get notifications, contact support
Stars: ✭ 252 (-58.35%)
Mutual labels:  electron-app, electronjs
Altus
Desktop client for WhatsApp Web with themes, notifications and multiple account support
Stars: ✭ 203 (-66.45%)
Mutual labels:  electron-app, electronjs
memento-svelte-electron-typescript
Template to create a desktop app with Svelte, TailwindCSS, Electron and TypeScript (with electron-updater, electron-reload and electron-builder)
Stars: ✭ 27 (-95.54%)
Mutual labels:  electron-app, electronjs
Interactive Data Editor
A Software to interactively edit data in a graphical manner
Stars: ✭ 35 (-94.21%)
Mutual labels:  electron-app, electronjs
Darkorbit-client
Open source darkorbit client (cross-platform and with better performance)
Stars: ✭ 59 (-90.25%)
Mutual labels:  electron-app, electronjs
Tana
Bringing the Picture-in-Picture experience to the desktop.
Stars: ✭ 109 (-81.98%)
Mutual labels:  electron-app, electronjs
albumArtCreator
A simple tool to make it easy to create good looking album art
Stars: ✭ 26 (-95.7%)
Mutual labels:  electron-app, electronjs
Electron Playground
This is a project to quickly experiment and learn electron related APIs
Stars: ✭ 938 (+55.04%)
Mutual labels:  electron-app, electronjs
The-Wall
The Wall automatically changes desktop wallpaper based on the tags selected by the user
Stars: ✭ 48 (-92.07%)
Mutual labels:  electron-app, electronjs
electron-application
Example implementation of electronjs.
Stars: ✭ 11 (-98.18%)
Mutual labels:  electron-app, electronjs
Space
A real time chat app for developers built using React, Redux, Electron and Firebase
Stars: ✭ 161 (-73.39%)
Mutual labels:  electron-app, electronjs
Toby
A YouTube player for the desktop
Stars: ✭ 136 (-77.52%)
Mutual labels:  nwjs, electron-app

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 Wails Flutter .Net MAUI
Github stars 105.3k 39.4k 56.6k 8.1k 6.3k 13.6k 148.2k 18k
Forks 14.2k 4k 1.5k 0.3k 0.3k 0.6k 24.2k 1.2k
Creation date 2013 2011 2019 2019 2018 2019 2018 2020
Last Update 1/2023 1/2023 1/2023 1/2023 1/2023 1/2023 1/2023 1/2023
Framework Language C++, JS, Objective-C, Python C++ Rust C++ C++ Go C, C++, Dart C#
Usage Language - Back JS, C++ JS, C++ Rust JS, C++ JS, C++ Go Dart C#
Usage Language - Front HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS HTML, CSS, JS Dart C#
License MIT 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 Go 1.18+, Node 15+, Wails Flutter SDK, Visual Studio 2019 / Clang .Net SDK, Visual Studio (optional), WebView2 (optional), Xcode (optional)
User Dependencies None None None None None None None None
Dependencies / modules support npm & node.js native addons npm & node.js native addons cargo (back), npm (front) npm & node.js native addons Gomod (back), npm (front) pub.dev NuGet
Engine Chromium Webkit, Chromium WRY (WebKitGTK for Linux, WebKit for MacOS, Webview2 for Windows) Qt WebkitGTK+ Webkit Flutter engine .NET MAUI
Integrated updater ? Official Community Official No Official Planned No, but there are community solutions No
Automated Tests Standard node.js tests (back-end) or Webdriver/Playwright (UI) Standard node.js tests (back-end) or Webdriver(UI) Cargo (back-end) or Webdriver (UI) ? ? ? Integrated Standard C# tests (back-end), no official solution for UI

Operating systems support

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI
Developement Environment Windows ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
MacOS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Linux ✔️1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Target Environment Windows ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
MacOS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Linux ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ Soon
Android Requested Soon2 ✔️ ✔️
iOS In progress2 ✔️ ✔️
tvOS ✔️
Web ✔️3 ✔️

1: Linux 32 Bit support dropped
2: https://github.com/tauri-apps/tauri#platforms
3: Uses modes to generate web apps

Benchmarks

See benchmarks.json to get more informations about following data.

Note: These benchmarks are done on Github CI, there are measures to have measurements more accurates (e.g. multiple runs), but it will never exactly be accurate, as it totally depends on system load and resources. You should read these tables as comparision between frameworks on a same OS/Arch/App with a margin of error.

01-empty-app

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

Build size

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈230MB ≈334MB ≈1MB ≈171MB ≈2MB ≈8MB ? N/A1 N/A2
Windows (x86) ≈206MB ≈301MB ? ? ? ? ? N/A1 N/A2
Windows (ARM64) ≈230MB Requested ? ? ? ? ? N/A1 N/A2
MacOS (x64) ≈374MB ≈508MB ≈3MB ? ≈1MB ≈7MB ? N/A1 N/A2
MacOS (arm64) ≈351MB ? ? ? ? ? ? N/A1 N/A2
Linux (x64) ≈236MB ≈442MB ≈3MB ≈67MB ≈1MB ≈6MB ? N/A1 N/A2
Linux (x86) ? ≈441MB ? ? ? ? ? N/A1 N/A2
Linux (ARMv7l) ≈174MB Requested ? ? ? ? ? N/A1 N/A2
Linux (ARM64) ≈241MB Requested ? ? ≈1MB ? ? N/A1 N/A2

Build time

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈5006ms ≈23590ms ≈361335ms ≈15813ms ≈866ms ≈11459ms ? N/A1 N/A2
Windows (x86) ≈5006ms ≈23590ms ? ? ? ? ? N/A1 N/A2
Windows (ARM64) ≈5006ms Requested ? ? ? ? ? N/A1 N/A2
MacOS (x64) ≈7128ms ≈23590ms ≈220676ms ? ≈971ms ≈71213ms ? N/A1 N/A2
MacOS (arm64) ≈7128ms ? ? ? ? ? ? N/A1 N/A2
Linux (x64) ≈3280ms ≈23590ms ≈367377ms ≈11843ms ≈971ms ≈39095ms ? N/A1 N/A2
Linux (x86) ? ≈23590ms ? ? ? ? ? N/A1 N/A2
Linux (ARMv7l) ≈3280ms Requested ? ? ? ? ? N/A1 N/A2
Linux (ARM64) ≈3280ms Requested ? ? ≈971ms ? ? N/A1 N/A2

Memory Usage

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈66MB (Debug) => ≈84MB (Release) ≈92MB (Debug) => ≈52MB (Release) ≈49MB (Debug) => ≈24MB (Release) ≈116MB (Debug) ≈55MB (Debug) ≈39MB (Debug) => ≈27MB (Release) ≈258MB (Debug) N/A1 N/A2
MacOS (x64) ≈64MB (Debug) => ≈63MB (Release) ≈103MB (Debug) => ≈81MB (Release) ≈50MB (Debug) => ≈29MB (Release) ≈109MB (Debug) ≈80MB (Debug) => ≈28MB (Release) ≈65MB (Debug) => ≈32MB (Release) ≈206MB (Debug) N/A1 N/A2
Linux (x64) ≈154MB (Debug) => ≈152MB (Release) ≈91MB (Debug) ≈101MB (Debug) => ≈72MB (Release) ≈156MB (Debug) ≈198MB (Debug) => ≈213MB (Release) ≈210MB (Debug) => ≈188MB (Release) ≈371MB (Debug) N/A1 N/A2

Start duration

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈344ms (Release) ≈786ms (Release) ≈443ms (Release) ? ? ? ? N/A1 N/A2
MacOS (x64) ≈2017ms (Debug) => ≈946ms (Release) ≈1609ms (Release) ≈5806ms (Debug) => ≈787ms (Release) ? ≈2495ms (Debug) => ≈864ms (Release) ≈9720ms (Debug) => ≈839ms (Release) ? N/A1 N/A2
Linux (x64) ≈803ms (Debug) => ≈415ms (Release) ? ≈41117ms (Debug) ? ≈1887ms (Debug) => ≈555ms (Release) ≈5244ms (Debug) => ≈455ms (Release) ? N/A1 N/A2

1: Benchmark WIP
2: Benchmark WIP

02-empty-app-frameless

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

Build size

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈230MB ≈334MB ≈1MB ≈171MB ≈2MB ≈8MB N/A1 N/A2 N/A3
Windows (x86) ≈206MB ≈301MB ? ? ? ? N/A1 N/A2 N/A3
Windows (ARM64) ≈230MB Requested ? ? ? ? N/A1 N/A2 N/A3
MacOS (x64) ≈374MB ≈508MB ≈3MB ? ≈1MB ≈7MB N/A1 N/A2 N/A3
MacOS (arm64) ≈351MB ? ? ? ? ? N/A1 N/A2 N/A3
Linux (x64) ≈236MB ≈442MB ≈3MB ≈67MB ≈1MB ≈6MB N/A1 N/A2 N/A3
Linux (x86) ? ≈441MB ? ? ? ? N/A1 N/A2 N/A3
Linux (ARMv7l) ≈174MB Requested ? ? ? ? N/A1 N/A2 N/A3
Linux (ARM64) ≈241MB Requested ? ? ≈1MB ? N/A1 N/A2 N/A3

Build time

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈4884ms ≈31401ms ≈337206ms ≈13978ms ≈643ms ≈9540ms N/A1 N/A2 N/A3
Windows (x86) ≈4884ms ≈31401ms ? ? ? ? N/A1 N/A2 N/A3
Windows (ARM64) ≈4884ms Requested ? ? ? ? N/A1 N/A2 N/A3
MacOS (x64) ≈5280ms ≈31401ms ≈215231ms ? ≈861ms ≈71427ms N/A1 N/A2 N/A3
MacOS (arm64) ≈5280ms ? ? ? ? ? N/A1 N/A2 N/A3
Linux (x64) ≈3050ms ≈31401ms ≈295171ms ≈9518ms ≈861ms ≈32179ms N/A1 N/A2 N/A3
Linux (x86) ? ≈31401ms ? ? ? ? N/A1 N/A2 N/A3
Linux (ARMv7l) ≈3050ms Requested ? ? ? ? N/A1 N/A2 N/A3
Linux (ARM64) ≈3050ms Requested ? ? ≈861ms ? N/A1 N/A2 N/A3

Memory Usage

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈64MB (Debug) => ≈82MB (Release) ≈98MB (Debug) => ≈43MB (Release) ≈44MB (Debug) => ≈23MB (Release) ≈96MB (Debug) ≈56MB (Debug) ≈45MB (Debug) => ≈27MB (Release) N/A1 N/A2 N/A3
MacOS (x64) ≈65MB (Debug) => ≈63MB (Release) ≈87MB (Debug) => ≈82MB (Release) ≈50MB (Debug) => ≈27MB (Release) ≈103MB (Debug) ≈71MB (Debug) => ≈27MB (Release) ≈65MB (Debug) => ≈30MB (Release) N/A1 N/A2 N/A3
Linux (x64) ≈150MB (Debug) => ≈150MB (Release) ≈119MB (Debug) ≈110MB (Debug) => ≈72MB (Release) ≈154MB (Debug) ≈202MB (Debug) => ≈216MB (Release) ≈212MB (Debug) => ≈188MB (Release) N/A1 N/A2 N/A3

Start duration

Electron NW.JS Tauri NodeGui Neutralino Wails Flutter .Net MAUI .Net MAUI w/ Vue
Windows (x64) ≈319ms (Release) ≈688ms (Release) ≈388ms (Release) ? ? ? N/A1 N/A2 N/A3
MacOS (x64) ≈2162ms (Debug) => ≈837ms (Release) ≈1710ms (Release) ≈5299ms (Debug) => ≈796ms (Release) ? ≈2755ms (Debug) => ≈901ms (Release) ≈8975ms (Debug) => ≈823ms (Release) N/A1 N/A2 N/A3
Linux (x64) ≈683ms (Debug) => ≈330ms (Release) ? ≈2906ms (Debug) ? ≈1455ms (Debug) => ≈438ms (Release) ≈4291ms (Debug) => ≈363ms (Release) N/A1 N/A2 N/A3

1: Frameless mode not supported yet
2: Frameless mode not working
3: Frameless mode not working

Future content

See Issues and Pull requests. You can participate by proposing new issues, of filling them !

Contributors

List of contributors to this repository

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].