Electron alternatives

A lightweight Electron alternative without Chromium

bunmaska is a drop-in Electron alternative built on Bun and your operating system's own WebKit. It keeps the Electron API you already know and drops the one thing that makes Electron apps heavy: the bundled copy of Chromium in every build.

Why look past Electron?

Electron is a decade-old incumbent that runs half your desktop, and for many teams it's still the right call. But it ships a whole browser engine with every app, which means big downloads, a chunk of RAM per window, and a security treadmill: every Chromium CVE is one you re-ship, even when it has nothing to do with your code. A lighter Electron alternative that renders on the system's own WebKit sidesteps all three - the OS patches the browser engine for you.

What bunmaska keeps

The API. You keep writing against app, BrowserWindow, ipcMain, ipcRenderer, Menu, dialog, clipboard, and webContents - so migrating an existing app is mostly changing an import. See the migration guide and the exact API parity matrix.

What makes it different from other Electron alternatives

How it compares

ToolRendererLanguageAPI
ElectronBundled ChromiumJS / TSThe original
TauriSystem WebViewRust + JSIts own
ElectrobunSystem WebViewBun / TSIts own
bunmaskaSystem WebKitBun / TSDrop-in Electron

Head-to-heads: bunmaska vs Electron, bunmaska vs Electrobun, and Tauri without Rust.

The honest part

It's alpha. It runs on macOS, Linux, and Windows (x64), it covers most of the Electron surface real apps use, and it's single-process (no per-window crash isolation). We publish exactly what works, per platform, on the parity matrix - no vapor. If you need the last slice of the API or battle-tested stability today, use Electron and check back.

FAQ

Is bunmaska production-ready?

No. It's alpha, and it says so. Use it for the app you were going to rewrite anyway; if you're a large company evaluating it, please read the word 'alpha' three more times before proceeding.

Why use bunmaska instead of Electron?

No bundled Chromium. Your app is a fraction of the size, the OS patches the browser engine for you, and native modules need no node-gyp build step. If you need the last slice of Electron's API or battle-tested stability today, use Electron and check back.

Does bunmaska really have no Chromium?

Correct. macOS and Linux render on the system's own WebKit (WKWebView and WebKitGTK); Windows ships a from-source WinCairo WebKit - the real WebKit port, never WebView2 or Chromium.

How is bunmaska a drop-in Electron replacement?

It keeps Electron's module names and shapes - app, BrowserWindow, ipcMain, ipcRenderer, Menu, dialog, clipboard, webContents - so migrating is mostly changing an import. It covers most of the surface a real app uses; the exact per-method parity, per platform, lives in the parity matrix.

How do native modules work without node-gyp?

A native module is a .ts file that dlopens the OS directly through bun:ffi. No node-gyp, no N-API, no electron-rebuild, no per-arch prebuild matrix, no compile step. Nothing to rebuild, because there was never anything to build.

What breaks?

It's alpha: some of the Electron surface isn't implemented yet (it throws a clear error naming the missing module, not a mystery failure), and a few APIs differ per platform. We publish exactly which on the parity matrix. It's also single-process, so there's no per-window crash isolation - that's the price of the lightness.

Get started →