I ended up writing my own runtime because existing frameworks didn’t handle lifecycle, state ownership, and long running UI cleanly enough for that use case.
It focuses on direct DOM ownership, explicit lifecycle control, and predictable cleanup instead of a virtual DOM.
Open sourcing it to see if this approach resonates with others building similar systems.
There’s an interactive lab in the repo, but here’s a direct link: https://bleedingxiko.github.io/RAGOT/lab/