To Web or Not To Web
The world seems to be hurtling towards both local and web apps…which is definitely confusing

Okay so like the thesis here is that everything should be a web app. Native apps are great, and they’re fun to use, and they certainly have their place, but in this day and age, having things run in the browser is the most reliable, most open way of doing it.
When developing on the web, you’re able to develop for all cases at once, meaning you don’t have to take into consideration platform-specific constraints with everything. There’s some variance in how different web browsers work, but on the whole, it’s all open standards operating on open standards. When developing natively, there are certain performance and cohesion benefits that come with that.
The Social Wire can’t have a menu bar app without some kind of locally running app, even if that’s just an electron wrapper. There are certain benefits that do come with a native app, I’m not saying that this isn’t the case. The problem is when that’s the only option.
iOS
The whole idea for the original iPhone was that it was going to run web apps. There was no App Store, there was no 30% cut of purchases. None of that. Apple even went so far as to not support Adobe Flash on the iPhone’s browser, effectively sending it into a death spiral. Instead, Apple focused on supporting open standards like JavaScript and HTML 5. This push for open standards instead of Adobe’s proprietary, albeit easy to use, renderer helped save the open web.
Then everything changed when the App Store attacked. I’m not going to say that the App Store was a bad idea. It’s been successful on a level that’s quite literally never been seen before. It’s the gateway to getting your app on an iPhone and accounts for a huge portion of Apple’s yearly income. But the thing is: they pretty much abandoned the open web as a development/deployment platform from then on. It’s to the point now where Apple’s reluctance to support browser features on WebKit have actually held back the web from being able to do much more.
Apple’s Been Making the Web Worse
Because Apple wants you to deploy your apps on the App Store through their pipeline, they control everything that’s being run on an iPhone.
Push notifications from the web had been hampered for years on Apple’s platforms because they want you to use APNS (Apple Push Notification Service) which lets them control what can be pushed.
This is a genuinely useful feature that helps to prevent notification spam and dangerous notifications from hitting your devices, but it also means that if you want notifications, you need to use a native app.
Haptics are something that’s possible on the web, but Apple locks down their API so that only they can use it.
Where to Deploy
So when you go to build an app you have a couple of considerations to make. If you build on the web, and just on the web, then you can have a single application that’s used across every single device that has access to a web browser. This does, however, lead to some issues with things like notifications, gestures, haptics, and general polish that’s typically gatekept to a native application.
If you want your app to feel like it was made for an iPhone, then you need to build and deploy an entirely separate iOS-native application. There are ways to package your web app into an iOS app and get better than web performance, but still not as good as native.
The Multi-Toolchain Problem
So, as a solo developer, if I want to bring my app to every platform, I’ve got to maintain three entirely separate apps—one for iPhones and iPads, one for Android devices, and one for literally everything else.
Think about the impact of that for a moment. How many Android users out there know of a great iOS app that’s not available for Android? Chances are, the app you’re thinking of is maintained by a handful of people (maybe even a single person). In order for them to bring their iPhone app to Android at the same level of detail and polish as the iOS app, they would have to learn an entirely separate programming language, an entirely separate tech stack, and an entirely different distribution model.
This is why we embrace the open web. It’s built on open standards, and it’s maintained by hundreds of thousands of nerds like you and I to create some cool stuff. But large companies are always finding ways to keep us in their grip, so if we want to put apps on your phone, it means we have to pony up the time and money to deploy the apps there as well.