Even proper support on iOS for Progressive Web Apps would help bridge this gap. On Android, you can go to a URL and receive a prompt to "install" it on your home screen. iOS keeps burying their equivalent more with each release and imposes way too many restrictions to web apps make it an alternative to the iOS App Store.
Unfortunately, iOS does not support web push notifications like Android (and practically every desktop browser including Safari on macOS), which is a huge limitation.
Not supporting notifications at all is a dealbreaker for most apps that could just be PWAs.
Furthermore, last I checked, iOS doesn’t allow PWAs added to the home screen to access the camera or certain other valuable things that they should be able to access, but maybe that has finally been fixed.
Apple has intentionally made PWAs a bad experience to push people to the App Store, which is really unfortunate since they basically invented the concept of adding a website to your home screen that would then open in a chromeless experience that felt like an app.
While I too wish for better support for PWAs in iOS, the way push notifications are implemented in PWAs and iOS are fundamentally incompatible. iOS requires all push notifications to go through Apple's push server, which means there is only one long-poll connection to check and significant battery savings. Whereas, Google's PWA docs[1] literally lists random-push-service.com as the push server.
That's not true. Long pools cannot have an indefinite timeout, especially for a mobile use case. Plus, it's not just the TCP connections. If you look at push notifications on Android phones in China, because GMS isn't available, every other app is having a background thread checking for push notifications. It adds up.
I appreciate the frustration as a developer but as a user some of those APIs e.g. Push and Media Capture come with a lot of downsides.
I just checked Safari Desktop and I have well over 50 websites that I have blocked for Push Notifications. Many of which have no need to e.g. image site. But thankfully Apple has a polished, easily accessible UI for me to switch them off so not a huge deal.
On Safari iOS there is no Settings screen and not an obvious place to put one. You could put it under the main Settings screen but (a) nobody checks there and (b) it makes it confusing if you think of PWA as being a website still. And so you could end up with Push API being a feature that is hard to turn off. And that makes it a huge net negative for users.
Ideally, PWAs added to the home screen would show up in the Settings app like normal iOS apps do. You would be able to control notification settings and privacy settings just like on any other app.
If they don’t want to allow web push for websites, that’s one thing, but crippling PWAs that users have chosen to add to their home screen is another thing entirely.
> Similar for the Web Capture API.
You can already use the camera through a PWA on iOS, until you add it to the home screen. Then, last time I checked, it stopped being able to use the camera or even ask for permission to use the camera, which really hurts the usefulness of PWAs.
The limitations are not entirely without reason, from my point of view. With app installation, there’s explicit consent involved — apps can never run unless I have requested such. On the web, all it takes is a redirect in an unexpected place to open an “app” that I want absolutely nothing to do with, at which point it’s free to slurp up all the unpermissioned data it wants.
That’s not to say that browser vendors have a bad track record when it comes to permission dialogs, but there’s still a ridiculous amount that they just hand over to sites without any prompt whatsoever.
This is easily fixable, however: just restrict the greater bulk of API access to “installed” PWAs, where the app runs in its own little easily manageable container with zero access to my main browser and specialized permissions UI.
That's different from full PWA support. Apple understandably has strong incentives to make building a PWA not a viable alternative to a native iOS app (since that means more iOS-only apps which makes other platforms less useful).