Skip to main content

Electron

Electron is a popular framework to build cross-platform desktop applications using web technologies. Some of the most popular applications using it are Visual Studio Code, Slack, Discord, InVision, Figma, or WhatsApp.

While it was originally created by GitHub in 2013, it is an OpenJS Foundation project since 2019. It has an Open Governance where engineers from different companies and products (like VS Code, Slack, Teams, RingCentral) and volunteers collaborate in different Working Groups.

Electron applications use Chromium as the shell to render the User Interface. Developers use HTML, CSS and JavaScript to build their apps, which means they can use the libraries and tools available to the web community such as React, webpack, Babel, etc. One of the main differences with other technologies under the Browser engine category, is that JavaScript is used to access the Operating System features as well. This is because Electron applications come with Node.js support. At a high-level, Electron adds the Node.js layer to Chromium's JavaScript engine V8. This means that developers can leverate all its ecosystem and also write C/C++ code to access features not available out of the box or via other modules.

Summary

Characteristic
Websitehttps://www.electronjs.org
PlatformsDesktop
Rendering strategyBrowser engine
Code License[[object Object]]
CopyrightOpenJS Foundation
Documentationhttps://www.electronjs.org/docs/latest/
Communityhttps://discord.com/invite/electron
Latest versionv15.3.0
Release cadenceMajor versions: 12 weeks
Minor/patch: ~weekly
Release support9 months
Update modelDeveloper driven
Governance modelOpen Governance

Platform support:

WindowsmacOSLinuxAndroidiOS
โœ…โœ…โœ…
note

While a mobile Electron could be possible, the Apple Store policy 2.5.6 will prevent it from being distributed on iOS devices.

Language support:

C++C#GoJavaJavaScriptRust
โœ…โœ…
note

While this list is for the "out of the box" languages, there are ways to use others. An example would be Rust, which can be run via Neon.

Release cadence, version support and update model

Electron has three important branches of development: nightly, beta, and stable. The nightly branch is synced to Chromium's development branch and merged daily or weekly. Nightly Electron is equivalent to Chrome Canary. The beta and stable branches of Electron are fixed to their major-versions of Chromium and release every 12 weeks. New Electron stable versions typically release the same day as the equivalent stable Chrome release. Additionally, the team releases weekly updates (minor and/or patch) for the latest 3 stable versions, bringing the total lifetime of a stable version to 36 weeks (or about 9 months).

caution

Chrome has announced that starting in Chrome 94 (Q3 2021) they will switch to a 4 week release cadence. Electron will continue releasing every other one and supporting the latest 3 major versions. This means that the length of support will change from ~9 months to ~6 months.

Electron applications are self-contained: Chromiun and Node.js are bundled in the application. This has the advantage for the users to not have to install any pre-requisites, and for developers to know exactly what dependencies are being run. On the other side, it also means that updating the Electron version is a developer responsibility (developer driven).

Governance

Electron is an OpenJS Foundation project with an established Open Governance model. It has several autonomous Working Groups (WG) for different areas (API, releases, security). In the words of the project:

A working group is a group of maintainers that is formed to take responsibility for certain aspects of the Electron project. Normally these groups will meet regularly but in some cases will only meet as required to fulfill their responsibilities.

While the requirements might change from one WG to another, anyone can eventually become a maintainer, join, and get their feature added. Electron is created to serve its community, and not the needs of a particular company or product.