Hi Joern,
thanks for the input. I am super busy right now with wrapping up the neo product (framework) website, but I would like to give a little bit more input.
Imagine running a framework, your apps & components within Web Workers.
Example (Desktop please):
https://neomjs.com/examples/component/multiWindowHelix/
You can scroll over the helix vertically to zoom and horizontally to rotate. The helix is just using DOM nodes to stress out the browser with massive amounts of updates.
Now you have the controls on the right side, to also change the helix content. The fun part starts when clicking the window button at the top right => the controls get moved into a popup window (this is actually the same JS instance of the controls panel) => just an unmount inside the main window and a remount inside the other window. Using the controls still works as before and closing the popup moves the controls back in.
Now if you think about it: a worker has no access to the DOM (except for OffscreenCanvas). So in this scenario there is no way around an abstraction layer. Since the structure is almost like json, it can get serialised, sent to a different worker to figure out the deltas and these get send to different main threads as needed. Obviously the deltas do get applied using real DOM API operations, which end the circle.
Best regards,
Tobias