Progressive Web Apps
The other day I was annoyed by my regular RSS app, which became slow and bloated. Ok, I thought. Why won’t I make my own? How hard could it be? Besides, for a long time I wanted to learn more about PWAs.
In this series of posts, I want to share the lessons I learned from building JustFeed - a minimalistic RSS reader. In this first post, let me introduce you to the beautiful world of PWAs.
So what is a PWA?
A PWA is just a website optimized to run on mobile. It uses native iOS or Android functions through an umbrella of Web APIs. Chrome on Android and Safari on iOS allow users to “add it to Home Screen“, and thus, from the point of a user it is indistinguishable from a regular app.
When a user runs a PWA from home screen, it runs in a browser. There is no search bar, no tabs. So it’s hard to tell from the users’s perspective.
The main benefit of a PWA is that user can install it without using the App Store. It makes it much easier for a developer to publish and update the app. Since it’s just a webpage, whenever updates are pushed to the server, users immediately see the changes — no need to bother with the approval process.
For paid apps, since the app store is not involved, there’s no need to pay a 30% commission to Apple. As a developer, you can use any payment processor you like. That’s just a webpage, after all.
Third, and this is particularly important for a solopreneur, we can make mobile apps for any platform using our web skills. There’s no need to learn Swift or Kotlin. One skill set (that of a web developer) allows one to go pretty far.
So what are the cons?
The obvious downside is discoverability. There’s no single dedicated place like an app store, where users can find your app. The user needs to visit the website from a mobile browser and then add it to the home screen.
The “Add to Home Screen“ button is hidden under the “Share“ menu, so unless you actively educate your users, there’s no way they will do it on their own.
You can still wrap your PWA (there are multiple services that let you do that), and add it to App Store. It fixes discoverability, but now you are back into the app store world with its approval processes, commissions, etc.
Web APIs
Take a good look at this list of Web APIs. I was pretty amazed the first time I saw this. I mean, there’s an API for the battery, barcode detection, file system access, multiple background task-processing, speech, cryptography, and even gamepad!
You can control phone vibrations. You can send push notifications to your app. And you can set badges to the app icon on the home screen via the Badging API.
This is pretty crazy. The only problem (hopefully temproral), is the browser support is not particularly impressive.
Apple is particularly reluctant to add Web APIs support. For example, the following table shows the browser support for Periodic Background Synchronization API. The picture is the same for many other Web APIs.
To be fair, just recently Apple released Safari 16.4, which added support for many of these, including Badging API and Push API but it’s still far behind Chrome.
Next time
Thank you for reading!
Next week, we’ll get deeper in UI gestures, like pull-to-refresh, and see how to implement it in a PWA, with whatever resources we have (spoiler: it almost as good as on native).