| name | electrobun-dev |
| description | This skill should be used when the user asks to "run electrobun dev", "electrobun development mode", "electrobun --watch", "hot reload electrobun", "CEF devtools", or is debugging the electrobun renderer or understanding the dev build cycle. |
| version | 1.0.0 |
Electrobun Dev Mode
Commands
electrobun dev
electrobun dev --watch
Shorthand via package.json (standard templates):
bun start
bun run dev
What Happens on electrobun dev
- Reads
electrobun.config.ts
- Downloads any missing native binaries (Bun, launcher, WGPU/CEF if configured)
- Bundles
build.bun.entrypoint via Bun.build() in dev mode (no minify, sourcemaps inline)
- Bundles each
build.views.* entrypoint
- Copies
build.copy files to build output
- Skips codesign and notarization
- Writes app bundle to
build/dev-<os>-<arch>/
- Launches the app, streaming stdout/stderr to your terminal
Watch Mode (--watch)
After initial build+launch, watch mode monitors:
- Dir containing
build.bun.entrypoint
- Dir(s) containing each
build.views.* entrypoint
- Dirs listed in
build.watch (extra paths)
- Dirs of files listed in
build.copy
Debounce: 300ms — rapid saves are coalesced into one rebuild.
Ignored automatically: build/, artifacts/, node_modules/, and patterns in build.watchIgnore.
On change: kills running app → rebuilds → relaunches.
Extra watch paths
build: {
watch: ["src/shared/", "assets/"],
watchIgnore: ["src/**/*.test.ts", "src/**/*.spec.ts"],
}
CEF DevTools (Chromium inspector)
When using renderer: "cef" or defaultRenderer: "cef", the CEF renderer exposes Chrome DevTools at:
http://localhost:9222
Open in any Chrome/Chromium browser while the app is running. Lists all active renderer pages — click to inspect.
Note: DevTools are only available in dev builds. They are not exposed in canary or stable.
Native WebView Debugging (macOS)
For renderer: "native" (WKWebView), enable the developer extras:
const view = new BrowserView({ ... });
view.openDevTools();
Or in Safari: Develop → [Your App] → [webview name]
Debugging Tips
- Console output: All
console.log from bun-side code appears in the terminal. Renderer-side console.log only appears in devtools (not terminal).
- RPC tracing: Add
console.log to request/message handlers to trace cross-process calls.
- Source maps: Dev builds include inline source maps. Stack traces point to
.ts source lines.
- Slow reload? Add only changed dirs to
build.watch rather than broad patterns.
- App not relaunching? If the app process is holding a file lock, kill it manually:
pkill -f "<AppName>"
Build Output (dev)
build/dev-macos-arm64/
└── <AppName>-dev.app/
└── Contents/
├── MacOS/
│ ├── launcher # native launcher
│ └── main.js # bundled bun entrypoint
├── Resources/
│ ├── <viewname>/ # bundled renderer
│ └── bun # bun runtime binary
└── Info.plist