There are some more coherent arguments in play, don't get me wrong (in particular, the argument that web apps are a bastardization of what the World Wide Web was intended to be for; I agree with that wholeheartedly), but a lot of the rhetoric around here really reeks of elitism.
While I'm not an Android user, when I build an Android app I try to embrace the platform's strengths. I try to understand best practice, and follow the designs encouraged by Google. The resulting apps often look and behave completely differently between iOS and Android because the platforms are so different.
I have mixed opinions about a lot of Android's design philosophy, but there's no way I would build an Android app that didn't conform to the platform. Because I expect Android users enjoy consistency too.
There's probably some elitism in there. But there still is no web app on macOS or iOS that feels good, consistent and integrated in the same way that a good native app feels.
Part of that though is because they _don't_ allow PWAs. Contrast that with Android, where it's now entirely possible to make a PWA so deeply integrated into the OS that the average user can't even tell it's not a native app: https://blog.chromium.org/2017/02/integrating-progressive-we...
The webapp ecosystem is making the same class of mistakes pure-Java UIs used to. They assume e.g. that a textbox is just a rectangle on a screen that you can type stuff in. But it's not just that; it's much more.
Each operating system has a large set of default UI behaviours and idiosyncrasies. Continuing the example, a native textbox may be a clickable rectangle accepting keyboard input, but it also has a set of well-defined behaviours for Tab-cycling, text navigation, right-click handling, keyboard shortcut handling, cut/copy/paste handling, etc. Web applications fail to replicate that functionality completely and consistently. And platform consistency is a feature - one that many users value.
On top of that add resource waste (spinning up a webview and parsing heavy markup languages just to show a bunch of buttons) and web-specific failure modes - many vendors do not care about making their webapp work correctly when connectivity is limited, spotty or lacking. Hence the occasional full-screen 404 or 501 or connection-lost error when you press a button.
I want my applications to be performant, platform-consistent and interoperable. Web apps fail at all three, hence I avoid them like the plague, and discourage everyone from developing them.
About the only benefit I, as a pro user, I get from web application is the relative ease one can reverse-engineer their backend APIs with.
Oh, but quite many will be able to tell after 5 seconds of using it. The rest will realize the moment the Internet connection drops temporarily.
Nope. A properly-written PWA will continue working just fine when the user goes offline, just like a native app would.
A big part of the reason they didn't is the reason that people dislike these fake-native web-apps; they just don't feel right.
When I right-click on the one I'm typing in right now, on Chrome running on a Mac, I even get an option to "Add to iTunes as a Spoken Track", whatever that might be, same as with the native text boxes.
They would have if people weren't "improving" them with JavaScript as some sort of a rite of passage, or something.
There's two big differences:
- There was an unsatisfied need back then to move your apps and data with you as you moved to another PC. The phone moves with you.
- Microsoft couldn't prohibit Mozilla and Google from writing non-crippled Windows web browsers. Apple learned from that "mistake" and won't let it happen on iOS.
"It seems like the majority of the comments opposing web apps oppose them because they're cross-platform and not written specifically for their chosen platform, which is a very silly stance to have."
But it's not. By not being written specifically for the platform, everyone is just getting a least common denominator approach. Nobody is getting anything that integrates with their platform. Nobody is getting anything that embraces what makes the platform special, or good.
"but a lot of the rhetoric around here really reeks of elitism."
No, it's more that we want developers to actually make an effort to embrace the platform they're trying to work on. And, quite frankly, use something that's not JavaScript. Learn a second language.
Hold on - do you know what a progressive web app is? We're not talking about apps like Slack which bundle a browser inside of them - we're talking about webpages that behave like applications.
>many vendors do not care about making their webapp work correctly when connectivity is limited, spotty or lacking.
Offline support is a key feature of PWAs, so this point is moot.
>Each operating system has a large set of default UI behaviours and idiosyncrasies.
Browsers are completely able to define their own design language, so a text box need not look the same in every browser. As long as they conform to common standards, everything will work fine.
As such, you don't get the Java problem where everything must conform to the same style, and thus feels foreign in different environments.
>I want my applications to be performant, platform-consistent and interoperable. Web apps fail at all three
PWAs excel at all three. That's the whole idea.