A couple of the main reasons I'm using vue3 in my uilbuilder dashboard is the router mechanism (I'm assigning a route page for every menu entry) and the capability to create custom components.
How would you handle this in new uibuilder framework?
That is an excellent question. I believe that there are native router libraries but I've never managed to find time to play with them.
Certainly there are low-level ways to interrupt URL changes (obviously because even the frameworks have to handle that at a browser level at some point). I don't as yet have anything specific in the uibuilder client library to handle such things in the client side. I seem to remember it is in the roadmap but quite a long way down the list.
You could also bypass the issue by not using a routing based solution but instead use some other data point to swap visible elements (which is all a client router is doing anyway). Not seriously suggesting that but it is an option.
If you are happy to live with URL hash parameters, it is actually quite easy to roll your own solution I think. Since changing anything after the # in the URL does not trigger a page load.