Revisiting Chrome's installability criteria

In the coming months Chrome will be running experiments with the goal of simplifying the app install criteria, to improve developer and user experience. This post shares the changes you can expect, and the reasons we are running these experiments.

Install has existed as a web feature on mobile since 2015, with support for desktop PWA install added in 2019. The install capability on Chromium browsers is restricted by quality criteria including a manifest with specific fields such as name and icon, and a service worker with a fetch handler.

The goal of the existing install criteria is to incentivize developers to invest in high quality user experiences and to meet user expectations when software is installed. However, the requirements in the criteria didn't always produce that higher quality experience. For example, the service worker check was meant as a proxy for detecting sites with some offline experience, but sites added service workers with empty fetch handlers to satisfy the criteria. This hurts web performance instead of improving the experience, and (Chrome eventually mitigated the problem by ignoring empty handlers).

Given that the existing criteria is not resulting in our intended outcome, we are experimenting with some changes to the criteria. As a first step we have removed the requirement to have a service worker that implements the fetch() method for installation from the menu, since version 108 on mobile and 112 on Desktop.

App without a service worker implementation that still shows Install app as an option from the three dot menu.

To accomplish the original goal of providing users with an in app offline experience, we launched a default custom page for sites that don't implement their own.

For now the algorithm that displays the install prompt still requires the presence of a fetch() handler, this is an area where we are working to incorporate new signals and display the prompt when the user is most likely to install the app. Developers can still use beforeInstallPrompt() to control the prompt.

We want users to have the power to decide which websites they want to experience as an app, on a full window, with direct access using icons. In future releases we'll experiment with removing the requirement of certain manifest fields in order to be installable. We will closely evaluate metrics and customer feedback to determine Chrome's updated behavior.

Finally, because the Lighthouse PWA checks are directly associated with the installability criteria, we have decided to remove this category from Lighthouse. We are still committed to providing developers with the best tools to optimize their installed experiences on the web, you can still find the checks for optimizations and debugging for installable experiences on DevTools.

Keep an eye out for these experiments and if you have any questions or concerns please submit feedback.