Today’s software development landscape has never been more challenging. The rich capabilities of modern hardware and the high consumer expectations for performance and stability combine to ensure that developers need as much help as possible to meet their deadlines. Of all these challenges, one of the most vexing is the need to support today’s vast number of devices and operating systems.
A primary goal for creating cross-platform applications is to ensure that as much code can be reused as possible. For web developers, progressive web applications (PWAs) are one of the key technologies that support their efforts to efficiently deliver consistent, high-quality experiences to their users, regardless of where they access them. This article will review what a PWA is, why they’re valuable, and what the PWA landscape looks like today and how it might evolve in the future.
Progressive web applications (PWAs) combine a design philosophy called progressive enhancement with advanced web browser APIs to deliver experiences similar to those provided by native applications.
Progressive enhancement is a philosophy that advocates developing an application by only using the features that are supported on all of the application’s target platforms. Additional features are activated when the application runs on a system with more capabilities to enhance the user experience. An example of progressive enhancement can be found on many applications that have a search feature. On a mobile device, the search feature might consist of a simple text search. On a laptop, however, the same search feature might be augmented with sorting and filtering capabilities. Many PWAs use some level of progressive enhancement to fine-tune the user experience on each platform to take advantage of their capabilities.
In addition to progressive enhancement, PWAs also leverage the capabilities of modern web browsers to provide near-native experiences. APIs like Push, Notification, and Geolocation allow the PWA to access functionality that blurs the line between native and web applications. As we’ll discuss later, these APIs are among the most contentious parts of the PWA ecosystem.
Everything we’ve talked about so far applies equally to all web applications, PWAs included. Some specific requirements must be met, however, to make a web app into a PWA; they must be served over a secure connection (e.g., HTTPS), have a service worker, and include a manifest file.
A PWA must have a secure connection due to the highly sensitive information that is required by the application. Many advanced browser APIs, such as geolocation, require this type of connection to help protect user information from being intercepted and used for malicious purposes.
Service workers are almost always essential to PWAs since they provide a way to allow the app to continue to function when it is offline. While each PWA handles this situation differently, they must have some strategy established. A service worker also allows the PWA to cache responses to common requests and makes the application faster and more responsive.
A PWA’s manifest file is a JSON document that provides essential information to allow the application to be “installed” as a native application. Once installed, the application looks just like a native application on that platform, complete with titles, icons, screenshots, and more.
Modern application development is challenging, so it is vital to manage the complexity of any project. It is reasonable, then, to ask why a team would decide to turn their web application into a PWA. While there are many advantages to PWAs, we’re going to focus on four in this article.
PWAs Behave Like Native Applications
One of the primary benefits of a PWA is how normal they appear to the user. Traditionally, web applications had to be accessed from a web browser. This tends to make web applications more difficult to find, and the browser Chrome often limits the amount of space available to them, which is an especially critical consideration for mobile devices. PWAs can be installed on the device and are accessed like any other application. They are also freed from the browser’s Chrome and, as a result, can take maximum advantage of the available screen space. The user experience can be made even more native-like when the PWA’s service worker uses an aggressive caching strategy. While this doesn’t help first-time access to resources, it can dramatically improve the application’s responsiveness when resources are retrieved multiple times.
PWAs are Easier to Rediscover and Re-engage With
Regular web applications are stuck in the browser. When the user navigates to a different page or closes the browser, the application can no longer engage with them. PWAs often leverage APIs such as Push and Notification to let users know when something happens that they might be interested in. This native-like functionality increases the likelihood that the user will re-engage with the application multiple times.
PWAs are Easy to Upgrade
Ensuring that users are taking advantage of the latest features of an application is an essential component to giving them the best experience possible. While simple notifications will get many users to upgrade natively installed applications, it can be challenging to ensure that all users receive the benefits that new versions provide. This can be even more challenging on mobile devices since new versions often have to be approved before being made available in Google Play or the Apple AppStore.
PWAs download most of their assets from the internet, providing companies a direct upgrade path. Many PWAs incorporate an upgrade strategy into their service workers. This allows the user to continue to work with pre-cached assets from the older version while new assets are downloaded in the background. This provides a seamless transition between versions without distracting the user with administrative details.
PWAs are Relatively Small
Native applications must be installed with all of their dependencies. This often leads to large installation packages that can frustrate users with low bandwidth connections to the internet. Since PWAs leverage the web browser for most of their basic capabilities, they only need to download application-specific assets. As a result, they are generally much smaller than a native version with similar capabilities.
Current State of Affairs
There are two primary things to discuss when considering the current state of PWAs: their popularity and potential capabilities.
Given the advantages that PWAs offer over traditional web applications, market share remains surprisingly low. While hard numbers are difficult to find, a reasonable estimate is that 2.2% of all websites contain web app manifests and are, therefore, probably PWAs. One of the primary reasons for this is perhaps due to the diverse nature of websites. Many sites, such as a blog site, simply wouldn’t have any value as a PWA. For those websites that can benefit from being a PWA, the utilization is still low but rising steadily. Two primary but conflicting forces seem to be driving this slow adoption.
The amount of effort to transform a web application into a basic PWA is minimal. Many companies are updating their applications to include primitive service workers and manifests, yielding a simple PWA and driving up their market share. However, many of these applications are doing just enough to be installable; they do not necessarily embrace progressive enhancement and advanced APIs that unlock much of a PWA’s usefulness.
Adoption is being hampered by a fundamental divergence that is leading to an unstable foundation to build a PWA upon. A coalition of companies, including Google and Microsoft, is trying to expand the capabilities PWAs can draw upon by creating more and richer APIs for their respective web browsers. However, this effort is being balanced by another group, led by Apple and Mozilla. This second group is growing increasingly concerned about user privacy issues that PWAs give rise to. This fundamental conflict threatens one of the key promises of PWAs – using a single web application to deliver native-like performance without the overhead associated with a traditional application. This divergence has led to a situation in which PWAs are gaining capabilities on some platforms while losing them on others.
With the major browser vendors being divided, the next year or so promises a mixed bag of new and removed capabilities.
PWAs currently have a limited number of options for how they are displayed, with most of them choosing standalone, which instructs the platform to render the PWA as a standard app. New options are likely to be added in the future, such as support applications that require a tabbed interface.
The near future also promises to introduce new APIs that PWAs can leverage, at least on the Google and Microsoft platforms. The Fugu Project is leading this drive, with new capabilities being introduced every few weeks. Apple has also added some new features on iOS and iPadOS, such as the ability to use FaceID and TouchID. This indicates that some new features will probably come to Apple’s platforms, but privacy concerns promise to limit growth.
Overall, the near-term future of PWAs will be fragmented. New features and capabilities on Google and Microsoft platforms promise to make them more powerful than ever. However, the privacy concerns voiced by Apple and Mozilla are likely to lead to freezing the capabilities of Safari and FireFox-powered PWAs. Given their advantages with relatively little overhead, PWAs promise to continue to gain market share slowly. This will likely increase as the major vendors work through their diverse perspectives and establish a balance between the capabilities of the platform and the ability to address privacy concerns.