I recently got an email from someone who had read my old rant about some of the downsides of Electron, who wondered if I could recommend any alternatives.
This post is a short summation of my response.
In short: For GUIs, I'd recommend wxWidgets / Qt – alternatively LibUI, or possibly even React Native.
My first thought would be to use something like wxWidgets or LibUI – both of which wrap the native platform widgets, and thereby give you stuff like deep accessibility-integration for free.
After these I’d look at maybe Qt, which is also pretty easy to use, but (from what I understand) implements its own widgets, attempting to support whatever native platform look-and-feel.
There are good bindings for all of these frameworks for most popular languages.
If one really have to use JS for writing a desktop-application, there’s for instance libui-node (LibUI) or nodegui (Qt), alternatively proton-native (React-environment) or vuido (Vue-environment) if you’re partial to any particular UI-toolkit convention.
Finally, if you have to reuse webapp-code, something like Neutralino (which wraps the system's own web browser) may be of less resource-heavy than embedding its own Chromium-runtime (which is what Electron does). This should also eliminate the need for developers to upgrade the embedded browser (Chromium/Electron) to get security-patches, as the user's own OS-supplied browser would handle this – provided that the user keeps this up to date, of course.
The order above is more or less the order I’d rank the alternatives in as well.
Additionally, there’s an «awesome»-style GitHub-repo full of links here.