Does the promise live up to the reality?
Or are PWAs an oversold, underpowered and disappointing technology?
If you're not familiar with PWAs, here are some links about PWAs from Microsoft and Google (could not find anything from Apple):
Microsoft: Overview of Progressive Web Apps (PWAs) https://docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/
Google: Progressive Web Apps https://web.dev/progressive-web-apps/
I get if you don’t like PWAs, but there needs to be an alternative to write 1 app for all devices.
Unfortunately, the biggest issue with PWAs is that they’re not really supported (severely limited) in iOS, since Apple wants to keep its walled garden. Another big issue is that PWAs are webpages, so they’re less performant and capable than other platforms like JVM and native. Hopefully APIs like WebAssembly, Web File System, WebRTC, etc. will improve this, but still, you can’t write apps that need max performance or specific device features as PWAs.
"Write once" may actually be more work. You're supporting multiple operating systems, multiple devices/manufacturers on Android. So you're maintaining the same code but it's being polluted by code on different operating systems. At best, you're writing for Chrome and Safari, where the behaviour is different, and often needs a lot of redundant lines of CSS.
A HTML5 camera may perform differently on different devices, on certain edge cases. Storage definitely acts differently on say, Samsung. If you want an Instagram Lite style gallery, that could be a lot of work to support and maintain.
Native mobile gives you more power over layouts. You have fine control over dialog boxes, pop ups, scoping across different pages and dialogs are handled better, tablet support is built in. None of that SPA stuff where something several pages in affects a previous page because of ID conflicts.
Something with the complexity of a card may take a week to get right on CSS, a couple days on native mobile. There's a reason PWAs feel so janky.
And then there's lifecycles - what happens when someone changes apps, your device runs out of memory, or a phone call interrupts. People say native is hard, but most of the hard architecture work is lifecycle management. With a PWA, you basically get none. That means someone might be deep into your app, switch screens, then lose all progress.
- Requires restart whenever chrome browser updates
- Chrome browser userscripts/extensions sometimes leak over
- Desktop media keys constantly confuse it with web browser videos
- It can't be minimized to task bar
- In order to play my personal music, I have to upload all of it to Google cloud
I strongly dislike them, personally. If you really don't want to learn native languages, maybe something like React Native would be a better balance. PWAs are just janky.