Awesome
<!-- markdownlint-configure-file { "MD013": { "code_blocks": false, "tables": false }, "MD033": false, "MD041": false } -->👓 Awesome <img src="img/electron-logo.svg" width="40"/> Electron.js Alternatives
<img src="img/electron-logo.svg" align="right" width="100">
A curated list of awesome Electron alternatives.
Electron is an open-source framework for creating desktop apps using web technologies as JavaScript, HTML and CSS. It combines the Chromium rendering engine and the Node.js runtime.
There are a number of good reasons to avoid Electron or consider something other than Electron:
- Large size
- Resource (RAM) hogging
- Source code protection
- We would already have a web component in the system that can be used.
- Electron apps cannot be submitted to the Apple store
- Minimal resources
- Development platform like nodecode as Kodular, lowcode as Outsystems, database as a service as Astra DB, backend as service, mobile as a service, frontend as a service as Figma, banking as a service ...
- visual programming paradigm (this includes solutions or technologies like development platform, blockly, serverless, dbdiagram and programming language as elm, python, v ...)
- It is possible to develop games with Electron-js, but for good game development it is not recommended
- create data analysis and statistics with js libraries and electron-js for dashboards, however it is also not recommended
👓 Alternatives to the Electron.js ⚛
C#(.Net)
- Orleans: Cloud Native application framework for .NET
- Avalonia: Avalonia UI creates pixel-perfect, native, create Multi-Platform Apps with .NET
- Uno: Pixel-Perfect Multi-Platform Applications with C# and WinUI.
- Chromely: Build HTML Desktop Apps on .NET/.NET Core/.NET 5 using native GUI, HTML5, JavaScript, CSS.
- SpiderEye: Cross platform .Net Core applications with a webview UI.
- Photino.NET: Photino uses the OSs built-in WebKit-based browser control for Windows, macOS and Linux. Photino is the lightest cross-platform framework. Compared to Electron, a Photino app is up to 110 times smaller! And it uses far less system memory too!.
- foton: Prototype for an Electron alternative written in C# by Integrative Software LLC and contributors.
C/C++
- Qt: Qt (pronounced "cute") is free and open-source cross-platform software for creating graphical user interfaces as well as cross-platform applications.
- wxWidgets: wxWidgets is a C++ library that lets developers create applications for Windows, macOS, Linux and other platforms with a single code base. It has popular language bindings for Python, Ruby, Lua, Perl and several other languages.
- sciter: Embeddable HTML/CSS/JavaScript engine for modern UI development.
- Ultralight: Ultra-fast, ultra-light, standards-compliant HTML renderer for applications and games. Based on WebKit— supports most modern HTML5, CSS, and JavaScript features while still remaining light and configurable.
- Webview: Tiny cross-platform webview library which uses Cocoa/WebKit on macOS, gtk-webkit2 on Linux and Edge on Windows 10.
- Molybden: An SDK for building modern and secure cross-desktop apps with HTML/CSS/JavaScript GUI.
- Saucer: 🛸 Next-gen desktop apps with web-frontend in C++.
- tiny: This is a tiny alternative to electron.
- UnityHub: A native alternative to the heavy Electron Unity Hub, written in C++. UnityHubNative is a lightweight C++ / wxWidgets alternative to the unnecessarily heavy official Unity Hub, built using wxWidgets. This means that, instead of using heavy web components like the official Electron hub, it uses native GUI components on all platforms. It launches many times faster, uses far less memory and CPU, and is a fraction of the total size of the offical Unity Hub.
Crystal
- Crystal Webview: Crystal language bindings for webview, a tiny cross-platform webview library which uses Cocoa/WebKit on macOS, gtk-webkit2 on Linux and Edge on Windows 10).
Dart
- flutter: Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.
Delphi
- FMX (FireMonkey): The FireMonkey® framework is the app development and runtime platform behind RAD Studio, Delphi and C++Builder. FireMonkey is designed for teams building multi-device, true native apps for Windows, OS X, Android and iOS, and getting them to app stores and enterprises fast.
Elm
- Elm UI: UI library for making web applications with Elm.
Go
- lorca: Build cross-platform modern desktop apps in Go + HTML5.
- wails: Create beautiful applications using Go.
- muon: Lightweight alternative to Electron written in Golang in about ~300 LoC, using Ultralight instead of Chromium.
Guile
- guile-pstk: PS/TK version fixed to work fine on modern GNU Guile.
- guile-webview: Wrapper for using libwebview from GNU Guile.
Haskell
- Fudgets: Fudgets is primarily a Graphical User Interface Toolkit for Haskell and the X Windows system. Fudgets also makes it easy to create client-server applications that communicate via the Internet. It runs on Unix but not on Windows.
- Keera Hails: Keera Hails is a library to connect values that change with one another using rules or relations. Keera Hails is back-end agnostic and not exclusive to GUIs; it has backends for Gtk+ but also hardware (wiimotes), files, sockets and FRP-driven networks (using Yampa), and experimental backends for wx, qt, HTML DOM (using GHCJS) and Android's widget toolkit. It has been used commercially in production in medium-sized applications (10K-20K locs).
- Threepenny-gui: Threepenny-gui is a GUI framework that uses the web browser as a display. It supports Functional Reactive Programming.
- webviewhs: webviewhs is a Haskell binding to the webview library created by Serge Zaitsev. This binding allows the creation of rich web-based UI experiences wrapped up in the powerful, type-safe embrace of Haskell. To render the UI it uses Cocoa/WebKit on macOS, gtk-webkit2 on Linux and MSHTML (IE10/11) on Windows.
- Monomer: Monomer is an easy to use, cross platform, GUI library for writing native Haskell applications. It provides a framework similar to the Elm Architecture, allowing the creation of GUIs using an extensible set of widgets with pure Haskell.
Java
- Swing: Swing is a GUI widget toolkit for Java.[1] It is part of Oracle's Java Foundation Classes (JFC) – an API for providing a graphical user interface (GUI) for Java programs.
- OpenJFX or JavaFX: JavaFX is an open source, next generation client application platform for desktop, mobile and embedded systems built on Java. It is a collaborative effort by many individuals and companies with the goal of producing a modern, efficient, and fully featured toolkit for developing rich client applications.
- webview: Template project for Android Studio that allows you to create an android webview application in minutes. You can use it to create a simple app for your website or as a starting point for your HTML5 based android app.
Javascript/TypeScript
- Sciter.JS: Is a 5MB HTML/CSS/JS (ES6) runtime aimed as a direct Electron replacement.
- electrino: Desktop runtime for apps built on web technologies, using the system's own web browser engine.
- nidium: A powerful rendering engine for modern mobile applications. Unlike many solution, nidium doesn't rely on webviews or native OS widgets. Instead, it uses its own high-performance rendering engine to draw custom widgets.
- modern-hta: Run modern code in an HTML Application.
- React Native Desktop Cross-platform React Native Desktop port based on Qt framework.
- NodeGui: Powered by Qt5, NodeGui-React, Vue NodeGui, Svelte-NodeGui
- Astrodon: Desktop App Framework (not there yet!) for Deno, based on Tauri currently unmaintained
- webview_deno: 🌐 Deno bindings for webview, a tiny library for creating web-based desktop GUIs
- DeskGap: bundles a Node.js runtime and leaves the HTML rendering to the operating system‘s webview).
- NW.js: Similar to electron, provides Source code protection).
- Neutralinojs: chromium module is replaced with either user’s web browser or built-in browser component. Node run-time is replaced with a lightweight web server which exposes native OS functionality).
- Proton Native: does the same to desktop that React Native did to mobile, based on libui-node.
- Graffiti: HTML/CSS engine for node.js and deno.
- Gluon Uses normal system installed browsers (not webviews) and NodeJS, also supports Firefox.
- Avernakis Nodejs addon for Avernakis SDK, use TypeScript to develop modern desktop app with powerful UI kits.
- WelsonJS: Build Windows desktop apps with JavaScript, HTML, and CSS based on WSH/HTA or GTK.
- Vuido: Creating native desktop applications based on Vue.js, based on libui-node
- quasar: Vue.js based framework, which lets web developer to quickly create responsive websites/apps.
- ProtonShell: Lightweight shell for websites, simple web applications, built on the Microsoft Edge system browser.
- Electrobun: Electrobun aims to be a complete solution-in-a-box for building, updating, and shipping ultra-fast, tiny, and cross-platform desktop applications written in Typescript. Under the hood, it uses bun to execute the main process and to bundle webview typescript, and has native bindings written in zig.
Julia
- MouseTrap: GUI Engine made for Julia
Kotlin
- Compose Multiplatform: Declarative framework for sharing UIs across multiple platforms. Based on Kotlin and Jetpack Compose. Developed by JetBrains and open-source contributors.
Nim
- nimx: Desktop, Mobile & Web GUI framework in Nim.
- NiGui: A cross-platform, desktop GUI toolkit.
- ui: Wrapper for libui. Beginnings of what might become Nim's official UI library.
- iup: Wrapper for IUP. Beginnings of what might become Nim's official UI library.
- SDL2: Official wrapper for SDL 2.x.
- SDL2: A wrapper for SDL 2.
- Owlkettle: Declarative user interface framework based on GTK.
- wNim: Nim's Windows GUI Framework.
- gintro: High-level GObject-Introspection based GTK3/GTK4 bindings for Nim.
- nimqml: Qt QML bindings for the Nim programming language.
- Neel: A library for making Electron-like HTML/JS GUI apps.
- nimview: A Nim/Webview based helper to create desktop/server applications with Nim and HTML/CSS.
- webgui: Web technologies based cross-platform GUI Framework with a dark theme.
- fidget: Figma based UI library for Nim, with HTML and OpenGL backends.
- nsciter: High-level and low-level Nim wrapper for https://sciter.com.
- imgui: ImGui bindings for Nim via cimgui.
- nimAntTweakBar: Wrapper for AntTweakBar.
- ggplotnim: A port of ggplot2 for Nim.
- plotly: A plotly wrapper for Nim.
- graph: A basic plotting library in Nim.
- nimetry: Simple plotting in pure Nim.
- nimgraphviz: A Nim library for making graphs with GraphViz and DOT.
No-code\Low-code
- Kodular: Much more than a modern app creator without coding
- Bubble: Design, develop, and launch production-grade applications without code. It doesn't matter if you’re starting out or on an enterprise team — Bubble is for anyone.
Perl
- Gtk: Gtk3 - Perl interface to the 3.x series of the gtk+ toolkit.
- Prima: Prima - a perl graphic toolkit.
- Perl Executing Browser: Perl Executing Browser (PEB) is an HTML user interface for Perl 5 desktop applications. It is a C++ Qt 5 application running local Perl scripts as child processes without server. Inspired by Electron and NW.js, PEB is another reuse of web technologies in desktop applications with Perl doing the heavy lifting instead of Node.js.
- Tk: Perl/Tk is an extension for writing Perl programs with a Graphical User Interface (GUI) on both Unix and Windows 95/NT. Tk was originally developed as an extension to the Tcl language, for use with the X Window System on Unix.
- Tkx: Tkx - Yet another Tk interface.
- Wx: The Wx module is a wrapper for the wxWidgets (formerly known as wxWindows) GUI toolkit.
PHP
- NativePHP: NativePHP is a new framework for rapidly building rich, native desktop applications using PHP, HTML, CSS, Javascript.
- PHP TkUI: Build native desktop applications using PHP and Tcl/Tk.
Python
- fbs: Python and Qt are great for writing lightweight desktop apps. But packaging, installers, code signing and automatic updates are a pain. fbs solves these problems and saves you months of development.
- PyQt: PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing.
- PySide: PySide is a Python binding of the cross-platform GUI toolkit Qt.
- Kivy: The Open Source Python App Development Framework. Build and distribute beautiful Python cross-platform GUI apps with ease. Kivy runs on Android, iOS, Linux, macOS and Windows.
- PyGUI: An project to develop a cross-platform pythonic GUI API.
- Flet: The fastest way to build Flutter apps in Python.
- Eel A little Python library for making simple Electron-like HTML/JS GUI apps.
- wxPython: Cross-platform GUI toolkit for the Python language. With wxPython software developers can create truly native user interfaces for their Python applications, that run with little or no modifications on Windows, Macs and Linux or other unix-like systems.
- Tkinter: The Tkinter module or "Tk interface" is the standard Python interface to the Tk GUI toolkit. Both Tk and Tkinter are available on most Unix platforms, as well as on Windows systems. Tk itself is not part of Python; it is maintained at ActiveState.
- pywebview: Build GUI for your Python program with JavaScript, HTML, and CSS.
- Pysimplegui: PySimpleGUI creates graphical user interfaces (GUIs) using Python, quickly and easily!.
- NiceGUI: NiceGUI is an approachable web-based UI toolkit for Python that can self-host with auto-refresh as you update the source, with a rich set of UI widgets.
- Toga: Toga is a Python native, OS native, cross-platform GUI toolkit. Toga consists of a library of base components with a shared interface to simplify platform-agnostic GUI development.
R
- gWidgets: API for writing graphical user interfaces (GUIs) within R. The package is cross-platform (Linux/Mac/Windows) and cross-toolkit (RGtk2, qtbase, tcltk).
- fGui: Rapidly create a GUI interface for a function you created by automatically creating widgets for arguments of the function. Automatically parses help routines for context-sensitive help to these arguments. The interface essentially a wrapper to some Tcl/Tk routines to both simplify and facilitate GUI creation. More advanced Tcl/Tk routines/GUI objects can be incorporated into the interface for greater customization for the more experienced.
- Shiny: Easy web apps for data science without the compromises
Reason
- revery-ui: Fast, native, cross-platform UI.
Rebol
- Native Gui: The primary objectives of the R3 GUI have been clearly stated in prior documents. However, to be sure we're all in sync: the GUI is designed to make simple apps simple, and sophisticated apps possible. That is, you really can write a useful app in just a few lines of GUI dialect, and a full scale app may require just a few dozen pages.
Red
- Drawing: Draw is a dialect (DSL) of Red language that provides a simple declarative way to specify 2D drawing operations. Such operations are expressed as lists of ordered commands (using blocks of values), which can be freely constructed and changed at run-time.
- Native GUI: The Red/View (or just View) component is a graphic system for the Red programming language.
- Layout: VID stands for Visual Interface Dialect. Its purpose is to provide a simple dialect (DSL) for describing graphic user interfaces on top of the Red View engine.
Ruby
- Glimmer: A Domain-Specific Language & metaframework for building GUI apps using Ruby, with bindings for various GUI libraries and also Web.
- qtbindings: Ruby bindings for Qt.
- tk: Ruby bindings for Tcl/Tk.
- ruby-gnome: Ruby bindings from GNOME/GTK3.
- JRubyFX: JRuby wrapper on JavaFX.
- traveling-ruby: Runtime to bundle Ruby applications into executables.
Rust
- gtk-rs: Rust bindings for GTK.
- tauri: Build smaller, faster, and more secure desktop applications with a web frontend.
- GPUI: A fast, productive UI framework for Rust from the creators of Zed.
V
- ui: Isaiah's cross-platform GUI library for V. Inspired by the syntax of Java's Swing.
- mui: A Cross-Platform UI Library in vlang
- viup: A V wrapper for the cross-platform UI library, IUP.
- vi-v: Vi-v is a visual scripting UI for vlang. It allows anyone to create their own programs easily without an extensive programming skill.
- vxui: vxui is a cross-platform desktop UI framework which use your browser as screen, and use V lang as backend. It reply on Websocket, no http/https, no web server!
Visual programming
- Blockly Blockly is a visual programming editor by Google that uses drag-and-drop blocks. It's the engine that powers the most popular coding education programs world.
📖 Related work
- Livecode: Lightweight language with [native GUI], integrated IDE, and visual interface builder.
- Positron: List of electron apps so I can avoid them, and some alternatives to use instead
- Awesome Alternatives to Electron Apps: Electron is an application platform which spreads like a cancer in software development world making your immensely powerful computer feel slow and laggy. Sometimes apps made in Electron are useful, though. This list contains good alternatives to an memory hungry eco-unfriendly Electron software.
- Comparison of Browser Engines: A browser engine (also known as a layout engine or rendering engine) is a core software component of every major web browser. The primary job of a browser engine is to transform HTML documents and other resources of a web page into an interactive visual representation on a user's device. Besides "browser engine", two other related terms are commonly used: "layout engine" and "rendering engine". In theory, layout and rendering (or "painting") could be handled by different engines. In practice, however, these components are tightly coupled and rarely encountered on their own outside of the browser engine.
- Web To Desktop Framework Comparasion: This repository was made to create an objective comparison of multiple framework that grant us to "transform" our web app to desktop application formats.
- Awesome-electronjs-hacking: A curated list of awesome resources about Electron.js (in)security
- Qt: Qt (pronounced "cute") is free and open-source cross-platform software for creating graphical user interfaces as well as cross-platform applications
- jscherer92/Quark: Create Applications with browser technologies using the native engine in your OS.
- Xojo: Build Native, Cross-Platform Apps.Rapid application development for Desktop, Web, Mobile & Raspberry Pi.
- LambdaNative: LambdaNative is freely available under the BSD license, extensively documented, and hosted on GitHub. LambdaNative builds native applications on a wide range of platforms including iOS, Android, Blackberry, OS X, Linux, Windows, OpenBSD, NetBSD, FreeBSD and OpenWrt, from a single source code.
- REVERY: Fast, native, cross-platform UI.
- 8th: 8th lets you use your preferred platform to write and test your code. With one click, you generate the executables for any platform 8th supports, from any platform it supports!.
- CEF: Chromium Embedded Framework (CEF). A simple framework for embedding Chromium-based browsers in other applications.
- yue/yue: A library for creating native cross-platform GUI apps.
- Godot: Godot Engine – Multi-platform 2D and 3D game engine.
- HaxeUI Haxe based cross platform (desktop, mobile, web) UI framework
- HTA/HTML Application: HTML Application or "HTA" is a Microsoft Windows program whose source code consists of HTML, Dynamic HTML, and one or more scripting languages supported by Internet Explorer, such as VBScript or JScript. The HTML is used to generate the user interface, and the scripting language is used for the program logic. An HTA executes without the constraints of the internet browser security model; in fact, it executes as a "fully trusted" application.
📚 Notes
Consider Progressive Web Apps PWA, if your app doesn't require any platform interactions.
"Progressive Web Apps might not be able to replace every kind of native application, but they can be viable replacements for some apps written with the Electron web wrapper technology". For more info: https://www.androidpolice.com/2020/05/27/google-chats-desktop-application-is-now-a-progressive-web-app/
See this: Blazor, ElectronCGI.
❤ Contributions
awesome-electron-alternatives is open to contributions, but I recommend creating an issue or replying in a comment to let me know what you are working on first that way we don't overwrite each other.
Please read CONTRIBUTING.md for details on this project. If you have any questions, feel free to open an issue. And feel free to improve this list by contributing!
📑 License
- Inspired by the awesome list.
- Electron-alternatives is licensed with MIT by sudhakar3697 and contributors.
- The logo of this project is authored, created or licensed by the Electron-js community (brand, open source project), but has no direct relationship with this repository.