Crucially, they don’t have any shared context
you could bake that into the OS itself, and I think it would actually be a very good architecture to do that
Right, I mentioned that you can do this at the OS level in my comment. However, the way iOS does it is not general, it’s something devs have to do on case by case basis. What I’m talking about is the decoupling of the UI from the logic being the default. The OS can present a single unified UI to the user, and the apps just provide service functionality. The app can then add a default view for itself, but the user could adapt it any way they wanted.
I’m not sure I fully understand. Having a pre-made UI would limit what functionality could be implemented. And it sounds like the OS developer making 90% of an app then just letting third parties plug in their back end. Like a white label kind of thing? Or do you mean something more like UIKit/SwiftUI?
No more than the GUI toolkit that the OS already provides. You’d just build UIs like you normally do, and then specify the endpoints that the widgets connect to for the data. The key here is that all apps should be forced to explicitly provide an API layer that the UI component talks to, and that anything you as the user want should be able to talk to that API.