This is very conceptual and kind of OT... but leaving it here.
I'd thought of doing similar, by having a websocket channel and a state manager similar to Redux that simply received actions (dispatched from FE), then the state changes delivered as a stream of JSON Diffs.
One step further could be including the UI structure instead of state... though not sure if this would be very well performing at all, since that's what HTML itself represents. It's effectively what Blazor does with the server round trip configuration, and with any kind of latency it's pretty painful in practice.