Beta — Gelectron is a non-commercial, open source project. It's not fully production-ready yet — a few Electron APIs remain stubs — but it's built to work for many apps today.

Beta — Non-Commercial Open Source Project

Electron, reimagined
with Rust & WebView

A drop-in Electron replacement built on Rust and the OS platform WebView. Same JavaScript APIs, 99% smaller binary, ~78% less memory — but still early.

Electron
296 MB
ships Chromium + Node.js
vs
Gelectron
3 MB
compiled Rust binary

Why This Logo?

Electron atom The atom/orbital shape from the Electron logo — the desktop app framework
+
Firefox flame The warm orange tones from Firefox — a nod to the Gecko/Servo engine that inspires Gelectron's long-term roadmap
=
Gelectron logo Gelectron

The Gelectron logo is a visual mashup of what the project actually is: Electron's developer experience wrapped in Firefox-inspired technology.

The atom-like orbital rings pay homage to Electron's iconic branding — because at its core, Gelectron aims to be a drop-in replacement. The warm orange gradient and flame-inspired tones nod to Firefox and the rendering technology that inspired the project.

It's Electron's shape, Firefox's soul. Or at least, that's the idea.

Almost production ready

Gelectron is a non-commercial, community-driven open source project. It's not yet at full production-grade reliability — some Electron APIs are still stubs or incomplete — but it's usable today for many apps, and it's stable enough for most people to build on. It is not affiliated with or endorsed by Electron or Mozilla. Contributions and interest are welcome.

Why Gelectron?

The pitch that convinced us to build it.

3 MB Binary

A compiled Rust binary vs Chromium at 296 MB. Changes how you ship — Docker images, CI pipelines, and downloads all get dramatically smaller.

78% Less Memory

131 MB total RSS vs 586 MB for Electron. No Chromium multi-process overhead means your app uses about a fifth of the RAM.

Same API Surface

Run gelectron . instead of electron .. The familiar BrowserWindow, ipcMain, Menu, dialog APIs you already know. 18 modules working today.

Rust-Powered Core

Window management, native bindings, clipboard, file dialogs, shell operations — all in Rust. Memory-safe, no GC, and fast interop via NAPI-RS bridges.

Platform WebView

Uses the OS native WebView (WebKit on macOS, WebView2 on Windows) for rendering. Stable, hardware-accelerated, and doesn't bundle a browser engine. Long-term goal is Servo.

Open Source

MIT licensed. Non-commercial, community-driven. Contributions welcome. Built in the open on GitHub.

How It Works

If you know Electron, you already know Gelectron.

Before (Electron)
npx electron .
After (Gelectron)
gelectron /path/to/app

Same codebase, different engine under the hood.

Installation Guide

Build it, run it, and see what Gelectron can do.

Before you install

Gelectron is pre-1.0. A few Electron APIs aren't implemented yet, and things can change between versions — but many apps run fine today. Give it a try, and expect occasional rough edges.

1

Install from npm (recommended for macOS & Windows)

npm install -g gelectron-core

Installs the pre-built native binary for your platform. No Rust toolchain required. This is the easiest way to get started.

2

Run your Electron app

gelectron-core /path/to/electron-app

That's it! The app runs with Gelectron instead of Electron.

Linux Installation (Build from Source)

Linux requires building from source. The Linux version is not yet published to npm — you'll need Rust and Node.js to build it. This is intentional and doesn't affect publishing the macOS/Windows npm packages.

1

Clone the repository

git clone https://github.com/mileswolfallen2/gelectron.git
cd gelectron
2

Install dependencies

npm install

Requires Node.js 18+. For the native binary you'll also need Rust 1.75+ — install via rustup.rs.

3

Build the standalone native binary

cargo build --release -p gelectron

Produces target/release/gelectron (~3 MB). Uses tao (windowing) + wry (WebView) — no Chromium, no Servo. First build takes 10–20 minutes; subsequent builds are faster.

4

Run the demo app

cargo run --release -p gelectron -- demo/

Opens a real window with an interactive demo: DOM counter, live clock, animated canvas, CSS grid and flexbox. Validates your build works.

5

Run your Electron app

cargo run --release -p gelectron -- /path/to/your/electron-app

Gelectron reads your app's package.json, patches require('electron') to its compatibility layer, and spawns a Node.js child process with a wry WebView window.

Requirements

  • macOS/Windows (npm method) — Node.js 18+ (no Rust required)
  • Linux (build from source) — Node.js 18+, Rust 1.75+ (via rustup.rs), ~2 GB disk space
  • Rendering — WKWebView (macOS) / WebView2 (Windows) / WebKitGTK (Linux)
  • Time — npm install is fast; building from source first build can take 10–20 minutes

No Rust? Use the Node.js fallback

Don't want to build the native binary? The CLI can run in a pure Node.js shim mode (no real window — API layer only):

node cli/gelectron.js /path/to/electron-app

Built on Proven Technology

Gelectron stands on the shoulders of giants — with honesty about what's actually in use today.

Rust

Memory-safe systems language powering the entire native layer. Window management, IPC bridges, native dialogs, clipboard, file dialogs — all Rust.

Platform WebView

Current renderer. Uses the OS native WebView (WebKit on macOS, WebView2 on Windows). Stable, zero-bundle rendering. Long-term target is Servo.

Servo (target)

Mozilla's next-gen browser engine, designed for embedding. Parallel CSS layout, GPU-accelerated rendering. The long-term vision for Gelectron's rendering.

NAPI-RS

Native Rust bindings for Node.js. Powers clipboard (arboard), screen (tao), file dialogs (rfd), shell (open/trash), and nativeTheme detection.

Your App
HTML / CSS / JavaScript
Gelectron JS Layer
Electron API compatibility (BrowserWindow, IPC, Menu, dialog...)
Gelectron Core (Rust)
Window management (tao), native bindings (NAPI-RS), IPC bridge
Platform WebView
WebKit (macOS) / WebView2 (Windows) — hardware-accelerated
↓ future
Servo Engine
Stylo (CSS) + WebRender (GPU) — long-term target

API Support Status

Real status of Electron API compatibility — no overpromising.

Module Status Notes
app Full Lifecycle, dock, badge, GPU info, about panel, window tracking
ipcMain Full handle, handleOnce, on, once, removeHandler, full EventEmitter
BrowserWindow Partial Create, show, hide, loadURL, loadFile. Missing: DevTools, print, capturePage
Menu Partial buildFromTemplate, native setApplicationMenu. Missing: native click events
clipboard Full Full API: text/HTML/RTF/image/bookmark/find-text, clear, availableFormats, has. Sync FIFO or async bridge
Notification Full Full Electron API (title/subtitle/body/silent/icon/urgency/timeoutType/actions/hasReply/replyPlaceholder/sound/closeButtonText/toastXml). Native OS integration via notify-rust — macOS Notification Center, Windows Toasts, Linux D-Bus. Events: show/click/action/reply/close/failed
screen Partial getPrimaryDisplay/getAllDisplays/getCursorScreenPoint via tao bridge
nativeTheme Partial shouldUseDarkColors, themeSource, shouldSystemUseDarkColors via Rust
dialog Partial Open/save/message/error dialogs via rfd (Rust)
shell Partial openExternal, openPath, showItemInFolder via Rust bridge
ipcRenderer Partial invoke/send/sendSync/on/once. Bridge not always wired
net Partial fetch delegates to globalThis.fetch. Missing: net.request()
Tray Stub API exists, does nothing
autoUpdater Partial setFeedURL/checkForUpdates/downloadUpdate/quitAndInstall; staged apply on relaunch. Packaged apps only
session Stub All methods are no-ops
powerMonitor Stub getSystemIdleState always returns 'active'

4 fully working · 14 partially working · 6 stubs · 32 not started — see full progress

Roadmap

Where Gelectron is headed — with realistic expectations.

Phase 1 — Foundation

  • Basic window creation via Platform WebView
  • Core Electron API compatibility layer (17 modules)
  • IPC between main and renderer
  • Rust bridge for clipboard, screen, nativeTheme
  • CLI entry point (gelectron .)

Phase 2 — Core APIs

  • Flesh out partial modules to full
  • Native OS notifications
  • BrowserWindow feature parity (DevTools, navigation)
  • Proper session and webRequest support

Phase 3 — Ecosystem

  • autoUpdater integration ✓ shipped
  • Protocol handler registration
  • Native Node.js module support
  • Packaging & distribution tools ✓ shipped

Phase 4 — Production Ready

  • Full API parity with Electron
  • Performance optimization
  • Servo rendering integration
  • Cross-platform CI/CD
  • Documentation & guides

Benchmarks

Performance comparisons between Gelectron and Electron — from the bench page. Full methodology and caveats on the detailed benchmarks page.

View Detailed Benchmarks →
Early benchmarks — not final.

Results are 10-run averages. Gelectron uses Platform WebView + Node.js in main process only. Electron uses Chromium + Node.js in renderer. Take these as directional signals.

No Node.js in the renderer. Gelectron's renderer has no Node.js integration. Memory and process metrics are measured from the main process (Node.js 26.3.1) and the platform WebView. This is fundamentally different from Electron, where Node.js runs inside the renderer.

Gelectron

darwin arm64 · Rust + Node.js 26.3.1 (main only) · Platform WebView
Built from benchmarks.html — 10-run averages
Renderer Performance
DOM create/append 5.00M ops/s 0.2 ms
DOM querySelector 441.2K ops/s 6.8 ms
Style recalc ∞ ops/s 0 ms
Canvas 2D draw 2.14M ops/s 0.7 ms
JSON parse 24.6K ops/s 81.4 ms
Array sort (10k) 702 ops/s 71.2 ms
Fibonacci(25) 3.3K ops/s 0.9 ms
Startup & Binary
Startup (10-run avg) 5.601s 5.598–5.604
Binary size 3 MB
Memory (Total RSS)
Average 131.4 MB 131.0–131.7

Electron

darwin arm64 · Chromium v43.2.0
Built from benchmarks.html — 10-run averages
Renderer Performance
DOM create/append 3.85M ops/s 0.26 ms
DOM querySelector 806.5K ops/s 3.72 ms
Style recalc 365.0K ops/s 1.37 ms
Canvas 2D draw 2.05M ops/s 0.73 ms
JSON parse 21.5K ops/s 92.89 ms
Array sort (10k) 565 ops/s 88.52 ms
Fibonacci(25) 2.1K ops/s 1.45 ms
Startup & Binary
Startup (10-run avg) 5.671s 5.668–5.674
Binary size 296 MB
Memory (Total RSS)
Average 585.9 MB 583.3–587.4
Binary Size
Gelectron 99% smaller — 3 MB vs 296 MB
Memory (Total RSS)
Gelectron ~78% less — 131 MB vs 586 MB
Startup
Gelectron ~1.2% faster — 5.60s vs 5.67s
Style Recalc
Effectively instant — < 1ms
DOM querySelector
Electron +83% — 806.5K vs 441.2K
Node.js
Gelectron has no Node.js in the renderer — secure but less flexible
Methodology.

Both benchmarks ran on the same machine (darwin arm64). Gelectron used Platform WebView + Node.js 26.3.1 (main process only). Electron used Chromium v43.2.0 with Node.js in the renderer. Results are 10-run averages with min/max reported. These numbers will change as both projects evolve. Full details on the benchmarks page.

Frequently Asked Questions

Got questions? We've got answers — candid ones.

Gelectron is an open-source alternative to Electron that replaces Chromium with the OS Platform WebView and adds a Rust core for native operations. It aims to be a drop-in replacement — you run gelectron . instead of electron .. It's still maturing and a few APIs are incomplete, but many apps run fine.

Electron bundles a full copy of Chromium (~296 MB) and consumes significant memory (~586 MB total RSS). Gelectron aims to provide the same developer experience with a 3 MB binary and 131 MB memory footprint. The trade-off: fewer APIs work, no Node.js in the renderer, and a less mature ecosystem.

Not fully production-ready yet. Gelectron is a non-commercial, community-driven project, and 32 of 56 Electron modules aren't implemented. For many apps it works well today, but expect rough edges and occasional API changes. We'll announce when it reaches full stability.

Currently: Platform WebView. Gelectron uses the OS native WebView (WebKit on macOS, WebView2 on Windows) for rendering. Long-term target: Servo. The Rust-native rendering engine from Mozilla is the vision, but it's not ready for embedding in production apps yet. The Platform WebView gives us a stable, zero-bundle rendering layer in the meantime.

Eventually, yes — that's the goal. Simple apps that use only BrowserWindow, ipcMain, Menu, and dialog may work today. Apps using Tray, session, native Node.js modules, or calling require() in the renderer will not work. autoUpdater works for packaged apps with a hosted update feed.

The core is written in Rust, using NAPI-RS bindings for Node.js interop, tao for window management, and a JavaScript compatibility layer that maps Electron's API surface to Gelectron's Rust internals. The renderer is the OS Platform WebView.

Currently, Gelectron targets macOS, Linux, and Windows. Cross-platform support leverages Rust's cross-compilation story and each platform's native WebView.

Absolutely! Gelectron is MIT licensed and open source. Check out the GitHub repo to explore the code, open issues, or submit pull requests. All contributions are welcome — even just starring the repo helps.

On current benchmarks (10-run averages): Gelectron is 99% smaller (3 MB vs 296 MB), uses ~78% less memory (131 MB vs 586 MB), and is ~14% faster on renderer operations (DOM, Canvas, JSON, sort, recursion). However, Electron is 83% faster on DOM querySelector, has a mature DevTools experience, and supports far more APIs. See the full benchmarks page for details.

No. Gelectron's renderer has no Node.js integration — no require(), no fs, no native modules. All Node.js interaction goes through IPC to the main process. This is more secure (no Node.js injection attacks) but requires restructuring preload scripts for existing Electron apps.

Gelectron is a non-commercial passion project with no firm timeline. The roadmap outlines the major phases, but progress depends on contributor interest. Follow the repo for updates. If you'd like to help accelerate it, contributions are welcome.

Already being built with

Libraries, apps, and companies are shipping on Gelectron today.

See the showcase →
Gelectron Ollama Vanilla Chat Diskette Labs

Interested in the project?

Star the repo, open an issue, or just follow along. Gelectron is early, but the vision is real.

Check it out on GitHub →