Electron (formerly known as Atom Shell
) is a
free and open-source
Free and open-source software (FOSS) is software available under a Software license, license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term ...
software framework
In computer programming, a software framework is a software abstraction that provides generic functionality which developers can extend with custom code to create applications. It establishes a standard foundation for building and deploying soft ...
developed and maintained by
OpenJS Foundation. The framework is designed to create desktop applications using
web technologies (mainly
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
,
CSS and
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
, although other technologies such as front-end frameworks and
WebAssembly
WebAssembly (Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating communication between such programs and their host environment.
The main goal of ...
are possible) that are rendered using a version of the
Chromium browser engine and a back end using the
Node.js runtime environment. It also uses various
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s to enable functionality such as native integration with Node.js services and an
inter-process communication
In computer science, interprocess communication (IPC) is the sharing of data between running Process (computing), processes in a computer system. Mechanisms for IPC may be provided by an operating system. Applications which use IPC are often cat ...
module.
Electron was originally built for
Atom
Atoms are the basic particles of the chemical elements. An atom consists of a atomic nucleus, nucleus of protons and generally neutrons, surrounded by an electromagnetically bound swarm of electrons. The chemical elements are distinguished fr ...
and is the main GUI framework behind several other open-source projects including
GitHub Desktop,
Light Table,
Visual Studio Code
Visual Studio Code, commonly referred to as VS Code, is an integrated development environment developed by Microsoft for Windows, Linux, macOS and web browsers. Features include support for debugging, syntax highlighting, intelligent code comp ...
,
WordPress
WordPress (WP, or WordPress.org) is a web content management system. It was originally created as a tool to publish blogs but has evolved to support publishing other web content, including more traditional websites, electronic mailing list, ma ...
Desktop, and
Eclipse Theia.
Architecture
Electron applications include a "main" process and several "renderer" processes. The main process runs the logic for the application (e.g., menus, shell commands, lifecycle events), and can then launch multiple renderer processes by instantiating an instance of the class, which loads a window that appears on the screen by rendering
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
and
CSS.
Both the main and renderer processes can run with
Node.js integration if the field in the main process is set to .
Most of Electron's APIs are written in
C++ or
Objective-C
Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
and are exposed directly to the application code through
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
bindings.
History
In September 2021, Electron moved to an eight-week release cycle between major versions to match the release cycle of
Chromium
Chromium is a chemical element; it has Symbol (chemistry), symbol Cr and atomic number 24. It is the first element in Group 6 element, group 6. It is a steely-grey, Luster (mineralogy), lustrous, hard, and brittle transition metal.
Chromium ...
Extended Stable and to comply with a new requirement from the
Microsoft Store
The Microsoft Store (formerly known as the Windows Store) is a digital distribution platform operated by Microsoft. It was created as an app store for Windows 8 as the primary means of distributing Universal Windows Platform apps. With ...
that requires browser-based apps to be within two major versions of the latest release of the browser engine.
Electron frequently releases new major versions along every other
Chromium
Chromium is a chemical element; it has Symbol (chemistry), symbol Cr and atomic number 24. It is the first element in Group 6 element, group 6. It is a steely-grey, Luster (mineralogy), lustrous, hard, and brittle transition metal.
Chromium ...
release. The latest three stable versions are supported by the Electron team.
Usage
Desktop applications built with Electron include
Atom
Atoms are the basic particles of the chemical elements. An atom consists of a atomic nucleus, nucleus of protons and generally neutrons, surrounded by an electromagnetically bound swarm of electrons. The chemical elements are distinguished fr ...
,
balenaEtcher,
Discord
Discord is an instant messaging and Voice over IP, VoIP social platform which allows communication through Voice over IP, voice calls, Videotelephony, video calls, text messaging, and digital media, media. Communication can be private or take ...
,
Microsoft Teams
Microsoft Teams is a team collaboration platform developed by Microsoft as part of the Microsoft 365 suite. It offers features such as workspace chat, video conferencing, file storage, and integration with both Microsoft and third-party applicat ...
before 2.0,
Slack,
and
Visual Studio Code
Visual Studio Code, commonly referred to as VS Code, is an integrated development environment developed by Microsoft for Windows, Linux, macOS and web browsers. Features include support for debugging, syntax highlighting, intelligent code comp ...
.
The
Brave browser was based on Electron before it was rewritten to use Chromium directly.
Reception
The most common criticism of Electron is that it necessitates
software bloat
Software bloat is a process whereby successive versions of a computer program become perceptibly slower, use more memory, disk space or processing power, or have higher hardware requirements than the previous version, while making only dubious ...
when used for simple programs. As a result,
Michael Larabel
Phoronix Test Suite (PTS) is a free and open-source benchmark software for Linux and other operating systems.
The Phoronix Test Suite, developed by Michael Larabel and Matthew Tippett, has been endorsed by sites such as Linux.com, LinuxPlanet ...
has referred to the framework as "notorious among most Linux desktop users for being resource heavy, not integrating well with most desktops, and generally being despised."
Researchers have shown that Electron's large feature set can be hijacked by bad actors with write access to the source JavaScript files. This requires root access on *nix systems and is not considered to be a vulnerability by the Electron developers. Those who are concerned that Electron is not always based on the newest version of Chromium have recommended
progressive web application
A progressive web application (PWA), or progressive web app, is a type of web app that can be installed on a device as a standalone application. PWAs are installed using the offline cache of the device's web browser.
PWAs were introduced from 2 ...
s as an alternative.
See also
References
External links
*
{{Microsoft FOSS
2013 software
Cross-platform desktop-apps development
Cross-platform software
Free and open-source software
GitHub
Google Chrome
Microsoft free software
Software using the MIT license