mrkeyoor.com_
Thu 17 Sept 22:01 UTC
Webevaluationupdated 26 Aug 2026

electron review

Electron is a framework for making desktop applications with JavaScript, HTML, and CSS by packaging Chromium and Node.js together. It gives a web team one codebase for macOS, Windows, and Linux, plus APIs for windows, menus, notifications, files, and other desktop features.

+102stars / 7d
Verdict

Our Electron checkout installed 1,429 packages and used 588 MB, but its tests stopped after 7 seconds because no compiled output directory existed. Use Electron when one Chromium target and a JavaScript team save enough work to justify the bundled runtime and continuous platform testing. Skip it for tiny utilities or for remote-content apps whose team cannot police preload, IPC, and upgrade boundaries.

We ran it

Lab card: what happened when we ran electronScreenshot of electron (electronjs.org)
Install✓ · 126s1429 packages · 588 MB
Buildn/ano build script
Tests✗ · 7sran, no count parsed
Repo3123 files~248,589 lines of source · 34.7 MB · 52 CI workflows · tests dir

Answers from our run

Does electron build from source?

Dependencies installed in 126 seconds (1429 packages), and the project has no separate build step. We cloned commit 8b7346f into a clean Debian container with 3 CPUs and no project-specific setup.

Do electron's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use electron?

Small utilities where package size and memory use matter more than sharing web code: the README says every release includes Chromium and Node.js.

What are the alternatives to electron?

Tauri, Neutralinojs, NW.js. Our Electron checkout installed 1,429 packages and used 588 MB, but its tests stopped after 7 seconds because no compiled output directory existed.

Setup3/5Prebuilt use is simple; source tests need a compiled output
Docs5/5Clear installation, packaging, security, and update guides
Community5/5122,715 stars and active issues and pull requests
Maturity5/5v44 ships current engines and explicit breaking changes

Discussed on

  1. hnElectron-based apps cause system-wide lag on macOS 26 Tahoe302 points
  2. hnElectron 9.098 points
  3. hnLet's Encrypt root CA isn't working properly in Electron21 points
  4. hnLet's Encrypt Root CA Expiration Causing Issues in Electron Apps17 points
  5. hnElectron 2.0.0 Released4 points

Who it’s for

Web teams building a substantial desktop product for macOS, Windows, and Linux.
Applications that need one Chromium rendering target plus access to desktop capabilities.
Organizations willing to own packaging, signing, updates, and operating-system testing.
Products whose existing browser interface and JavaScript skills outweigh the cost of bundling a runtime.

Who it’s NOT for

Small utilities where package size and memory use matter more than sharing web code: the README says every release includes Chromium and Node.js.
Applications that must display arbitrary remote content with desktop privileges: Electron's security guide calls that a severe risk.
Teams that cannot keep pace with platform changes: v44 dropped macOS 12 and all 32-bit builds.
Contributors expecting dependency installation to produce a testable framework checkout: our test runner stopped because it could not find a compiled Electron output directory.

Setup reality

Our sandbox install succeeded in 126 seconds, adding 1,429 packages and using 588 MB on disk. The checkout had 3,123 files and about 248,589 source lines. No build script or target was available, so we skipped that step. Tests failed with exit code 1 after 7 seconds.

The failure happened before the specs ran. The runner could not find an output directory named Testing, Release, Default, or Debug and suggested setting ELECTRON_OUT_DIR. Application developers usually obtain a prebuilt binary through npm, but contributors need a compiled Electron artifact.

Shipping an app adds platform packaging, signing, and update work. Current binaries cover 64-bit Intel and Arm systems on supported macOS, Windows, and Linux releases. No hosted credential is needed for a local window, though release services and private update storage may need their own credentials.

Electron puts Chromium and Node.js inside each desktop app

Electron combines a browser engine, a Node.js runtime, and native window APIs. The main process controls application lifecycle and windows, while renderer processes display the interface. Preload scripts can expose selected desktop functions to those renderers. That arrangement lets a JavaScript team reuse browser components while adding menus, notifications, clipboard access, file dialogs, custom protocols, and other features expected from an installed application.

Consistency is the main reason to accept the weight. Each release supplies binaries for macOS, Windows, and Linux, so the application targets one bundled browser instead of several system webviews. The trade is visible in our checkout: dependency installation added 1,429 packages and occupied 588 MB before any product code or packaged artifacts entered the picture. A tiny tray utility may struggle to justify that base; a large editor or collaboration client can.

Prebuilt binaries are the easy path; framework work needs Chromium tooling

Most application developers install Electron as a development dependency and receive a prebuilt binary. Electron Fiddle provides a quick place to try APIs and package small experiments. The README points new projects toward npm and recommends Electron Forge for packaging and distribution. Opening a local window needs no account or hosted API, which keeps the first application experiment pleasantly direct.

Working on the framework itself is a different job. The repository at commit 8b7346f contained 3,123 files, about 248,589 lines of source, and a Yarn workspace. Chromium-based native output does not appear just because JavaScript dependencies installed. Teams maintaining a fork should expect dedicated build hosts, large caches, platform toolchains, and artifact storage. Our source test result makes that boundary unusually clear.

What happened when we ran it

Our fresh Debian sandbox installed Electron's repository dependencies in 126 seconds. Yarn added 1,429 packages and left 588 MB on disk. The checkout itself occupied 34.7 MB and contained 52 CI workflow files, a tests directory, and no Dockerfile. There was no build script or target exposed to our harness, so we skipped the build instead of pretending that dependency installation had compiled Electron.

The test command failed with exit code 1 after 7 seconds. Its runner printed Triggering runners: main, then stopped because it could not find a valid output directory. The message accepted Testing, Release, Default, or Debug, or an explicit ELECTRON_OUT_DIR. No spec count was produced. The log proves only that this checkout could not run its suite without a previously compiled Electron output; it does not identify a failing product behavior.

Remote content turns renderer design into a security decision

Electron's security guide says arbitrary untrusted content is a severe risk because application JavaScript can reach the filesystem, shell, and other desktop capabilities. The guide tells developers to disable Node integration for remote content, enable context isolation and process sandboxing, restrict navigation, define a Content Security Policy, validate IPC senders, and limit what preload code exposes. Those are application design rules, not switches a packaging command can choose intelligently.

A 7-second test failure is easy to notice; an overpowered preload is not. Treat each IPC channel as a small API with checked arguments and a named purpose. Do not pass raw Electron objects into a renderer, and do not hand untrusted strings to shell functions. Electron ships security-minded defaults, but a convenience method that exposes generic file access can undo the process boundary your team assumed it had.

v44 requires 64-bit systems and newer macOS releases

Platform support follows Chromium and operating-system support windows. Electron v44 requires macOS 13 or later, and the release removed Windows ia32 and Linux armv7l builds. It also changed renderer access to the clipboard module and removed several old login-item fields. These are defensible maintenance choices, yet they mean an Electron application needs an upgrade policy that accounts for its users' hardware and operating systems.

The same v44 notes contain fixes for crashes, sandbox inheritance, Wayland behavior, printing, GPU handling, ASAR files, and native addons. That breadth explains both Electron's value and its maintenance cost. One framework absorbs a large amount of platform work, while your release testing still has to cover the specific windows, displays, installers, permissions, and native modules your application uses. The 52 CI workflow files in our checkout hint at the upstream matrix; they do not replace yours.

Packaging and updates remain product work

Electron recommends Forge for packaging. Manual distribution means putting application files or an ASAR archive inside platform binaries and rebranding the executable and metadata. Updates add another layer: the official service works for qualifying public GitHub applications on macOS and Windows, while private applications may need static object storage or their own update server. Signing and release credentials belong in that delivery system, not in the renderer.

GitHub showed 122,715 stars, 768 combined open issues and pull requests, and a push on August 26, 2026. Release v44.0.0 landed one day earlier. Those dated signals describe a heavily used project receiving current engine upgrades and fixes, not a quiet wrapper living on old browser code. They also make frequent updates part of the bargain. Electron is the sensible default for a sizeable web-shaped desktop product, provided the team treats security, packaging, and three-platform testing as core engineering work.

Alternatives

ProjectWhat it isPick it when
Tauri gh↗A desktop and mobile framework that pairs a web frontend with Rust and the system webview.pick this instead when a smaller bundle and a Rust backend matter more than identical Chromium rendering.
NeutralinojsA compact desktop framework built around the installed webview and a small native layer.pick this instead when the app needs a narrow native API and the lightest practical wrapper.
NW.js gh↗A Chromium and Node.js desktop runtime with direct Node access from browser contexts.pick this instead when NW.js compatibility or its direct DOM-to-Node model fits an existing application.

Sources

  1. Electron repository and README
  2. Electron security guide
  3. Electron application packaging
  4. Electron application updates
  5. Electron v44.0.0 release

More web reviews

WebKit · js-cookie · ionic-framework · pixijs · django-rest-framework · gin · the whole board →