Electron: The Chromium-and-Node.js Desktop Shell
:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS
At a glance
- What is it?
- Electron packages Chromium and Node.js into a single runtime for building cross-platform desktop apps with web tech. It solves distribution and API consistency but carries real costs in binary size and memory.
- Who is it for?
- Adopt Electron if your team already speaks JavaScript and needs one codebase for macOS, Windows, and Linux, especially for apps like Visual Studio Code that tolerate a larger binary. Avoid it if your product demands minimal memory footprint, native look and feel, or strict control over Chromium updates.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- electron/electron123,892 ★ · +1,767
| Repository | 2026-07-21 | 2026-11-13 |
|---|---|---|
| electron/electron | 122.1k | 123.9k |
1,767 Stars in the last 115 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What Electron Actually Bundles and Why That Matters
Electron is not a library you link into an existing app. It is a complete runtime that fuses Chromium, the rendering engine behind Google Chrome, with Node.js, the server-side JavaScript runtime. Your application code runs inside this combined shell, so you get DOM APIs, the Node standard library, and native module support in one process. The README states the framework lets you write cross-platform desktop applications using JavaScript, HTML, and CSS, and it is based on Node.js and Chromium. That bundling is the source of both its power and its weight. Every Electron app ships a full browser engine. For teams that already live in the web ecosystem, this removes the need to learn platform-specific UI toolkits, but it also means you inherit Chromium's resource appetite. The trade-off is explicit in the design, and you should accept it before you start, not after your first memory profile.
The Core Mechanism: One Main Process, One Renderer Per Window
Electron's architecture splits your app into two roles. The main process runs Node.js and controls the application lifecycle, creating windows and handling system events. Each window you open runs a renderer process that executes your HTML, CSS, and JavaScript. The main process can access the file system and spawn child processes, while the renderer is sandboxed like a browser tab. Communication between the two goes through IPC, which the documentation covers in depth. The practical consequence is that you write two kinds of code: one for the backend of your app and one for the UI. This is a familiar pattern for web developers, but it adds a layer of coordination that a single-process desktop framework does not require.
Getting Started: One npm Command and a Path to the Binary
Installation is deliberately simple. The README's preferred method is to add Electron as a development dependency: npm install electron --save-dev. That command downloads a prebuilt binary for your current platform, so you do not compile anything yourself. After installation, you can run Electron from the command line, but the README also shows a programmatic path. If you require('electron') from a plain Node script, you get the file path to the Electron binary, not a module. The example in the README uses that path to spawn Electron as a child process via node:child_process. This is useful for test runners or build scripts that need to launch Electron. Note that the binary is platform-specific, so your CI and build machines must match the target OS. The README mentions custom mirrors for regions where the default download is slow, such as the China mirror at npmmirror.com. That is a concrete config you can set, but the README only points to the advanced installation docs for the exact mirror syntax.
Platform Support: Where It Runs and the Hidden Constraints
Electron ships binaries for macOS, Windows, and Linux. The README lists macOS Ventura and up with both Intel and ARM binaries, Windows 10 and up with x64 and arm64, and Linux with x64 and arm64. The Linux caveat is worth reading twice: Electron supports major distributions only in versions that are still supported by both Chromium and the distro maker, and the prebuilt binaries are built on Ubuntu. This means if you target an older Ubuntu release or a distro that Chromium has dropped, your Electron app may fail to run or require workarounds. The README says Electron tries to align with Chromium on platform support, so you are tied to Google's support calendar, not your own. For enterprise deployments on long-term-support Linux distributions, this is a genuine constraint. You cannot simply build once and expect it to run everywhere; you must track which distro versions are still within Chromium's support window.
The Real Limitation: Binary Size and Memory Footprint
The most honest limitation of Electron is the cost of shipping Chromium. Every app, no matter how small, includes the full rendering engine. Your installer will be large, and your app will use more RAM than a native equivalent. This is not a bug; it is the price of using a web stack on the desktop. If your app is a simple utility like a system tray icon or a text editor for logs, Electron is likely overkill. The README lists Visual Studio Code as a user, which is a heavyweight editor that justifies the overhead. But for a small internal tool, a lighter alternative like Tauri, which uses the system's native webview instead of bundling Chromium, will produce a much smaller binary and lower memory usage. The difference in approach is fundamental: Electron bundles its own browser, while Tauri relies on the OS-provided webview. That is a real trade-off you must weigh before adopting Electron.
Maintenance and Upgrade Cost: The 8-Week Chromium Cycle
Electron ships several version lines in parallel: the recent releases in the repository are v46.0.0-alpha.5 (2026-11-02), v45.2.1 (2026-10-31) and v43.8.6 (2026-10-30). The README directs you to the Electron versioning docs for managing versions in your apps, but the takeaway is that you cannot ignore updates for long. Chromium fixes security vulnerabilities on a fixed schedule, and if you stay on an old Electron, you inherit those vulnerabilities. Upgrading Electron often requires updating your native modules and testing your IPC code, because Chromium and Node.js APIs change. The README does not promise a stable API across majors; it only points to the versioning policy. For a team that cannot dedicate time to regular upgrades, this is a recurring cost that will surface as a security audit or a broken feature. You should budget for a version bump at least twice a year, and verify your native dependencies support the new major before you commit.
Licensing and Community: MIT with a Trademark Caveat
Electron itself is licensed under MIT, which the README confirms. That means you can use, modify, and distribute the framework in commercial products with minimal restrictions. However, the README also notes that the Electron logos are subject to the OpenJS Foundation Trademark Policy. So you can build a proprietary app on Electron without paying a fee, but you need to follow the OpenJS Foundation Trademark Policy when using the Electron logos. This is a common pattern for open-source projects, but it is worth knowing before you put the Electron logo on your product's marketing page. The project also follows the Contributor Covenant code of conduct, which matters if you plan to contribute. The community is active, with a Community page linked in the README and translations managed through Crowdin, but the README does not provide any metrics on contributor activity. For adoption, the MIT license is a green light, but the trademark clause is a boundary you should respect in your own materials.
Editorial conclusion
Adopt Electron if your team already speaks JavaScript and needs one codebase for macOS, Windows, and Linux, especially for apps like Visual Studio Code that tolerate a larger binary. Avoid it if your product demands minimal memory footprint, native look and feel, or strict control over Chromium updates. Before committing, verify your target Linux distro is still supported by the bundled Chromium version, and check the Electron versioning docs to keep up with their major releases.
Frequently asked questions
how to install electron
The readme's preferred method is to add it as a development dependency in your app with npm install electron --save-dev. It points at the installation document for the other options and troubleshooting, and at a separate document about managing Electron versions in your apps, with a mirror for China and custom mirror instructions in the advanced installation page.
how to install electron on mac
Each Electron release provides binaries for macOS, Windows, and Linux, and for macOS that means Ventura and up with 64-bit Intel and Apple Silicon builds. Installation still goes through npm, and the readme says in general terms that Electron tries to align with Chromium on platform support.
how to install electron on windows
Windows 10 and up is the stated floor, with x64 and arm64 binaries provided. As on other platforms the install is an npm operation against a development dependency, and the project offers Electron Fiddle for building, running, and packaging small experiments while trying different versions.
what is electron software
It is a framework for writing cross-platform desktop applications with JavaScript, HTML, and CSS, based on Node.js and Chromium. The readme names Visual Studio Code as a user of it and points to a page on the project site listing the apps built with it.
Is Discord an electron app?
The readme does not name Discord. It names Visual Studio Code as a user of the framework and links to an apps page on the project site, which is where the list of applications built with Electron lives.
how to use electron
Install it as a development dependency, then either build your application normally or use Electron Fiddle to build, run, and package small experiments and to try different versions. If you require the module inside a plain Node app rather than inside an Electron app, the value returned is the path to the binary, which you then spawn.
Official sources
Where this project is recommended
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/electron-electron)Star history chart for your README
[](https://hysenlabs.com/projects/electron-electron)Was this useful?