Edit this page on GitHub

## Cross-Platform Desktop Apps (XPDA)

### Write Once Run Anywhere (WORA) development for desktop operating systems.

## XPDA News: (8/26/2020)

### Electron drops ESM support

Summary: Electron has stated that it will be dropping support for JavaScript's modern, native, import/export. The popular `import module from './module.js'` pattern will be removed from Electron. ( Read more )

« Next Story | Previous story »

### Filter Controls:

Languages

Platforms

### Matching Tools (29/29)

NW.js
Languages: HTML, CSS, JS, Node.js
Supported platforms: Windows, Linux, OSX
Pros:

- Very wide OS support (about twice as many OS's as Electron)
- Legacy OS support to OSX 10.6 and XP (via NW.js 0.14.7 LTS)
- Actually cares about proper Linux support
- Allows for protected source code (important for proprietary/closed source code)

Cons:

- Terrible Name/Branding/Marketing
- Small-Medium ecosystem
- Basically one person behind most of the code
- Everything you need from the documentation is available, but the site is clunky

Notable Projects made with NW.js:

- Construct - Used under the hood for tens of thousands of games created using the Construct game dev toolkit.
- WeChat Mini Program SDK - WeChat Mini Program SDK is built with NW.js.
- pgAdmin 4 - A very popular database tool, pgAdmin switched to NW.js in 2021 saying "By implementing the Desktop Runtime using NW.js we get rid of the separate server application and the independent browser. We also get rid of QT and C++ runtime logic".
- Gitter - Gitter is a chat platform for open source projects that directly integrates with GitHub. The native Windows desktop app for it uses NW.js.

Frameworks:

- Vue - Vue-CLI + NW.js
- Angular 8+ - Angular CLI + NW.js
- More available at - NW Utils

Tutorials:

- dev.to - Holy shit NW.js is so easy by The Jared Wilcurt
- YouTube - NW.js, Vue, Vuetify by Ackzell
- GitLab - Making a desktop app: For complete beginners by The Jared Wilcurt
- GitHub - Packaging and distributing NW.js apps by Wouter Hisschemöller

Electron
Languages: HTML, CSS, JS, Node.js
Supported platforms: Windows, Linux, OSX
Pros:

- Great name/marketing/branding
- Big ecosystem
- Good documentation
- Used by a few big name projects

Cons:

- Basically one person behind most of the code
- Doesn't take Linux support seriously
- Does not support any legacy OS's
- Resource Hog

Notable Projects made with Electron:

- Discord - Chat application aimed primarily at gamers
- VSCode - Open source text editor from Microsoft aimed at web developers.
- Slack - Slack is a chat application primarily aimed at inter-office and work-team communication.
- List of apps submitted to the Electron Website - User submitted apps made with Electron

Frameworks:

- Vue (Vue-CLI 2) - Electron-Vue
- Vue (Vue-CLI 3) - Vue-CLI Plugin Electron Builder

Tutorials:

- dev.to - Building a Desktop App with Vue: Electron by Natalia Tepluhina
- YouTube - Login UI with Vuetify by Paris Nakita Kejser
- QVault - Automatic Cross-Platform Deployments with Electron and Travis-CI by Lane Wagner

Tauri
Languages: HTML, CSS, JS, Rust
Supported platforms: Windows, Linux, OSX
Pros:

- Once you have all the prerequisites installed, the initial project creation is extremely polished. A single command starts up a new project, which integrates with all popular WebDev CLI's (Vite, Vue-CLI, CRA, etc)
- Has a build tool built right in. It's slow, but a phenomenal feature to have officially maintained
- The documentation is probably the best I've seen for any project listed on XPDA.net. Though I found a few of my questions unanswered as I used it, especially basic things like what OS's are supported.
- Produced a self-contained, portable, Windows executable that was under 7MB

Cons:

- Takes around ~2 hours for initial machine and project setup (Visual Studio, OS Specific WebView, Rust, Node/npm, crate installs/compiling, etc). And this is NOT a "click a button and walk away" setup.
- Builds must be done on target OS and can take 30-60 minutes per OS. Compared to NW.js or Electron where you can build for all OS's with a single command, which may take 15-30 minutes, but all will be done at the end; versus Tauri which takes twice as long for just one to finish.
- Relies on the OS's built in webview, which means you need to build your UI in a cross-browser friendly manner, and use special tooling that those not deeply familiar with frontend development would be new to. Also you must use features based on the lowest common denomenator, meaning newer language or browser features will not be accessible
- On Linux, you must build using the oldest Linux version you want to support, and may need to do multiple builds if the Linux versions differ greatly enough

Notable Projects made with Tauri:

- "Awesome-Tauri" app list - Bulleted list of apps made with Tauri, in seemingly no particular order or with any screenshots
- Add a notable project made with this tool

Xamarin
Languages: C#, .NET, F#
Supported platforms: iOS, Android, Windows Phone, Windows, OSX
Pros:

- Currently supports OSX 10.7+ (though the upcoming versions will only support 10.9+)
- Code can be shared across Desktop and Mobile apps
- OSX apps can use XCode's interface builder, or create UI's with C#
- Apps are written in C#/F#/.NET and can consume libraries written in VB and razor templates

Cons:

- Very little abstraction is handled for you between the different OS's, versus something like NW.js where you write code to its API and it converts it for each OS
- No Linux support
- Windows support is limited to UWP (Microsoft Store) format, meaning it can only support Windows 8+
- Developing for OSX apps requires a lot of knowledge of developing traditional native OSX desktop apps that talk directly to the OS API

Notable Projects made with Xamarin:

- Add a notable project made with this tool

Wails
Languages: HTML, CSS, JS, Go
Supported platforms: Linux, OSX, Windows
Pros:

- Does not ship a browser, uses what is installed
- Builds to a single binary, packaging all frontend/backend code together (if all environment requirements are met)
- Has decent Linux OS support, though requires extra effort for each to be set up
- Has a decent CLI to generate projects that also has templates for many JS frameworks built in (Vue, Angular, Svelte, VanillaJS, Vuetify, React)

Cons:

- Windows version relies on Internet Explorer 11's engine. IE11 was released in 2013 and many modern JS frameworks (like Vue 3) have dropped support for IE11 in order to use newer browser APIs like proxies for performance improvements and better developer ergonomics.
- Saving changes on the frontend are not dynamically shown in the running app. You must kill the app and rebuild it to see changes.
- Does not support making frameless apps, but does support fullscreen
- Does not support making tray apps

Notable Projects made with Wails:

- Wails Official showcase - Curated list of apps made with Wails
- Add a notable project made with this tool

Frameworks:

- Vue, Angular, React, Svelte - Built into Wails-CLI

Tutorials:

- YouTube - Building Desktop App in Go using Wails by Alex Pliutau

Adobe Animate CC
Languages: ActionScript
Supported platforms: Windows, OSX, Android, iOS
Pros:

- Adobe Animate (formerly Adobe Flash Professional) allows you to produce Flash files (.swf), HTML5 compatible projects, and also export out to a self contained executable for Windows and OSX (so nothing additional needs to be installed to run it)
- Versatile and powerful vector-based animation tools
- Distribution sizes are small, typically around 6-20MB
- Aimed primarily at animated short films, and 2D games

Cons:

- Requires renting the software month-to-month. If you stop paying for a Creative Cloud subscription, you will no long be able to edit/modify your application.
- Lacks true Linux support. There is a separate download for a standalone Linux projector file that a SWF can be loaded in, but no way to build your app into it in the same way the Windows/OSX version can
- Very limited library/framework/tooling support
- Very limited access to file system, hardware, storage, or OS features

Notable Projects made with Adobe Animate CC:

- Knights of the Stream - A desktop app for Twitch streams that allows viewers to level up a character by participating in chat, and for the streamers to reward participants with in-game rewards.
- Add a notable project made with this tool

Tutorials:

- YouTube - Publishing your Flash project to a projector by Brian Kelly
- YouTube - Publishing mobile and desktop applications by Lynda.com

LibUI-Node
Languages: JS, Node.js
Supported platforms: Windows, Linux, OSX
Pros:

- Uses minimal amounts of resources, much less than NW.js and Electron
- Built package can be as small as ~20MB (compared to ~70MB (NW) and ~120MB (Electron))
- Distribution sizes can be as low as 10MB (packaged installer)
- Can use node_modules

Cons:

- Requires native build tools and to do builds on each target platform
- Limited-to-no styling options, all apps look like vanilla form fields
- Very new, not out of beta
- Not great OS support, or build tools yet

Notable Projects made with LibUI-Node:

- Add a notable project made with this tool

Frameworks:

- React - Proton-Native
- Vue.js - Vuido

Tutorials:

- dev.to - Building a Desktop App with Vue: Vuido by Natalia Tepluhina

LibUI
Languages: C, C++, C#, .NET, Lisp, D, Haskell, Node.js, Kotlin, Lua, Perl, PHP, Python, Ruby, Rust, Scala, Swift
Supported platforms: Windows, Linux, OSX
Pros:

- Uses the native OS UI, allowing for fairly small applications
- Wide support of bindings for other languages
- Uses very few resources

Cons:

- Quality and level of completion of bindings varies quite a bit
- You are limited to very basic form-like UI's
- Most bindings require native build tools and doing builds on each target OS
- Dev, build, and distribution tools are weak or completely lacking

Notable Projects made with LibUI:

- Add a notable project made with this tool

Sciter
Languages: HTML, CSS, TIScript
Supported platforms: Windows, Linux, OSX
Pros:

- Supports Windows XP+ and OSX 10.7+
- Distribution can be as small as 4MB for an installer (very impressive for what you get)
- Uses very little resources to give similar UI experience as that of a browser
- Source code is customizable for those wanting to tweak the build (at a cost)

Cons:

- Has a limited free version, can become expensive in some scenarios
- Does not support all CSS features (No CSS Grid support, for example)
- Uses a proprietary scripting language that is based off of JavaScript (ES6), with a subset of features and missing many aspects of the Browser API. This gives you most of what you'd want, but for example, running vue.min.js will throw errors from Vue attempting to use JS features that are missing
- Documentation is very lacking

Notable Projects made with Sciter:

- Norton Internet Security
- eSet Smart Security
- Avast Free Antivirus
- Bitdefender

Xojo
Languages: Xojo
Supported platforms: Windows, OSX, Linux, iOS
Pros:

- Very beginner friendly, uses a simple WYSIWYG editor
- Streamlined wizard approach to creating new projects
- Good Linux support
- Offers cloud platform for easy deployments of web projects

Cons:

- Uses the proprietary "Xojo language", an object oriented language similar to VB, Java, or C#
- Exporting to each platform is simple and easy, but your options are fairly limited around executable details and packaging for distribution
- Their documentation site is very easy to get lost in, typically defaulting to indexes of single-word links to other pages
- Costs $300/year for cross-platform desktop license, cost goes up from there

Notable Projects made with Xojo:

- Products made with Xojo - Curated list of products made with Xojo
- Add a notable project made with this tool

Tutorials:

- YouTube - Creating a Desktop application using Xojo by Xojo

Chromely
Languages: HTML, CSS, JS, .NET, C#
Supported platforms: Windows, Linux, OSX
Pros:

- Simplifies interacting with Chromium Embedded Framework (CEF) for .NET (5) and .NET Core developers
- Based on CefSharp and CefGlue
- Has Vue, React, Angular, and Blazor boilerplates
- Uses Chromium dev tools

Cons:

- The abstraction from the OS layer is minimal compared to NW.js or Electron, some of this is to be resolved in future versions
- Requires referencing documentation of 3rd parties (Xilium.CefGlue, CefSharp) to build more advanced apps
- Basically one person behind most of the code

Notable Projects made with Chromely:

- A List of Apps Built with Chromely
- Add a notable project made with this tool

Tutorials:

- Medium - Chromely - Lightweight Alternative to Electron for .NET/.NET Core HTML5 Desktop Apps

Chromium Embedded Framework (CEF)
Languages: C, C++, Java
Supported platforms: Windows, Linux, OSX
Pros:

- High amount of control
- Good if you need to add in a browser view to an existing application
- Relied on by a ton of projects/tools, making it likely to be around a long time
- Has been ported to different languages for those that prefer .NET, Go, Delphi, or Python

Cons:

- Considerably more complex than other options on this list
- This is as bare-bones as it gets, many other projects listed on this site are built on top of CEF to simplify it and make development faster/easier

Notable Projects made with Chromium Embedded Framework (CEF):

- Spotify - Spotify is a streaming music platform. It's built with C++, JS, Handlebars, and Less and uses CEF under the hood.
- Add a notable project made with this tool

Tools:

- Port - .NET CEF#
- Port - .NET/Mono CEF Glue
- Port - .NET CEF ChromiumFX
- Port - Delphi CEF

Kivy
Languages: Python
Supported platforms: Windows, OSX, Linux, iOS, Android
Pros:

- Uses a simplified custom UI markup language called "Kv language" to handle the layout across all platforms
- Detailed and complete documentation, including guide, tutorials, and API

Cons:

- Separate build processes for each target platform
- The size of the API will be overwhelming to those starting out with Kivy

Notable Projects made with Kivy:

- Kivy Projects Gallery
- Add a notable project made with this tool

PyQt
Languages: Python
Supported platforms: Windows, Linux, OSX, iOS, Android
Pros:

- Qt is built with C++ which can be cumbersome, the Python bindings simplify interacting with it

Cons:

- If your project is not licensed under GPLV3 then you will need to purchase a commercial license for PyQt which costs $550 per developer

Notable Projects made with PyQt:

- OpenShot - Open source video editing software.
- Manuskript - Open source tool for writers to create their first draft
- Add a notable project made with this tool

Tools:

- Build System - fman

Qt
Languages: C++
Supported platforms: Windows, OSX, Linux, iOS, Android, Windows Phone
Pros:

- Also supports other platforms: Embedded Linux, Integrity, QNX, VxWorks, Wayland, Windows Embedded (CE), Windows UWP (WinRT), and X11. Has been ported to additional platforms: Open Solaris, Haiku, OS/2, webOS, Kindle DX, AmigaOS, Tizen, and Sailfish OS

Cons:

- Though it has an extremely wide support for platforms, it lacks support for legacy OS's, starting support from OSX 10.12+, Win 7+, and Ubuntu 16/18.
- If your project is not licensed under GPLV2, GPLV3, or LGPL3 then Qt costs $459/developer/month
- Many features in the commercial version are not available in the free version for open source projects

Notable Projects made with Qt:

- Adobe Photoshop Elements - Lower cost version of the professional Photoshop software for consumers.
- Auodesk Maya - Industry standard 3D modeling/rendering software
- Dolphin - Emulator for the Nintendo Wii and Nintendo GameCube systems.
- Google Earth - Projects a 3D representation of Earth using satellite and GIS data.

wxWidgets
Languages: C++, Python, Perl, Ruby
Supported platforms: Windows, OSX, Linux
Pros:

- Uses the native UI elements of the OS
- Has been ported to Python, Perl, and Ruby

Cons:

- From what I can see, wxWidgets hasn't kept up-to-date with modern (2010 and on) OS's. There are mentions of older (pre-iphone) smart phones, Windows 95-Vista, and OSX 10.5.
- Requires a deeper knowledge of the target platform than other tools on this list

Notable Projects made with wxWidgets:

- Audacity - Open source audio editing tool.
- KiCad - Electronic schematic diagrams and printed circuit board design application.
- wxWidgets' list of notable projects - List with screenshots curated by wxWidgets

Carlo
Languages: HTML, CSS, JS, Node.js
Supported platforms: Windows, Linux, OSX
Pros:

- Made by Google
- Uses the user's installed copy of Chrome so you don't need to package and ship the browser in your distribution making dist sizes very small
- Uses the Puppeteer API for communicating between Node and browser

Cons:

- Is no longer maintained, as of Feb 2020
- Though made by Google, it is part of their Chrome Lab experiments, which often become abandoned. (called it)
- Requires the end user has Chrome 70+ installed on their system (released 2018-10-16)
- You do not control the browser version, meaning usage of some new browser features in your app will require fallbacks to what Chrome 70 supported

Notable Projects made with Carlo:

- Add a notable project made with this tool

Lorca
Languages: HTML, CSS, JS, Go
Supported platforms: Windows, Linux, OSX
Pros:

- Inspired by Carlo, but for Go instead of Node.js
- Unlike Carlo, Lorca can build an executable for most any platform via the go build command
- Uses the user's installed copy of Chrome so you don't need to package and ship the browser in your distribution making dist sizes very small
- Distribution sizes of 5-10MB

Cons:

- Very new project, basically one person behind it
- Requires the end user has Chrome 70+ installed on their system (released 2018-10-16)
- You do not control the browser version, meaning usage of some new browser features in your app will require fallbacks to what Chrome 70 supported
- Though building a native executable is available, you will still need to manually edit it to embed app icon, etc. and use tools for creating installers

Notable Projects made with Lorca:

- Add a notable project made with this tool

Ultralight
Languages: C++, HTML, CSS
Supported platforms: Windows, OSX, Linux
Pros:

- Distribution sizes are as low as ~8MB
- Low memory usage
- GPU-Accelerated, drivers for Direct3D, Metal, and OpenGL (optimized for games)
- Ultralight is designed for C++ developers, however it plans to add bindings for C, C#, .NET, Node.js, and Python

Cons:

- Currently in beta and missing many features
- Not free for all commercial use
- Mostly closed source
- Basically one person behind most of the code

Notable Projects made with Ultralight:

- Add a notable project made with this tool

NeutralinoJs
Languages: HTML, CSS, JS
Supported platforms: Windows, Linux, OSX
Pros:

- Neutralino is a small executable that runs a static local http server to serve your application in the user's browser
- Though it lacks in powerful features, its goal is to be small, lightweight, and easy to pick up, and it delivers on those goals very well
- Has Vue, React, and Angular boilerplates

Cons:

- Lacks many OS level features like being able to make a tray icon, or custom window chrome
- Very limited access to file system, hardware, and OS level features through a tiny API
- Your UI could run any browser the end user has, meaning that your app must be designed in a cross-browser friendly manner
- Documentation is pretty light

Notable Projects made with NeutralinoJs:

- Add a notable project made with this tool

LambdaNative
Languages: Scheme
Supported platforms: Windows, Linux, OSX, Android, iOS
Pros:

- Also supports these platforms: OpenBSD, NetBSD, Free BSD, OpenWrt, and BlackBerry 10
- Uses the Gambit-C version of Scheme

Cons:

- Documentation is limited to a 900 page GitHub Wiki
- The documentation itself lists the learning curve for Scheme as a negative

Notable Projects made with LambdaNative:

- Slideshow of apps made with LambdaNative
- Add a notable project made with this tool

Revery
Languages: ReasonML, OCaml
Supported platforms: Windows, OSX, Linux
Pros:

- Designed with Functional Programming (FP) in mind for those that prefer it
- A "React-Like" coding experience for building native UI's without a browser
- Actively being developed, and has a Discord group to ask for guidance
- There is intent to potentially support mobile platforms in the future

Cons:

- The project is described as "an experiment", and it feels like more of a proof-of-concept than a valid alternative for serious XPDA development.
- Their documentation is very weak and assumes a familiarity with the Reason/OCaml ecosystems
- No examples of hooking into the file system, hardware, or OS level
- No examples of window management, frameless windows, taskbar apps, etc.

Notable Projects made with Revery:

- Onivim - A "futuristic" text editor focused around Vim. Vim was a technology used in the 1980's, kinda like VCR's, remember those?
- Add a notable project made with this tool

Tutorials:

- GitHub - Official Revery Quick-Start by Outrun Labs

Brackets-Shell
Languages: HTML, CSS, JS
Supported platforms: Windows, Linux, OSX
Pros:

- Maintained by Adobe

Cons:

- No documentation
- Only designed for Brackets text editor, not for general purpose use
- They recommend using NW.js or Electron instead

Notable Projects made with Brackets-Shell:

- Brackets - Brackets is a user friendly, open-source, text editor from Adobe aimed at Web designers.
- Add a notable project made with this tool

8th
Languages: 8th
Supported platforms: Windows, OSX, Linux, iOS, Android
Pros:

- Runs on all platforms without the use of a browser or vm
- May be appealing to more old-school devs that like Perl or Fourth

Cons:

- Uses proprietary "8th" language (based on "fourth") that they describe as "If you’re coming from a “mainstream” language, you may find 8th a bit puzzling."
- I'm putting two more bullet points here for the language to emphasize how bad it is. It looks closer to regex than it does a modern programming language.
- locals: : foobar 1000 "baz" w:! ; : bar 120 "baz" w:!
- The tool ranges from free to "enterprise" ($3000) with additional features and support added to higher tiers. Source code for 8th is only available to Enterprise customers willing to sign an NDA

Notable Projects made with 8th:

- Add a notable project made with this tool

Tutorials:

- YouTube - 8th: One Effort, Multiple Platforms

Adobe AIR
Languages: HTML, JS, ActionScript
Supported platforms: iOS, Android, Windows, OSX
Pros:

- Simple development environment

Cons:

- Poor Linux support
- Requires end users to install Adobe Air runtime separately
- Limited documentation around desktop app development
- Adobe dropped all support AIR in 2020 and transferred rights to Samsung owned HARMAN

Notable Projects made with Adobe AIR:

- Pownce - Now defunct instant messaging/file sharing app
- Add a notable project made with this tool

Tutorials:

- forums.adobe.com - AIR Community Forums by Adobe

Muon
Languages: HTML, CSS, JS, Node.js
Supported platforms: Windows, OSX, Linux
Pros:

- Fork of Electron with a less modified Chromium source, and goals to improve security and usage of Chrome extensions

Cons:

- Project was deprecated in 2018.
- This is literally just Electron with some very minor changes, all of which are things that NW.js already does much better than they are aiming for. I can't see any reason to recommend Muon to anyone.
- Documentation is limited and mostly just a copy/paste job from Electron

Notable Projects made with Muon:

- Brave Browser - Brave has since switched to patching the Chromium source code directly. Which makes sense becuase using Electron to make a browser, very possibly, is the laziest thing that could be done with the technology.
- Add a notable project made with this tool

Tint2
Languages: HTML, CSS, JS, Node.js
Supported platforms: Windows, OSX, Linux
Pros:

- Similar approach to that of NW.js or Electron

Cons:

- Project is deprecated (last release was in 2016)

Notable Projects made with Tint2:

- Add a notable project made with this tool

AppJS
Languages: HTML, CSS, JS, Node.js
Supported platforms: Windows, Linux, OSX
Pros:

- Built on top of Chromium and Node
- Distribution sizes around 20MB

Cons:

- Project is deprecated (last release was in 2014)
- No developer tools
- Uses very old versions of Chromium and Node

Notable Projects made with AppJS:

- tIRC - Simple IRC Chat client for OSX
- Add a notable project made with this tool

JSDB
Languages: JS, XML
Supported platforms: Windows, Linux, OSX
Pros:

- Designed as a means to use JavaScript to interact with databases. For data-driven, network-centric programming.
- Can make exes and they compress to less than 1MB
- Though old, and no longer recieving updates, the author still answers questions in a Google Group
- Based on Mozilla SpiderMonkey

Cons:

- Dated, last release was 2012. Code updates are effectively deprecated
- Primarily focused on database related solutions, may be limited
- Uses class libraries from Raosoft, Inc. making the open-source version free, however additional functionality or less restrictive license must be purchased (starting at $50)
- Sort of like a poor-man's version of Node, but much smaller in size, for the trade off of using older JS, and having no access to modern JS frameworks or tooling

Tools that have not yet been reviewed:
Here are additional tools that have not been reviewed yet, but may still be of use to those visiting XPDA.net

- JavaFX
- Avalonia UI
- DeskGap
- NodeGUI - Qt based Node.js aproach to native UI's, includes React framework