But the complexity that emerges is
not from supporting multiple devices! It comes from retrofitting everything atop a model originally designed for navigating a graph of linked documents. This is a severe deficiency in the original design, and no framework can patch it over. As developers, we're the ones left holding the pieces to an abortion of design day after day. This state of affairs is unacceptable.
I remember when Swing was big. Everyone was gushing about it despite obvious flaws: non-native UI, poor startup time, horrible accessibility, and ridiculous memory consumption. Industry loves the idea of one platform-to-rule-them-all, no matter how far behind the uber-platform is. It would rather dump endless amounts of money and time into a patchwork of hacks than admit that it was wrong.
We're way past due for a VM for webapps. I don't see why the VM couldn't be added as a dual to the current HTML/JS/CSS model. URIs beginning with app:// would use the new VM model. There's a shocking amount of defeatism, both by developers and institutions surrounding the tooling of webapps.