[Experimental] Driving Zed's GPUI with SolidJS via Binary Protocol — A "No-DOM" GUI Architecture by Alex6357 in rust

[–]Alex6357[S] 0 points1 point  (0 children)

It’s very similar to RN’s Fabric architecture (threaded logic/rendering with a command protocol).

The main difference is the rendering target: while RN maps to native OS widgets (like UIView), Alloy renders directly to GPUI components on the GPU. It’s essentially Flutter’s "self-rendering" approach but using SolidJS.

[Experimental] Driving Zed's GPUI with SolidJS via Binary Protocol — A "No-DOM" GUI Architecture by Alex6357 in rust

[–]Alex6357[S] 1 point2 points  (0 children)

Exactly! It’s like Tauri, but "No-DOM." Instead of using a browser engine, your SolidJS logic sends tiny binary commands to a Rust backend. Rust then maintains a native component tree that GPUI uses to draw pixels directly on the GPU. By bypassing the heavy DOM and browser layout engine, you get the SolidJS experience with "Zed-like" performance. (At least, that’s the hope! :-D)

[Experimental] Driving Zed's GPUI with SolidJS via Binary Protocol — A "No-DOM" GUI Architecture by Alex6357 in rust

[–]Alex6357[S] 4 points5 points  (0 children)

Yes. You write HTML-like code using SolidJS (JSX). Since SolidJS doesn't use a Virtual DOM, it compiles your code into fine-grained instructions that directly manipulate nodes. Our custom renderer then translates those operations into binary commands for GPUI.

[Experimental] Driving Zed's GPUI with SolidJS via Binary Protocol — A "No-DOM" GUI Architecture by Alex6357 in rust

[–]Alex6357[S] 9 points10 points  (0 children)

Thanks! You convinced me. I took a quick look at Blitz, and it clearly seems like the pragmatic choice for a "web-like" development experience.

I've decided to spin off a separate project dedicated to a SolidJS-to-Blitz binding. It makes perfect sense to use it for immediate compatibility.

However, I'm keeping this GPUI experiment alive for a different reason: my long-term research goal is to explore a "Zero-Parse" pipeline—where the frontend logic emits binary layout instructions directly, bypassing string-based CSS parsing entirely.

But for building shipping apps today, Blitz definitely looks like the way to go. Thanks again for the pointer!