"My highly abstract cross-platform framework must be as fast as native code" is not a sane view on this.
A tonne of effort has gone into making spreadsheets work on the web; both in the browsers as well as the spreadsheet apps themselves.
The fact that the web works as well as it does is a huge feat of engineering, but in no way indicative of there being no technical reason that native apps can be better.
The vast majority of apps are just text, images, and buttons. Maybe a video player if you're getting wild. Not really anything that requires processing speed except to just render stuff on a screen and wait for touches. They don't need feats of engineering to run well.
I should have been more specific. There's no technical reason for binary apps to be the dominant form of apps on phones, given that most apps are pretty simple experiences.
No technical reason, but I don't see iOS and Android settling on a standard framework for doing native applications and setting a specification for frameworks (localization, camera capture, audio playbacks, and other apis). The web is great, but only when you treat each page as a documents (interactive). Anytime you break out of this, you find yourself in a whole suit of problems as there is no easy way to fit both experiences in the same application (responsive design is not the solution).
Maybe not enough effort has gone into something as basic as ordering food online. Or rather it's such a simple problem that too many fragmented subpar options exists compared to web spreadsheets.
A tonne of effort has gone into making spreadsheets work on the web; both in the browsers as well as the spreadsheet apps themselves.
The fact that the web works as well as it does is a huge feat of engineering, but in no way indicative of there being no technical reason that native apps can be better.