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, Linux, and Windows today - real windows, the OS’s own WebKit rendering (system on macOS/Linux, a from-source WinCairo build bundled on Windows), Electron-style IPC with context isolation, menus, tray, dialogs, clipboard (incl. images), nativeImage, safeStorage, powerMonitor, and a CLI that packages real .app/.deb/.exe distributables (plus .dmg with a flag). A few APIs differ per platform - printToPDF/capturePage are macOS-only, and those two plus custom protocol:// are engine-blocked on Windows - and the parity matrix is honest about every cell. 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.