6 ms·
> iOS's new PWA support actually reloads your whole page - losing all context and execution - every time you bring it to the fore. It kills all execution when p
by rolha-capoeira 9y ago
> iOS's new PWA support actually reloads your whole page - losing all context and execution - every time you bring it to the fore. It kills all execution when putting the app into the background.
There's a bigger story to this, one could assume.
I'll be the first to say that iOS and Safari (particularly on iOS) has generally lagged behind the community in adopting standards. But this seems like a feature, not a bug, to me.
What if the user has 10 PWAs open in Safari? Should they all maintain state as the user goes elsewhere in the OS?
If I put an app into the background, I want it to stop its execution, unless I've given it permission to do a limited set of things. This goes double for websites — no way do I want them to continue using the OS in the background.
- judah 9y agoImagine if you install Pandora as a PWA. It's now on your homescreen. You launch it. You start playing some music. Now you switch over to Twitter. Woops! The audio stopped playing. You bring Pandora back to the fore. It reloads and starts playing a different song. Worse, there's no way to fix that. That's how it's supposed to work. This is the state of PWAs on iOS.
- scarface74 9y agoAnd Pandora chose that it was worth the trade off in time and resources to create a better native experience it seems like a win for users.
- hamiltonkibbe 9y agoImagine you install $ANYTHING as a PWA. It's now on your homescreen, you launch it. You do $THING. now you switch to twitter. Now the PWA -- in the background -- loads some ad with an autoplaying video and now theres ad audio coming from ... well, you're not sure where, but it doesn't seem like it's coming from twitter. now you have to go find it and stop it. Meanwhile bitcoinminer.js is burning through your battery in the background because those video ads just weren't quite enough revenue. I'm not sure which one sounds worse.
- judah 9y agoStepping back a moment, it's worth noting that this was Steve Jobs' original vision for the iPhone: “The full Safari engine is inside of iPhone. And so, you can write amazing Web 2.0 and Ajax apps that look exactly and behave exactly like apps on the iPhone. And these apps can integrate perfectly with iPhone services. They can make a call, they can send an email, they can look up a location on Google Maps.” Here we are, a decade later, and Apple has not only abandoned that vision, they are actively working against it by preventing web apps from becoming first-class citizens on their platform. I mean, consider an app that does 2FA. "To sign in, please enter the code sent to your mobile device." You switch over to Messenger, and...wooops! Your app just reloaded its home page, and the auth prompt is gone. Surely, any rational person can see this is too restrictive. Perhaps Apple will loosen these restrictions in the future. Yes, as you point out, there is the potential for abuse. But that's already there with native apps. The things you just mentioned can -- and have -- been done with native apps.
- saagarjha 9y ago> it's worth noting that this was Steve Jobs' original vision for the iPhone One which they quickly backtracked on after realizing that it needlessly restricted what apps could do, and one which they could not shoehorn security into.
- hamiltonkibbe 9y agoSo now there's some awesome PWA api giving you all those native features, and a permissions model, and so you install SUPERPHONE app, and that needs access to your contacts and to make and receive calls, and you say "ok, yeah this is a better phone app so those are reasonable". Now everything running JS in the context of $SUPERPHONE_DOMAIN or whatever has these new permissions. superphone pwa's calls to window.PwaGetContacts() and window.PwaMakeCall() work and everyone's happy, and your phone really is super now. the app shows a banner ad from google and you're cool with that because it was free, and hey, developers need to eat too. Someone who makes ads figures out that ads can run JS. So your app pulls down an ad from some ad network and that ad has some cool JS that detects that those functions are available and starts calling all your friends from your phone and telling them that "`window.PwaGetOwnerName()` is really excited about LinkedIn and wants you to be their contact" after uploading your contact list to every 3rd party data broker that would pay for it. well, that sucks, maybe there's a better way to limit the code that can run on your phone with specific permissions
- FridgeSeal 9y agoIf I wanted functionality past the most basic kind, then I would use the full, native app. Web apps are not a sufficient replacement for a proper application and if a developer can't be bothered building an app properly then they shouldn't be surprised when I don't use it.
- thomasz 9y agoThis is circular reasoning. Web Apps are not a replacement for a proper application because they are being sabotaged.
- FridgeSeal 9y agoOk, put it this way: they should be sabotaged if they're never going to be as good as native apps. Seeing as they're not going to be, and Apple has standards for how it's phone behaves and the quality of the ecosystem, I have no problems with them essentially insisting that developers build proper apps.
- TheCoelacanth 9y agoThey're never going to be as good because Apple is sabotaging them. A web app has many advantages over a native app. That is why people visit websites instead of installing an app for every website.
- FridgeSeal 8y agoAlmost literally by definition, a webapp isn't going to be as good as a proper application. If one of the advantages is "front end guys don't have to learn another language" I'm starting to be of the opinion that that's their reticence to use the proper tools, rather than the inherent superiority of JS. People visit websites because many of them don't need to be apps. I don't need an app (webapp or otherwise) for each of the half/dozen sites I visit once a week. That's just clutter and wasted space, and in the case of a web-app, clutter, wasted space and a shitty app that's no better than simply visiting the website directly.