I man don't get me wrong, I love the idea of PWAs but this dude is out to lunch. It's so painful making anything complex work cross browser/cross platform. On iOS iirc they don't even support adding PWAs to the homescreen? You definitely can't Bluetooth outside of Chrome (probably only on Android and Windows too because nothing fun is ever allowed on Macs).
Multiplayer games you kind of need UDP. You cannot UDP in the browser (WebRTC data channels technically use UDP but that stack is an abomination wrapped in SCTP and DTLS)
This is by no means an exhaustive list, just issues I've dealt with recently. It's better than it was with WebGPU and WASM, some of the gap between a native app and a website is surmountable, but unless you're doing something extremely boring surmounting the gap is hard fucking work.
Thanks for pointing this out! I wasn't aware this had more or less landed. (though I think my broader point about cross platform support unfortunately still stands, I personally don't care about supporting iOS on my side projects and I'm excited to mess with this)
Yup, as I have found out over the last 5 hours. I managed to get a handshake but it's nowhere near the convenience of something like WebSockets. The security circus you have to go through to get even a handshake working is absolutely absurd, all sorts of extremely poorly documented certificate requirements and you'll be lucky to get an error message that helps you in any way. I'm getting ready to give up for the day, I will definitely make a top level HN post if I get a solution working and documented.
That’s usually a sign nobody uses it because it has at least one large issue. Personally I stopped falling for “there’s now X” advices long ago because if it worked, it would already be mainstream very much heard of by everyone. Sorry for your five hours.
> Personally I stopped falling for “there’s now X” advices long ago because if it worked, it would already be mainstream very much heard of by everyone
So you just never use anything new, always stuck with what has been? Because everything starts with just one person using it, then two, then four and so on, things can't just be popular from day 0.
I'd agree with that chasing the latest fads (no matter the popularity) is a fools errand, and you need to look beyond vanity metrics to evaluate if something is useful or not. Sometimes that means trying things and sometimes even making a hard bet on something that hasn't been demonstrated "right" yet.
I disagree at least a little bit, the fact that there's support on the browser side is much much more important than support on the server. I can write a server of arbitrary complexity given enough time, the scope of the problem is now one that I can fix.
I also found the following in my research yesterday, which looks like a very promising set of abstractions for WebRTC data channels.
> On iOS iirc they don't even support adding PWAs to the homescreen?
You've been able to add websites to the home screen going back at least to the iPhone 5 in 2012. Is it the "PWA" part you're questioning? iOS definitely does have PWA support, although with a few notable limitations that may be deal-breakers for certain apps. Oh, and apparently Apple recently disabled PWAs entirely in the EU.
> The need to remove the capability was informed by the complex security and privacy concerns associated with web apps to support alternative browser engines that would require building a new integration architecture that does not currently exist in iOS and iPadOS.
This rationalization makes zero sense, it's just opening a standalone browser window from a convenient icon shortcut. They could even ignore the manifest.json entirely like Android does half the time anyway cause the implementation is buggy as all hell.
I think the real reason was some kind of retaliation worthy of a baby insanity wolf meme because they were forced to stop reskinning Safari for all other browsers on iOS which was absolutely ridiculous in the first place.
Shows why guessing and gut feel are bad basis for opinions.
In fact, Apple’s problem was that the PWA serviceworker runs as root, a bad decision made years ago. Enabling Chrome-hosted PWAs means Google gets root on those peoples’ phones.
We can still lambast Apple and go all ad hom, but let’s stay factual?
Sounds like something very fixable though. Why is it so difficult for apple to fix the "engineering mistake" and move the PWA process to a less privileged user or even a jail?
Service Workers do not require an installed PWA. Every regular website can have a PWA. I'm not sure who came up with this explanation for Apple trying to kill PWAs in Europe, but it makes zero sense.
It is really quite complicated to do. Since you get some interesting functionality I had considered it but writing the page how to add the website to the home screen I couldn't imagine users doing this.
My least favorite dark pattern is that you first have to change the share menu and add the option. That way it seems less inconvenient to people who've done it before.
To share a fun perspective: Desktop desktops and phone home screens are really revolutionary compared to the browser bookmark menus and app stores are really web directories that are both glamorous and horrible at the same time.
There is sabotage along the way but we are clearly moving forwards.
Imagine an AI starting a thread or a sub forum for each application it can find online. Then have it gather articles about the application and post them as replies or topics. Divide everything neatly over categories (like a web directory) and have it gather usable icons/logos for navigation. By default it only displays software for the users platform or browser but a few check boxes in advanced search settings can change the selection.
One big missing piece is the inability for me to put an "Install" button like I can on android. I don't want to have to teach old people how to add to desktop
In fact, home-screen web apps on iPhone OS predate third-party apps on the platform. Originally all third-party software was going to be installed this way.
> Originally all third-party software was going to be installed this way.
It's off topic, but I don't think this was true once the HTML Weather and Stocks 'widgets' failed on iOS. Anything Apple said publicly was just saving face until their SDK was ready for public consumption.
Point the author is trying to make is that there are certain usecases you really don't need to deliver it via app, it is cheaper and better to serve via web. For eg. The Itaki app mentioned in the article.
Of course there are use cases that you mentioned are better served via native app. For eg. Apps that need compute or location. That's not the argument author is making.
The downside of delivering everything via app is your device ends up with app sprawl that eats up the resources.
iPhones support PWAs on homescreen. However, there's no way to trigger the "install the PWA?" prompt. The user has to do it, which very few know about, and maybe that's what you were thinking of.
I haven't looked at this lately and so don't have a specific recommendation, but there are small libraries for helping iOS learn how to add PWAs using the standard Share → Add to Home Screen mechanism.
I've seen guides like this before. Would be nice if they showed what the share button looks like, cause that's not obvious to some people. Or, some file sharing websites show an arrow pointing to the downloads button in desktop Safari.
Part of the problem is that the websites need to "share" budget with the teams that build 2 separate native apps (or maybe they use something like React Native, but that still costs money that could've been used for a better mobile website).
Also, if a company has a mobile app, a bad mobile website is less of a problem. Take Takeaway.com. Their mobile site is terrible. But they have a pretty good mobile app, so why would they need to pour money into making the site any better?
But yes, (mobile) web also just needs to do better.
Ready to use (or buy/download) controls in appdev usually pack some ui wisdom into themselves for free, borrowing most of it from the base system.
Webdev is constant reinvention of a wheel in all sorts of wrong ways, with “components” on the same level of ui quality.
Many apps are just electron apps or vb-like (x,y,w,h) forms slapped together by someone barely familiar with a platform IDE. But the rest is absolutely superior to the “web”.
Apple is currently being sued by the DOJ for a variety of abusive business practices, including forcing all web browser apps on iOS to use the Safari browser engine, which limits the usefuleness of all web browsers on iOS, so that developers are forced to develop an app which Apple can then take a 30% cut of all revenue generated by the app. It's a pure money-grab by Apple, and they deserve this legal action against them.
That’s all the more reason good regulation is essential. If there were a dozen viable competitors then you could just step back and let the market decide.
Point taken about preferring Apple over Google. I buy Pixel phones and immediately install GrapheneOS, which does a pretty good job of keeping Google at arms' length. So I guess the answer to your question is that there is another alternative.
Agreed. But I would like to add that there are also numerous UX pitfalls that apps fall into that are trivially solvable on the web.
Broadly:
- deeplinking (while technically doable it is still a pita to set up cross platform and require just way too much engineering in the long run)
- branching out UX (it is interesting how many seemingly straightforward processes turn out to be better if you can branch out into something like a tab)
> On iOS iirc they don't even support adding PWAs to the homescreen?
They literally supported this since iPhone OS 1.0 (it wasn’t even called iOS yet). In fact, it was supposed to be the only way to add apps to the iPhone until people complained and started jailbreaking to install their own apps. Apple didn’t release the App Store and the iOS SDK until iPhone OS 2.0
I don’t think parent means the same or maybe he does. On chrome and edge on macOS one can choose to install the PWA as a native app. It gets an app icon and everything. It’s similar to a web bookmark on the HomeScreen. But it’s a sandboxed app. Don’t know if this is the exact same behavior though. PWAs are also a bit different to normal websites. They have a manifest and what not to describe the app in a standardized way.
PWAs on iOS get their own local storage, for example. And deleting the PWA from your Home Screen will delete its data, just like deleting an app would delete the data of the app.
I got a basic offline-capable TODO list (the hello world of web apps) working as a PWA for my iPhone. Almost all of it handed to me by ChatGPT.
If I exit the PWA, turn off WiFi and open the PWA again, the PWA still works.
The only annoying thing is that the way you add a PWA to your Home Screen on iOS is too convoluted to realistically get most people to do it, if you were to make a PWA that you actually wanted people to “install”. Although the JS solution that someone else posted ITT with a small pop-over that explains the steps is pretty near to ok. Certainly helps the situation a bit at least.
I know none of them are Edlin Ring, Skyrim, or Call of Duty. One issue with Web games is users's expect them to start quickly so no downloading 80gig of assets like 102gig for CoD Black Ops 6
Yes and no. UDP objectively performs better because it prioritizes sending relevant (in the context of real time application) data rather than retrying no longer relevant data (and all the overhead that entails).
https://nightpoint.io has been around for a long time, it's a fast-paced 2D shooter, uses web sockets and it does quite good actually.
I think the same dev created https://battledudes.io later on, again based on web sockets. It has/had (haven't played recently) a pretty big player community.
A website can work offline, too. Service workers are a feature that any website (installed or not) can use to (pre)cache assets, etc. On iOS, that data will get evicted if the user doesn't visit the site at least every 7 days, though. Other platforms keep the data for a lot longer, but will evict at some point, too.
Multiplayer games you kind of need UDP. You cannot UDP in the browser (WebRTC data channels technically use UDP but that stack is an abomination wrapped in SCTP and DTLS)
This is by no means an exhaustive list, just issues I've dealt with recently. It's better than it was with WebGPU and WASM, some of the gap between a native app and a website is surmountable, but unless you're doing something extremely boring surmounting the gap is hard fucking work.