Introduction
Bunmaska is a drop-in Electron replacement built on Bun + WebKit - same APIs, none of the Chromium.
You already know how to use Bunmaska, because it looks exactly like Electron. You write against app, BrowserWindow, ipcMain, ipcRenderer, Menu, dialog, clipboard - the names you’ve been typing for years. The difference is everything underneath:
- Runtime: Bun, not Node.
- Renderer: the system WebKit (
WKWebViewon macOS, WebKitGTK on Linux) - not a second copy of Chromium bundled into every app. - Native code: none. The whole framework is TypeScript calling the operating system through
bun:ffi. Zero compiled native code, zero runtime dependencies.
The result is an app that downloads in ~16-23 MB instead of 150 MB+, and a native-module story that doesn’t involve node-gyp ever again.
The three things that matter
- No bundled browser. We don’t ship Chromium - your apps render on WebKit instead, so there’s no second browser engine baked into each one.
- Buildless native modules. A native module is a
.tsfile thatdlopens the OS. No N-API, noelectron-rebuild, no compile step. See Native Modules. - Drop-in API. The module names and shapes match Electron’s, with a
bunmaska/electronshim so you can point your existing imports at it. We cover roughly 70-80% of what real apps actually use, and we publish the gaps so you can check before you commit.
Status
It’s alpha. It genuinely works on macOS and Linux today - real windows, system WebKit rendering, Electron-style IPC with context isolation, menus, tray, dialogs, clipboard, nativeImage, safeStorage, powerMonitor, capturePage/printToPDF, and a CLI that packages real .dmg/.deb distributables. There’s no Windows yet, and some method-level corners are still being filled in.
If you’re evaluating it for production, read the word “alpha” one more time, then keep reading anyway.
Where to go next
- Why Bunmaska - the case, made honestly.
- Installation -
npm i bunmaska. - Quickstart - from zero to a window in about ninety seconds.