Electron
A framework for building desktop apps with web tech (HTML, CSS, JS). Electron bundles Chromium + Node.js — your web app becomes a native desktop app for Windows, macOS, Linux. Used by VS Code, Discord, Slack, Spotify. Easy but memory-heavy.
GitHub (now OpenJS) · Created Electron for Atom editor in 2013
- Desktop apps for web devs.
- Cross-platform desktop (Win/Mac/Linux).
- Apps needing web + native features.
- Prototypes and tools.
- Performance-critical apps (use native/Tauri).
- When memory/size matters.
- When you need minimal footprint.
Definition
Electron embeds a Chromium browser and Node.js runtime into a desktop app. Main process (Node.js) handles OS APIs; renderer process (Chromium) renders UI. One codebase for all platforms. IPC between main and renderer. Auto-updates, system tray, native menus.
Why it exists
To let web developers build desktop apps using the skills they already have, with one codebase for all OSes.
How it works
Main process (Node.js) manages windows, menus, OS integration. Renderer process (Chromium) renders your web UI. IPC (ipcMain/ipcRenderer) communicates between them. electron-builder packages for each OS. Auto-updater built in.
Scaling limits
Memory heavy (each app bundles Chromium). Apps can be 100-300MB. Security concerns (Node in renderer). Battery drain vs native apps.
Cost shape
Free and open source.
Alternatives
- Tauri — Smaller bundles, faster, Rust backend, less mature.
- Native (Swift/Kotlin/Win32) — Best performance, platform-specific.
- Flutter Desktop — Dart, good performance, smaller desktop ecosystem.
Failure modes
- High memory usage.
- Large bundle size.
- Security (Node in renderer).
- Battery drain.