The DOM on the other hand is stateful, and is very slow to mutate, which is the core problem of high-level web dev and really not something developers have any control over.
The DOM on the other hand is stateful, and is very slow to mutate, which is the core problem of high-level web dev and really not something developers have any control over.
This is not true or at least only deceptively so. If you think about "global state" in a game or more specifically in a rendering scene as "all of the objects in the scene" then the main difference is the lack of acceleration structures for the web. Most of the objects in a scene are never touched because AABB or some other structure allows you to cull large number of objects without ever actually touching them. If objects in the scene change, you definitely need to update those acceleration structures. Fortunately for games, those updates are quick and there are typically not that many of them.
This is why systems like Flutter, despite all their downsides, can be really snappy. They skip the DOM and all its baggage and just use their own "app-first" layout system.
Take css translate3d, it forces the browser to use gpu to handle those transitions.
At the risk of sounding even more ignorant, but could the DOM be pushed onto the gpu layer, where things happen so fast it doesn’t matter at all how often relayouts/reflows happen? Obviously it’s using the gpu to render, no doubt, but what is about website rendering that’s just that much slower than a 2d video game?
I guess I’m describing React’s circumvention of the browser to some degree. Ideally, we want something like React gone, and implemented at the browser level.
Some of it already is. The actual drawing-to-an-image happens on the GPU, so maybe that was a bit of a misnomer for me to point out in my last comment, but that's not the expensive part. Reflow is the browser deciding "here's everything on the page, here's all their CSS styles, and this one CSS style changed, or this new element got added, how does that affect everything else?"
Thing is, you're welcome to pull everything out of that reflow process! Through transforms and absolute-positioning, or the canvas, or WebGL, or whatever. And things will be a lot faster! But now you're taking on responsibility for a lot of stuff. Many of the benefits, in fact, that cause so many people to build on the web in the first place. The web has the most powerful and flexible and expansive UI layout system in the world. It's just that that comes with a cost.
The ideal scenario would be to have a "slimmed down" reflow mode that only does "app things" and doesn't get tripped up on "document things". However, that would be fundamentally incompatible with some parts of the web as we know it, and would fragment the platform. Here's an example of one of those weird pieces of baggage: https://wilsonpage.co.uk/preventing-layout-thrashing/. The browser doesn't know what you're going to do immediately after mutating the DOM, so it has to assume the worst in some cases.