Skip navigation
Part II Chapter 10

PWA

Hero image of Web Almanac characters converting a web page to a mobile web app.

Introduction

The year 2015 was the first time we read about Progressive Web Applications. Nine attributes—responsive, connectivity independent, app-like-interactions, fresh, safe, discoverable, re-engageable, installable and linkable—were what defined the cutting edge of what could be achieved with web technologies back then. The PWA concept was coined 10 years ago, and it is with great pride that we look at the state of this set of technologies, one decade after its ideation.

The concept of a PWA has evolved a lot in these 10 years, and different browsers support it in different variations and with different names. An idea that started as a way of enabling access to a web application via “Add to home screen” on mobile browsers is now present on multiple platforms and devices. This set of technologies allow to integrate web content directly into the underlying platform, enabling at the same time advanced capabilities and a more native look and feel. Let’s dive into what the last couple of years have brought to PWAs.

Changes to PWA/web apps

The last couple of years have seen new features coming to web apps that enable more customization, advanced control of the application’s behavior and better performance. But above all, there has been progress in supporting web apps (to an extent or another) on multiple engines!

Chromium based browsers prompt for an application installation once a minimum set of requirements is identified. This used to be the case on apps that had a manifest file, a service worker and were served over a secure connection. For a while this was the “trifecta” for PWA installability. This has changed and nowadays only the manifest is required (the HTTPS connection is still there, do not worry); service workers are no longer required for browsers like Edge and Chrome to display the installation prompt.

On the other hand, Safari does not prompt for web app installation. It does however allow any web page to be installed as an application by adding it to the dock on macOS 14.

Another great news for PWAs is that Firefox now supports web apps from version 143! It is available for PWAs on Windows only, following what has been a “top request from the Mozilla Connect community”.

With web apps, being web-based, one of the concerns of not having a service worker is offline support. It is true using service workers allow developers to provide a great offline experience by caching resources that make up the UI of the web app. The change in requirements (for Chromium) or default behaviors (for Safari and Firefox) means that the browser may create a default offline experience that shields users from lack of connectivity.

With this summary, we are now ready to jump into the data and understand the state of PWAs right now. Where possible we will also by comparing this year’s data with the data from 3 years ago—which was the last time there was a chapter on PWAs.

Service worker

Service workers remain essential to allow advanced capabilities like background sync, offline support and push notifications to web apps. This year, the data suggest around one fifth of web properties are using service workers.

Figure 10.1. Service worker controlled pages by rank.

To start strong, we will look at the service worker controlled pages by rank. From the top 1,000 pages, 30.3% (desktop) and 28.9% (mobile) are managed by a service worker. This is around a 20% increase compared to the data from 3 years ago.

Overall, across every rank grouping there was a strong increase, when looking at all the percentage of PWA websites going from 1.4% (desktop and mobile) in 2022 to 20.5% (desktop) and 20.0% in mobile.

Following we have usage data for capabilities of service worker by events, methods and objects.

Service worker events

Figure 10.2. Most used service worker events.

The most used event for these service workers is the activation (activate) with almost every service worker using it, around 96% of PWAs using it. The install event takes second place with around 64% usage. Both install and activate are core lifecycle events so these numbers do not come as a surprise. This might suggest that applications are caching resources to speed up their loading times and performing service worker management.

Usage of other advanced events, like fetch, notificationclick and push falls considerably, possibly due to these being capabilities that fall into more advanced scenarios, like intercepting network requests, bypassing the default offline UX or delivering notifications from a push service.

Service worker methods

Figure 10.3. Most used service worker methods.

Looking at the most used service worker method, skipWaiting() has a notable use, with 68% usage on desktop and 63% on mobile. The browser will activate the service worker and replace the old one immediately. This implies developers are keen to ensure users don’t get stuck with stale assets. This is beneficial for applications that require frequent updates, like dashboards and messaging apps. It basically helps users get the latest version of the application right away.

Service worker objects

Figure 10.4. Most used service worker objects.

The most used service worker objects are clients, caches and cache. For clients, this can be expected as it is the way to tell the service worker to take control of all open pages by calling clients.claim(). Regarding caches, management methods appear on top, also not surprising considering that these are the methods that developers would use to make sure their assets are up to date to achieve that speedy page load.

As hinted before, the main methods from these correspond to claim, open/delete/keys/match, and add.

Registration properties

Figure 10.5. Most registered service worker properties.

Diving deeper into service worker functionality, the data sheds some light into advanced capabilities that PWAs are using. For all PWAs using service workers across desktop and mobile, ~7% are registering for pushManager, 2% register for sync and 2% register for navigationPreload.

Web application manifest

The web application manifest is now, more than ever, the most important part of a web app. It defines a look and feel, enables advanced capabilities that are gated behind an installation and is becoming an integral part that identifies a web application as a whole. But in order to be effective, the manifest file needs to be well formed.

94.9%
Figure 10.6. Percent of mobile manifest files parsable on desktop.

For the current year, 94.5% of desktop sites and 94.9% of mobile sites are parseable. There is no change from the last data set, and same as last time around, the fact that the manifest file was able to be parsed does not imply completeness or minimum availability of features. Many values in the manifest, as important as they may seem, have reasonable fallbacks in place.

From those parseable manifests, we will now look at individual present fields. This can give us an understanding of how developers are using the manifest file and if there have been changes since 2022.

Manifest properties

Figure 10.7. Most used manifest properties.

Straight up, these are the most used PWA manifest properties: name, icons, short_name, display and background_color. The top 4 most used properties are the same ones from 2022, with subtle notable changes regarding their order.

Let’s examine how individual members rate in the totality of manifest files scanned by the Web Almanac. Unless noted otherwise, values are very similar so I will refer to both mobile and desktop sites.

Manifest field Sites
name 92% 93%
icons 90% 91%
short_name 82% 85%
display 82% 85%
background_color 80% 82%
theme_color 80% 82%
start_url 61% 68%
scope 31% 35%
description 25% 27%
orientation 17% 21%
Figure 10.8. Manifest properties.

For the manifests that specify the categories member, the top categories are:

Figure 10.9. Most used manifest category values.

While the manifest key categories is not used in many PWAs, these results hint at the top verticals on which web apps are more popular.

Manifest display values

The display member is used to specify the preferred display mode for the web app. Different browsers have different interpretations of these values, but overall it hints to the UA how much of the browser UX to show/hide.

Figure 10.10. Most used display values in the manifest (standalone).

Most web apps (78%) opt for a standalone value for the display member. From the documentation, standalone “opens the app to look and feel like a standalone native app”. This is not surprising as the general intention of a web app for a developer would be to have the app look more native-like, removing the browser chrome and some other UX. On the end this is something that varies with the implementation, as for example in Chromium browsers you get a ... menu and on Firefox some browser UI like the URL bar still remains for installed apps.

Manifest icons sizes values

Figure 10.11. Most used icons size values in the manifest.

Top sizes include 192x192 and 512x512.

Manifest orientation values

Figure 10.12. Most used orientation values in the manifest.

Unsurprisingly, around 79.2% of PWAs do not set orientation. Responsive design and modern development make defining the app’s orientation less necessary, but portrait takes second place with around 12.2%.

Service worker and manifest usage

We’ve seen the latest data on what the most used service worker and manifest features are. In 2025, we can see that roughly one fifth of sites use service workers, and roughly one tenth use manifests.

Figure 10.13. PWA service worker and manifest file usage.

Overall, there are considerable changes to the data from the 2022 Web Almanac. Service worker usage has taken a huge leap from around 1.7% to 19.2%. That is around a 10 times increase in adoption. Manifest usage is slightly higher but remains at a very similar spot as it was 3 years ago.

Digging into this more, it looks like a lot of the growth is due to Google Tag Manager enabling service workers.

PWAs and Fugu APIs

These are the top 10 used advanced capabilities in PWAs for 2025.

Capability Mobile Desktop
Compression Streams 18.4% 20.9%
Async Clipboard 17.9% 19.1%
Device Memory 10.7% 10.6%
Web Share 9.6% 9.8%
Media Session 6.8% 7.8%
Add to Home Screen 6.8% 7.3%
Media Capabilities 6.3% 7.3%
Cache Storage 9.00% 3.00%
Service Worker 3.7% 3.3%
Push 1.7% 1.6%
Figure 10.14. Top 10 used advanced capabilities in PWAs.

There is a complete separate chapter dedicated to capabilities to dive deeper in the adoption that these sort of APIs have had in 2025.

Notifications and PWAs

Notifications make sense for apps as they allow the user to re-engage with the application. This is a controversial capability as there is considerable bad UX and dark patterns to try to get users to accept them. The data shows that in both desktop and mobile, the most common action a user takes is to ignore these requests.

Figure 10.15. PWA notification acceptance rates.

Desktop notification acceptance is overwhelmingly ignored: 78% of them are disregarded, with a slightly lower but still meaningful 48% on mobile. This is not a surprise considering overall the notification fatigue users deal with on a regular basis.

Conclusion

It has been a decade since PWAs. The landscape has changed a bit as the technology and capabilities reach maturity; we now have all major browsers (Edge, Chrome, Firefox and Safari) supporting web apps to a degree. Web apps continue to show growth and almost one fourth of web sites crawled have either a service worker or a manifest file.

If you have noticed a slow down in pace of new features, you are correct. There are less web app features being launched today than a few years ago. I believe this has to do with the fact that capability-wise the platform has reached a level of maturity that allows a wide range of use cases to be created using a web tech stack. On the other hand there is a question of adoption that is tightly coupled with cross-engine capability support. It is until (very) recently that some major browsers are starting to support (some) advanced features, yet alone the possibility to acquire or install a web app.

Whilst advanced capabilities continue to be used sparingly, likely due to slow implementor support, the oldest capabilities like Web Share are starting to show up as well, and even more niche UX features like ’window-controls-overlay’ are starting to show up in the data. Slowly but surely these features are being commoditized.

If we look back to the last Web Almanac that had a PWA chapter, these are the things we can notice:

  • 2 more browsers (Safari and Firefox) have support for web apps.
  • Service worker controlled pages have gone up around 20% for all PWA websites from 2022.
  • There is less diversity of service worker events being used than 3 years ago. Less percentage of PWAs are using notificationclick, push, and fetch.
  • Percentage of pushManager registrations has dropped since 2022, likely due to the rise of usage (see note below) of service worker to focus on performance rather than pushing notifications.
  • Between 2022 and 2025 the total of PWA technology usage (desktop 12.5 million and mobile 15.5 million) has around doubled (desktop 5.4 million and mobile 7.9 million - 2022). The percentage of usage for service workers has surged around 10 times, and manifests have largely stayed around the same 8-9% usage.
  • Ignoring notification prompts is still the most common behavior for users.

As we close the 2025 Web Almanac PWA chapter, there’s ongoing work and agreement towards looking at a way to democratize web app distribution by baking installation capabilities directly into the platform. We hope in the next 10 years the PWA technologies will follow the same fate as responsive design, where they have been commoditized and web apps that have good UX for application lifecycle management will be the norm, in conjunction with newer capabilities that redefine what a web app can do. Here’s to the next decade for web apps!

Authors

Citation

BibTeX
@inbook{WebAlmanac.2025.PWA,
author = "Gonzalez, Diego and Solati, Michael and Salnikov, Maxim and Hollberg, Kai and Gustafson, Aaron and Güler, Onur and Pollard, Barry",
title = "PWA",
booktitle = "The 2025 Web Almanac",
chapter = 10,
publisher = "HTTP Archive",
year = "2025",
language = "English",
doi = "10.5281/zenodo.18246631",
url = "https://almanac.httparchive.org/en/2025/pwa"
}