
Aprogressive web application (PWA), orprogressive web app, is a type ofweb app that can be installed on a device as a standaloneapplication.[1] PWAs are installed using the offline cache of the device'sweb browser.[2]
PWAs were introduced from 2016 as an alternative tonative (device-specific) applications, with the advantage that they do not require separate bundling or distribution for different platforms. They can be used on a range of different systems, includingdesktop andmobile devices. Publishing the app to digital distribution systems, such as theApple App Store,Google Play, or theMicrosoft Store on Windows, is optional.[2]
Because a PWA is delivered in the form of awebpage orwebsite built using common web technologies includingHTML,CSS,JavaScript, andWebAssembly,[3] it can work on any platform with a PWA-compatible browser. As of 2025, PWA features are supported to varying degrees byGoogle Chrome,Apple Safari,Brave,Firefox for Android,Microsoft Edge,[4][5] andFirefox for Windows.[6]
At Apple'sWorldwide Developers Conference in 2007,Steve Jobs announced that theiPhone would "run applications created with Web 2.0 Internet standards".[7] Nosoftware development kit (SDK) was required, and the apps would be fully integrated into the device through theSafaribrowser engine.[8] This model was later switched to theApp Store, as a means of appeasing frustrated developers.[9] In October 2007 Jobs announced that an SDK would be launched the following year.[8] As a result, although Apple continued to support web apps, the vast majority of iOS applications shifted toward the App Store.
Beginning in the early 2010sdynamic web pages allowed web technologies to be used to create interactiveweb applications.Responsive web design, and the screen-size flexibility it provides have made PWA development more accessible. Continued enhancements to HTML, CSS, and JavaScript allowed web applications to incorporate greater levels of interactivity, making native-like experiences possible on a website.[10]
In 2013, Mozilla releasedFirefox OS. It was intended to be anopen-sourceoperating system for running web apps as native apps on mobile devices. Firefox OS was based on theGecko rendering engine with a user interface called Gaia, written in HTML5. The development of Firefox OS ended in 2016,[11] and the project was completely discontinued in 2017,[12] although a fork of Firefox OS was used as the basis ofKaiOS, afeature phone platform.[13]
In 2015, designer Frances Berriman andGoogle Chrome engineer Alex Russell coined the term "progressive web apps"[14] to describe apps taking advantage of new features supported by modern browsers, includingservice workers andweb app manifests, that let users upgrade web apps to progressive web applications in their nativeoperating system (OS). Google then put significant efforts into promoting PWA development for Android.[15][16] Firefox introduced support for service workers in 2016, and Microsoft Edge and Apple Safari followed in 2018,[17][15] making service workers available on all major systems.
By 2019, PWAs were supported by desktop versions of some browsers, includingMicrosoft Edge[18] (onWindows) andGoogle Chrome[19] (on Windows,macOS,ChromeOS, andLinux).
In December 2020, Firefox for desktop abandoned the implementation of PWAs (specifically, removed the prototype "site-specific browser" configuration that had been available as an experimental feature). A Firefox architect noted: "The signal I hope we are sending is that PWA support is not coming to desktop Firefox anytime soon."[20] Mozilla supports PWAs on Android and plans to keep supporting it.[21] Firefox version 143.0, released in September 2025, added support for PWA on Windows.[6]
| Browser | Support | Comment | ||||
|---|---|---|---|---|---|---|
| Windows | macOS | Linux | Android | iOS &iPadOS | ||
| Chromium-based | Yes | Yes | Yes | Yes | N/a | IncludesGoogle Chrome,Microsoft Edge,[18]Brave,Opera,Vivaldi,[22] andothers. |
| Firefox | Yes[6] | No[20] | No[20] | Partial | No | |
| Safari | N/a | Partial[23] | N/a | N/a | Partial[24] | |
Progressive web apps are all designed to work on any browser that is compliant with the appropriateweb standards.[citation needed] As with other cross-platform solutions, the goal is to help developers build cross-platform apps more easily than they would with native apps.[15] Progressive web apps employ theprogressive enhancement web development strategy.
Some progressive web apps use an architectural approach called the App Shell Model.[25] In this model, service workers store the Basic User Interface or "shell" of theresponsive web design web application in the browser's offlinecache. This model allows for PWAs to maintain native-like use with or without web connectivity. This can improve loading time, by providing aninitial static frame, a layout or architecture into which content can be loaded progressively as well as dynamically.[26]
The technical baseline criteria for a site to be considered a progressive web app and therefore capable of being installed by browsers were described by Russell in 2016[27] and updated since:[28][29]
name orshort_name,start_url, anddisplay (with a value ofstandalone,fullscreen orminimal-ui), andicons (with 192 px and a 512 px versions). Information contained in the manifest makes PWAs easily shareable via a URL, discoverable by search engines, and alleviates complex installation procedures (but PWAs may still be listed in a third-partyapp store).[31] Furthermore, PWAs support native app-style interactions and navigation, including being added to thehome screen, displayingsplash screens, etc.There are many technologies commonly used to create progressive web apps. A web application is considered a PWA if it satisfies the installation criteria, thus can work offline and can be added to the device's home screen. To meet this definition, all PWAs require at minimum a manifest and a service worker.[32][33][34] Other technologies may be used to store data, communicate with servers or execute code.
The web app manifest[35] is aWorld Wide Web Consortium (W3C) specification defining aJSON-based manifest (usually labelled manifest.json)[31] to provide developers with a centralized place to putmetadata associated with a web application including:
This metadata is crucial for an app to be added to a home screen or otherwise listed alongside native apps.
iOS Safari partially implements manifests, while most of the PWA metadata can be defined via Apple-specific extensions to the meta tags. These tags allow developers to enable full-screen display, define icons and splash screens, and specify a name for the application.[36][37]
A service worker is aweb worker that implements a programmable network proxy that can respond to web/HTTP requests from the main document. It is able to check the availability of a remote server, cache content when that server is available, and serve that content to the document later. Service workers, like any other web workers, work separately from the main document context. Service workers can handlepush notifications and synchronize data in the background, cache or retrieve resource requests, intercept network requests and receive centralized updates independently of the document that registered them, even when that document is not loaded.[38]
Service workers go through a three-step lifecycle of Registration, Installation and Activation. Registration involves telling the browser the location of the service worker in preparation for installation. Installation occurs when there is no service worker installed in the browser for the web app, or if there is an update to the service worker. Activation occurs when all of the PWA's pages are closed, so that there is no conflict between the previous version and the updated one. The lifecycle also helps maintain consistency when switching among versions of a service worker since only a single service worker can be active for a domain.[38]
WebAssembly allowsprecompiled code to run in a web browser, at near-native speed.[39] Thus, libraries written in languages such asC can be added to web apps. Announced in 2015 and first released in March 2017, WebAssembly became a W3C recommendation on December 5, 2019[40][41] and it received theProgramming Languages Software Award fromACMSIGPLAN in 2021.[42]
Progressive web app execution contexts get unloaded whenever possible, so progressive web apps need to store the majority of their long-term internal state (user data, dynamically loaded application resources) in one of the following manners:
sessionStorage (that enables session-only storage that gets wiped upon browser session end) andlocalStorage (that enables storage that persists across sessions).[43]In 2017,Twitter released Twitter Lite, a PWA alternative to the official nativeAndroid andiOS apps. According to Twitter, Twitter Lite consumed only 1–3% of the size of the native apps.[45]Starbucks provides a PWA that is 99.84% smaller than its equivalent iOS app. After deploying its PWA, Starbucks doubled the number of online orders, with desktop users ordering at about the same rate as mobile app users.[46]
A 2018 review published byForbes, found that users ofPinterest's PWA spent 40% more time on the site compared to the previous mobile website. Ad revenue rates also increased by 44%, and core engagements by 60%.[47]Flipkart saw 60% of customers who had uninstalled their native app return to use the Flipkart PWA.Lancôme saw an 84% decrease in time until the page is interactive, leading to a 17% increase in conversions and a 53% increase in mobile sessions on iOS with their PWA.[48]
Since a PWA does not require separate bundling or distribution for different platforms and is available to users via the web, it is not necessary for developers to release it over digital distribution systems like theApple App Store,Google Play,Microsoft Store, orSamsung Galaxy Store. The major app stores support the publication of PWAs to varying degrees.[2] Google Play, Microsoft Store,[49] and Samsung Galaxy Store support PWAs, but Apple App Store does not. Microsoft Store publishes some qualifying PWAs automatically (even without app authors' requests) after discovering them viaBing indexing.[50]