Electrobun v1: Build fast, tiny, and cross-platform desktop apps with TypeScript
71 points
3 hours ago
| 14 comments
| blackboard.sh
| HN
I'm building a commercial macOS app with Electrobun [1]. I have previously written the same app with Tauri. I'll say that, while I love Tauri, using Electrobun has been an absolute breeze. I got the same app done in roughly 70% of the time [2]. It's a very productive stack. In no small part due to Electrobun, but also the fact that Bun has tons of DX niceties and a builtin bundler.

Electrobun lets you open/manipulate/close webview windows and communicate with them using typed rpc. It also handles building, code signing, and notarization.

And because I'm using Bun, running an HMR + React + Tailwind server is just one command (`bun ./index.html`) or like 5 lines of code. Pass --console and the webview's console.log()s get streamed to your Terminal too.

There's tons of other things Electrobun does that I haven't even mentioned, because I haven't interacted much with them yet. E.g. I know that it lets you show platform-native notifications, prompts/popups, etc.

There also is a very impressive updating mechanism that relies on a bsdiff implementation written in Zig. You just ship the deltas, so updates to very large apps are just a few KBs most of the time.

It's genuinely a very productive stack and impressive piece of tech.

[1] Not affiliated - I just like the project.

[2]: The API and implementation was clear, so I'll cautiously say this is not a case of "rewrites are always faster". In fact, the Tauri version was a rewrite too :)

KingOfCoders
16 minutes ago
[-]
Moved from the molasses of VSCode to Rust-based Zed, no comparison. The second is snappy, responsive, uses much less memory (I can have 5 Zed open at the same time, no problems), not looking back.
reply
Alifatisk
23 minutes ago
[-]
Title should maybe specify that this is a blogpost from the author reflecting over the project. There’s better link to showcase the actual project https://blackboard.sh/electrobun/docs
reply
maddada
10 days ago
[-]
Looks very promising, will be building my next project with it. Full TS stack is where I'm most productive. I'm glad we now have a more performant and lean alternative to Electron while not needing to deal with Rust and long compilation steps.
reply
lukevp
1 hour ago
[-]
One of the main problems I see with tauri is that system web views just aren’t a great solution for a ui framework. Partly because Linux doesn’t have an official webview implementation, partly because the web views across OS versions have differences (eg. Tauri on Linux had a benchmark saying the boot time was 20+ seconds because of the webview, and win 7 and I think even early versions of win 10 do not use the edge webview).

This is a lot of tradeoffs for saving 100 megs.

I understand that we should be good stewards of our customers’ hardware and not waste things unnecessarily, but also have to balance that with shipping something and not worrying about all the edge cases. Most people in developed countries have Internet connections of 100+ mbps, which means the app will still download in <10 seconds.

Does electrobun support using an embedded chromium for the renderer? I went to the project readme and it was really unclear if that’s a currently-supported option and if so, how to use it.

reply
Bolwin
18 minutes ago
[-]
Why don't any of the major distros have a webview? Seems an obvious move if you want apps and alongside user experience, apps are the biggest barrier to linux adoption
reply
onimishra
1 hour ago
[-]
“System's native webview as renderer, CEF Optional”

Taken from the product site (not this blog post) that was linked by another user. So you get to choose it would seem.

reply
jauntywundrkind
55 minutes ago
[-]
There is a ton of work going into a Tauri based on CEF. https://github.com/tauri-apps/tauri/tree/feat/cef

My hope is this still acts like a library that multiple Tauri instances share. That would still have the upside of Tauri's shared library architecture (boo statically compiled programs, what a waste of precious ram!) while still letting us have a viable runtime. First app load might not be lightning fast but second app load is hopefully faster!! The OS webviews range from mediocre to absolute garbage; this to me would be a great improvement, that makes me happy!

reply
sumolessons
1 hour ago
[-]
This looks promising. And it's exciting to think it could also target mobile [1].

[1]: https://github.com/oven-sh/bun/issues/21237

reply
nine_k
2 hours ago
[-]
/* Looked at the product for which Electrobun was built, co(lab). «Focus on building instead of managing tools. Keep your code, browser, terminal, notes, and git workflow in one unified interface.» Well, a great idea! This is what Emacs mostly gives me. */
reply
zdragnar
3 hours ago
[-]
Neat! Here's the project main page for those interested in more than the release announcement:

https://blackboard.sh/electrobun/docs/

It certainly looks clean enough, and I'm more familiar with zig than rust, so I might give it a shot.

reply
hu3
3 hours ago
[-]
I see a lot of game devs in discord experimenting with Electrobun to release desktop games.

I think it's going to eat a piece of the Electron pie for Steam indie games.

Most stay with bun after seeing how fast and seamless it is to run typescript games with instant auto reload:

bun --watch game.ts

reply
hopfog
53 minutes ago
[-]
What Discord server are you referring to? Would love to join.
reply
egeozcan
1 hour ago
[-]
I do a lot of web development, and even if we set the great tooling aside for a moment, Bun is still a major improvement (a real leap, I’d say) when it comes to performance.
reply
GCUMstlyHarmls
2 hours ago
[-]
Are many games built with Electron ...? I know there are a few HTML5 games, crosscode was the first one I recall seeing that really pushed it. Aren't most small games Unity or Godot?
reply
hopfog
50 minutes ago
[-]
CrossCode is a marvel in that they had to build their own runtime: https://news.ycombinator.com/item?id=41155807

I think the most famous Electron game is Vampire Suvivors, but it has since been ported to Unity.

reply
synergy20
2 hours ago
[-]
size? performance? bun last time I checked alone is 130MB
reply
perpil
1 hour ago
[-]
This page says bundle size is 14MB: https://blackboard.sh/electrobun/docs/
reply
Bolwin
17 minutes ago
[-]
14MB compressed though. No note on uncompressed
reply
rubymamis
1 hour ago
[-]
I guess since Electron apps are 500MB+, 14MB is considered "tiny".
reply
skybrian
2 hours ago
[-]
I'm wondering about security for this sort of thing. I guess it's like node.js in the sense that while you could load JavaScript code downloaded from the Internet at runtime, you probably shouldn't? Any additional gotchas due to the web view?
reply
phplovesong
49 minutes ago
[-]
Are there any numbers on comparison to electron?
reply
Imustaskforhelp
1 hour ago
[-]
If someone from Electrobun is reading this. Can Electrobun compile to android as well. I want to create a simple application which can take some index.html and pass an adblocker and create an app out of it since I think this idea is pretty cool.

I ended up having to use Ionic to create a html <-> Android app thing within github actions but Ionic doesn't support ad blocking abilities.

reply
queenkjuul
3 hours ago
[-]
I'm going to production with a new Electron app at my job this week, i wish this had existed a year ago lol. Electron Builder does a pretty good job making the updates and signatures not TOO painful but it hasn't been painless by any stretch.

Looks cool, I'll try this for my next personal desktop project and see how it goes

reply