
PWA and Mobile Apps: It's All About the Distribution Model
What is a PWA? Technical Definition
The first thing to understand is that a PWA is not like most technology frameworks. It can't just be done by using a library. This is actually a mix of specific technologies and the way we use and integrate those technologies.
Those technologies are mainly:
- Service Workers: They enable offline and asynchronous synchronization of the app with the server. The idea is to make the application work (at least partially) offline and enable more (performance) responsiveness.
- Manifest: The manifest formally declares the branding and identity of the application, including name, color, home page, icon.
- Secure: The application should be served via the HTTPS protocol.
- Responsive UI: The application should be usable on mobile.
The goal of these practices: the application should be a web application but feel like a mobile native application.
Independence from App Stores, Dependence on Browsers
What would be the benefits of such an implementation? The application is directly accessible from the web. No need to publish the application to an App Store.
This is a benefit from the implementation point of view. Applications don't need to be built with complex App Store SDKs and are easily available on the web. This is a more standard and open distribution mechanism.
The downside is that the user experience directly depends on the web browser used.
- On iOS, the browser is limited to Safari. Support for PWA advanced features is therefore limited to what Safari enables. Some important aspects of PWAs are actually supported on iOS but because it can compete with the distribution model from the App Store, there is a natural reluctance from Apple to go all the way in the support of PWAs.
- On Android, the support is better and is already supported by many web browsers.
- On Desktop, it will also depend on the web browser. Most modern browsers support PWA features. Some like Vivaldi and Edge even try to go an extra step to blend those Web Applications with Desktop applications.
The main problem here is actually support and discoverability. Properly understanding PWAs and the ability to install them are still only visible and known to a more tech-aware audience. To be clear, PWAs are not hard to discover. As with any website, it can be easy to access and use (this is a web application). The discoverability issue is with the advanced features that make those apps behave like a native application.
It's All About Distribution Channels
The main confusion that I see is actually because of a misunderstanding of PWAs versus native apps.
The reason to implement a PWA is not necessarily to replace a native application. These are 2 distribution channels:
- App Store: native applications are actually distributed from App Stores. This is the main benefit that they bring.
- Web: PWAs are actually web apps and are distributed from the web.
This is not a choice of OR for most companies. This is a choice of AND. A major company will want to have applications on the App Stores. Those companies will, however, still want to have a website. Instagram has an App Store app but won't give up their web app.
These are just 2 different distribution channels. Actually, the bigger the company, the more diverse distribution channels they will want to use: App Store, Web, Windows Store, WeChat Mini-Programs, ... In some cases, some may even want to use PWA as the only distribution channel but as of today and given the problem of usability and discoverability, this is probably an edge case.
PWAs are web applications. I would argue that if a company needs to be on the web, then the website (or web app) should be a PWA. This is the current best practice for web applications.
The Hopeful and Possible Future of PWAs
Today there is very little technical overhead or very little reason not to build a website as a PWA. I would then expect all web apps to implement these kinds of practices.
Because the web is a more open and accessible way of distribution, I hope that web browsers and operating systems will solve the discoverability issues of PWAs. Even to be able to search and install some PWAs from app stores.