Cottontail, Electrobun 2.0, and Why I Decided to Jian-Yang Anthropic

yoav1 pts0 comments

Cottontail, Electrobun 2.0, and Why I Decided to Jian-Yang Anthropic - Blackboard Blog

← Back to Blog<br>Cottontail, Electrobun 2.0, and Why I Decided to Jian-Yang Anthropic<br>By Yoav August 21, 2026 electrobun launch

Electrobun is a small, fast, batteries-included desktop app framework that I’ve been working on and off on for the past three years.

You can read the docs, and since it’s open source, visit the repo and give it a star if you haven’t already.

Originally I was building an early version of Dash and got so frustrated with Electron’s size, performance, and distribution story that I decided to build something better. I’ve spent 20+ years as an engineer and engineering leader at startups and unicorns, systems I’ve architected and single-handedly built 10+ years ago still power billions of pageviews and hundreds of thousands of people’s working days. That gave me just enough hubris to think building a cross-platform desktop app framework from scratch before agents were a thing was a reasonable side quest that I could take on in addition to the other things I’m building at my lab.

After getting positive traction from people who discovered what I was building, I took some time to polish it up enough for other people to use and released Electrobun 1.x in February, that was 6 months ago and still mostly pre-agent. Wait until you see what I’ve been cooking up for Electrobun 2.0 now that we’re fully in the agentic era.

For those reading this that are new to Electrobun, the basic idea is that you should be able to build and ship a tiny, fast desktop app, with familiar technologies without accepting all the baggage that has historically come with doing that.

Back in February Electrobun 1.x gave you:

System webviews or pinned Chromium. You could use the system webview and keep your app tiny, or bundle a specific version of CEF when cross-platform browser consistency mattered.

Tiny differential updates. Electrobun has a batteries-included update system built around zstd and an optimized Zig implementation of bsdiff I originally wrote by hand to learn Zig before LLMs. The tiniest possible distributable size, and even tinier updates as small as 2KB so you can ship as often as you like.

A custom OOPIF architecture. gives you isolated webviews that behave like super-iframes. At the time Electron was still using Chromium’s long-deprecated tag and I set out to build my own. In Electrobun you can build something like a multi-tab browser where every tab is actually isolated in its own webview and composite them into the same UI, using the same API whether you’re using system webviews or CEF.

A fast end-to-end toolchain. Dev, build, packaging, code signing, updates and distribution were part of the framework. Bring S3, R2 or basically any static file host and the Electrobun CLI handled the rest.

The launch was explosive. 10k stars in a few weeks. Electrobun is now approaching 13k GitHub stars, hundreds of apps have been built with it, and the star chart basically went vertical at launch and stayed that way for months.

I wanted to see how far I could push the architecture and prove out the renderer modularity so in March I added WGPU support, enabled by just setting bundleWGPU to true. This put a custom build of Dawn (Chrome’s WGPU implementation) in your app bundle and exposed it to TypeScript.

Electrobun could now create native GPU windows on macOS, Windows, and Linux and drive them directly from Bun. I added Three.js and Babylon adapters so you could use their APIs without putting a WebGL canvas in a browser.

More interestingly, the architecture I’d already built for turned out to work for GPU surfaces too, so I added . Super GPU surfaces to go with your super-iframes.

You could now take a native WGPU surface and composite it directly into a normal web UI in the same way you could composite another isolated webview into it. Your settings panel might be HTML, your editor might be HTML, and the viewport in the middle could be a native GPU surface driven directly from the main process.

People used this to build game IDEs and other applications I hadn’t anticipated. I ported DOOM to Electrobun two ways and built a little GPU digit classifier template you can try out. Some developers went further and shipped custom Zig sidecars that used Electrobun’s WGPU and native libraries directly, passing window handles around and taking over from there.

After 1.x I took a step back and went back to Dash, the app that started this whole side quest in the first place. The world had materially changed and my original idea of building a workspace that unified Code and NoCode was obsolete. More on that below.

For the last two months I’ve been building at agent speed shaping how Electrobun and Dash fit together into a new platform. Today I’m announcing the first half of that platform, the foundation, which I’m calling Electrobun 2.0.

What’s new

Before we dive into how I got here I’ll give you a quick lay of the land.

Hutch...

electrobun build building built from decided

Related Articles