Progressive Web Apps (PWAs) became a trending social media term last week, for all the wrong reasons. When the right-wing microblogging app, Parler, was pulled from the Google and Apple app stores, its users immediately began to search for a browser-based version. Some of them searched specifically for a PWA version, which led to this comical exchange:
Apparently Parler just got pulled from the Google App store.
Over at TheDonald they’re teaching each other how to install the PWA version.
I thought this exchange was funny. pic.twitter.com/U95Rd8lMiL
— Quincy Larson (@ossia) January 9, 2021
So many questions… but keeping to the technical side of things: was Parler’s website actually a PWA, or was it just a normal website that happened to render well in a mobile browser? And what exactly is a PWA, anyway?
As it turned out, the PWA search among Parler users didn’t last long. The web version was quickly closed down too, when Amazon Web Services canceled Parler’s hosting services. That may be the end of Parler, unless it figures out a distributed alternative to app stores and cloud hosts.
Of course, whether or not Parler’s website was a PWA is a minor issue compared to why Parler was in the news in the first place. The key debate is around whether “big tech” companies like Google, Apple and Amazon should be “acting as regulators” (as tech analyst Benedict Evans put it) and unilaterally shutting down controversial services like Parler. That’s a thorny issue, because it comes down to how much power you think internet companies — and particularly ones that operate down the stack, like AWS — should have. That argument is beyond my remit here, but I recommend you follow the discussion on the Electronic Frontier Foundation.
For this column, let’s get back to the question of what a PWA is and what it means going forward. The term was coined in 2015 by Google, to describe an enhanced web application that can run on modern web browsers. A PWA is, technically, just a website — but one that is optimized to look and feel like a native app when run in a browser.
In an introductory post, Google positions PWAs as having the reach of traditional websites but also having some of the capabilities of a native application (such as an Android or iOS app). Here’s how Google defines it:
“Progressive Web Apps (PWA) are built and enhanced with modern APIs to deliver enhanced capabilities, reliability, and installability while reaching anyone, anywhere, on any device with a single codebase.”
As an aside, the PWA name was supposed to be a temporary one. Google engineer Alex Russell came up with it, along with Frances Berriman. Russell tweeted that it “was never meant to be [a] name for end-users.” However, the term appears to have caught on — and is being widely used to mean a website that has a similar user experience to a native mobile app. But as I’ll try to explain in the rest of this post, there’s much more to being a PWA than that.
The Defining Features of a PWA
Some of the advanced capabilities that are possible now with web technologies are “file system access, media controls, app badging, and full clipboard support.” These are all features familiar to native apps, since they have direct access to your device’s operating system. But now with new APIs, a web app can also access at least some of those OS-level features.
The “installability” feature of PWAs seems to be often misunderstood. It does not mean bookmarking a website so that it becomes a widget on your smartphone (on iPhone, you can do this in the Safari browser by clicking “Add to Home Screen”). According to another Google post, to be “installable” your web app needs to include a Web App Manifest and a service worker “with a functional fetch handler.” In a mobile browser on an Android device, this enables a pop-up prompt that asks whether you want to add the site to your home screen. Even then, different browsers have differing requirements and — to add to the complexity — the iPhone OS does not allow pop-up prompts.
But the key points, Alex Russell told me when I checked these details with him, are that the web app “has a Service Worker so it works offline, and a good-enough Manifest file that it can be easily identified from the homescreen.”
Leading PWA Examples
In the wake of the Parler controversy, I watched a video from a random YouTuber that purported to explain how to install Parler as a PWA. But all it showed was the “Add to Home Screen” functionality. So by that marker, my guess is that Parler was not in fact a PWA. Given it couldn’t even properly secure its user data, that’s not surprising.
One company that definitely does offer a PWA version is Twitter. It first surfaced under the name “Twitter Lite” in 2017; and it was clear even back then that it offered significantly more functionality than a basic mobile website. A Google Developer story at the time noted that Twitter Lite was literally a very light app: “the PWA is only 600KB over the wire vs. 23.5MB of downloaded data needed to install the native Android app.” It also pointed to web push notifications and “nearly instant loading with service worker scripts” as two other features of the app.
Over the years, Twitter has continued to iterate on its PWA — bringing it closer and closer to the functionality of its native apps. As one example, Twitter engineer Charlie Croom posted in July 2019 about how Twitter added nuance to its PWA push notifications. By using the service worker parameters silent, renotify and tag, Croom explained, Twitter is able to have “a huge amount of control over how and when we alert a user.”
It’s also worth pointing out that a PWA is not just useful in a mobile context. Some Mac users prefer the PWA version of Twitter to its official Mac app. To do this, go to Twitter.com in your browser (it has to be a Chromium-based browser, like Chrome, Edge or Brave), and in the right side of the address bar, you’ll see a little circle icon with a plus sign inside. Clicking that adds the PWA version of Twitter to your applications folder (and puts it in your dock).
So was Parler a PWA? Probably not. But I’m pleased to report that Twitter is indeed progressive, at least from a web technology point of view. Whether it’s progressive in other ways, that’s up to you to decide.
Final note: to check whether a (still operational) website is a PWA, you can use the open source Lighthouse tool that Google developed.
Image credit: Pixabay