
Electrobun
github.com/blackboardsh/electrobun- Category
- Developer Tools
- Rank
- No. 221Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Coding · Deployment & Operations
- Interfaces
- Desktop · CLI · API · SDK
- Builder
- @blackboardsh
- GitHub
- 12.8k stars
- Latest release
- v2.0.2-beta.27
- Date
About
A TypeScript-first framework for building ultra-fast, tiny (~12MB), cross-platform desktop applications. Uses Bun runtime and Zig native bindings to create apps that start in seconds with automatic updates as small as 14KB.
What it does
Electrobun packages desktop interfaces around system webviews, with optional bundled Chromium and native GPU surfaces. Application logic can run in its JSC-based Cottontail runtime or Bun, while typed RPC connects isolated main and webview processes. A native layer built with Zig, Objective-C, and C++ handles windows and operating-system integration.
Why it's ranked here
The project combines a coherent build, distribution, update, rendering, and runtime story instead of supplying only a window wrapper. Its extensive integration harness covers TypeScript, Go, and Rust hosts. The caution is governance: issues and pull requests are welcomed, but the maintainer explicitly promises no review, response, or merge.
What's good
Projects pin an exact framework release, and the build tool caches that release's platform archive into a generated local development kit. Updates try binary patches before compressed full downloads. Developers can choose system webviews for compact bundles, pin Chromium for rendering consistency, or combine isolated webviews with native GPU surfaces. Documentation examples receive syntax, link, and TypeScript checks.
Tradeoffs
Bundled Chromium trades smaller output for rendering consistency. Linux applications require GTK, WebKitGTK, AppIndicator, and SVG runtime packages on end-user machines. Dependency management remains outside the framework, delegated to npm, Bun, pnpm, Yarn, or a custom executable. Building the framework itself also requires native platform toolchains and CMake.
How to use it well
Pick Electrobun when a desktop product needs web-based UI, native windows, typed process boundaries, built-in distribution, and update machinery under one workflow. Pin the framework release and choose the renderer deliberately. Use system webviews for compact delivery, bundled Chromium for consistency, or native GPU surfaces for graphics work. Bring a separate package manager because Electrobun does not resolve application dependencies.
Technical notes+
package/src/browser/index.ts implements Electroview, typed RPC transport, encrypted loopback WebSocket messaging, queued delivery, and a native bridge fallback. package/src/preload/index.ts initializes encryption, lifecycle handling, navigation interception, drag regions, webview tags, WGPU tags, and UI tags. package/src/launcher/main.ts loads ElectrobunCore through Bun FFI, supports ASAR or flat application resources, and runs the native main-thread loop. kitchen/src/bun/index.ts, kitchen/src/go/main.go, and kitchen/src/rust/main.rs provide integration runners across TypeScript, Go, and Rust hosts. docs/scripts/check-code-examples.mjs validates internal links and documentation code syntax, then typechecks selected examples against package sources; docs/scripts/project-boundary.test.mjs checks reproducible installation and deployment boundaries.
Observed
- Application interface
- TypeScript for main processes and webviews, with typed RPC between isolated processes.
- Native implementation
- The platform layer combines Zig, Objective-C, and C++.
- CLI
- Hutch is the native build and workspace CLI.
- Installation surface
- Hutch installs globally; npm and Bun executors can bootstrap the initializer through a small forwarding package.
- Dependency management
- Application dependencies are delegated to npm, Bun, pnpm, Yarn, or a custom executable.
- Platform support
- Development instructions cover macOS, Windows, and Linux.
- Runtime choices
- Cottontail is the default JSC-based JavaScript runtime, with Bun available for the main process.
- Renderer choices
- Applications can use system webviews, optionally bundle Chromium, and optionally bundle WGPU for native GPU surfaces.
Read from README.md, debug.js, docs/hutch.config.ts, docs/astro.config.mjs, docs/src/content.config.ts, docs/scripts/check-code-examples.mjs, docs/scripts/project-boundary.test.mjs, kitchen/src/go/main.go, kitchen/src/bun/index.ts, kitchen/src/rust/main.rs, package/src/browser/index.ts, package/src/launcher/main.ts, package/src/preload/index.ts.
What it can do
Build cross-platform desktop applications
TypeScript code → Desktop application executable
Create ultra-small application bundles
Application source code → Compressed desktop app (~12MB)
Deploy automatic application updates
Updated application code → Incremental update packages (as small as 14KB)
Enable fast inter-process communication
RPC calls between application processes → Data exchange between processes
Compile TypeScript with Bun runtime
TypeScript source files → Optimized JavaScript runtime code
Generate native bindings using Zig
Application logic requiring native performance → High-performance native code bindings
Tags
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.