We could be using an app-centric XML-like language¹ for the UI, and an app-centric protocol versus a stateless² one where we apply hacks like cookies and WebSockets to. Instead we're hacking on top of a document-oriented system, and the hacks feel like they're 10 layers deep now.
¹ Similar to XAML or XUL, in concept and example.
² Statelessness is a great default, but when you need it, it shouldn't be an awful hack.