Hubbry Logo
Progressive web appProgressive web appMain
Open search
Progressive web app
Community hub
Progressive web app
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Contribute something
Progressive web app
Progressive web app
from Wikipedia
Logo

A progressive web application (PWA), or progressive web app, is a type of web app that can be installed on a device as a standalone application.[1] PWAs are installed using the offline cache of the device's web browser.[2]

PWAs were introduced from 2016 as an alternative to native (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, including desktop and mobile devices. Publishing the app to digital distribution systems, such as the Apple App Store, Google Play, or the Microsoft Store on Windows, is optional.[2]

Because a PWA is delivered in the form of a webpage or website built using common web technologies including HTML, CSS, JavaScript, and WebAssembly,[3] it can work on any platform with a PWA-compatible browser. As of 2025, PWA features are supported to varying degrees by Google Chrome, Apple Safari, Brave, Firefox for Android, Microsoft Edge,[4][5] and Firefox for Windows.[6]

History

[edit]

Predecessors

[edit]

At Apple's Worldwide Developers Conference in 2007, Steve Jobs announced that the iPhone would "run applications created with Web 2.0 Internet standards".[7] No software development kit (SDK) was required, and the apps would be fully integrated into the device through the Safari browser engine.[8] This model was later switched to the App 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 2010s dynamic web pages allowed web technologies to be used to create interactive web 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 released Firefox OS. It was intended to be an open-source operating system for running web apps as native apps on mobile devices. Firefox OS was based on the Gecko 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 of KaiOS, a feature phone platform.[13]

Initial introduction

[edit]

In 2015, designer Frances Berriman and Google Chrome engineer Alex Russell coined the term "progressive web apps"[14] to describe apps taking advantage of new features supported by modern browsers, including service workers and web app manifests, that let users upgrade web apps to progressive web applications in their native operating 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, including Microsoft Edge[18] (on Windows) and Google Chrome[19] (on Windows, macOS, ChromeOS, and Linux).

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

[edit]
Browser Support Comment
Windows macOS Linux Android iOS & iPadOS
Chromium-based Yes Yes Yes Yes N/a Includes Google Chrome, Microsoft Edge,[18] Brave, Opera, Vivaldi,[22] and others.
Firefox Yes[6] No[20] No[20] Partial No
Safari N/a Partial [23] N/a N/a Partial [24]

Characteristics

[edit]

Progressive web apps are all designed to work on any browser that is compliant with the appropriate web 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 the progressive 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 the responsive web design web application in the browser's offline cache. This model allows for PWAs to maintain native-like use with or without web connectivity. This can improve loading time, by providing an initial static frame, a layout or architecture into which content can be loaded progressively as well as dynamically.[26]

Technical criteria

[edit]

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]

  • Originate from a secure origin. Served over TLS and have no active mixed content. Progressive web apps must be served via HTTPS to ensure user privacy, security, and content authenticity.
  • Register a service worker with a fetch handler. Progressive web apps must use service workers to create programmable content caches. Unlike regular HTTP web cache, which caches content after the first use and then relies on various heuristics to guess when content is no longer needed, programmable caches can explicitly prefetch content in advance before they are used for the first time, explicitly discarding it when it is no longer needed.[30] This requirement helps pages to be accessible offline or on low-quality networks.
  • Reference a web app manifest. The manifest must contain at least the five key properties: name or short_name, start_url, and display (with a value of standalone, fullscreen or minimal-ui), and icons (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-party app store).[31] Furthermore, PWAs support native app-style interactions and navigation, including being added to the home screen, displaying splash screens, etc.

Technologies

[edit]

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.

Manifest

[edit]

The web app manifest[35] is a World Wide Web Consortium (W3C) specification defining a JSON-based manifest (usually labelled manifest.json)[31] to provide developers with a centralized place to put metadata associated with a web application including:

  • The name of the web application
  • Links to the web app icons or image objects
  • The preferred URL to launch or open the web app
  • The web app configuration data
  • Default orientation of the web app
  • The option to set the display mode, e.g. full screen

This metadata is crucial for an app to be added to a home screen or otherwise listed alongside native apps.

iOS support

[edit]

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]

Service workers

[edit]

A service worker is a web 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 handle push 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

[edit]

WebAssembly allows precompiled code to run in a web browser, at near-native speed.[39] Thus, libraries written in languages such as C 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 the Programming Languages Software Award from ACM SIGPLAN in 2021.[42]

Data storage

[edit]

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:

Web storage
Web storage is a W3C standard API that enables key–value storage in modern browsers. The API consists of two objects, sessionStorage (that enables session-only storage that gets wiped upon browser session end) and localStorage (that enables storage that persists across sessions).[43]
Indexed Database API
Indexed Database API is a W3C standard database API available in all major browsers. The API is supported by modern browsers and enables storage of JSON objects and any structures representable as a string.[44] The Indexed Database API can be used with a wrapper library providing additional constructs around it.

Comparison with native apps

[edit]

In 2017, Twitter released Twitter Lite, a PWA alternative to the official native Android and iOS 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 by Forbes, found that users of Pinterest'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]

Release via app stores

[edit]

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 the Apple App Store, Google Play, Microsoft Store, or Samsung 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 via Bing indexing.[50]

See also

[edit]

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
A progressive web app (PWA) is a built using standard web technologies such as , CSS, and , but enhanced with modern APIs to deliver a reliable, fast, and engaging comparable to native platform-specific apps. PWAs combine the broad reach of the web—accessible via any browser on any device—with app-like features including offline access, push notifications, and seamless installation to a device's or desktop environment, all from a single codebase. PWAs are defined by several key characteristics that distinguish them from traditional websites. They are progressive, progressively enhancing functionality based on the capabilities of the user's browser and device; responsive, adapting layouts and interactions to various screen sizes and orientations; connectivity-independent, enabling offline use or low-bandwidth operation through caching strategies; app-like, offering immersive standalone modes without browser chrome; safe, requiring secure delivery to protect user data; and discoverable, allowing indexing by search engines for easy access. These principles ensure PWAs work reliably across diverse environments while prioritizing user privacy and performance. At their core, PWAs rely on essential web standards for advanced functionality. A Web App Manifest, a JSON-based file, provides metadata like app name, icons, and display preferences to enable installation and customization. Service Workers, event-driven scripts running in the background, intercept network requests to enable caching, offline support, and features like background synchronization. Additionally, PWAs must be served over to ensure security and access to powerful APIs. The term "Progressive Web App" was coined in 2015 by developer Alex Russell and designer Frances Berriman to describe web experiences that harness emerging capabilities like service workers and app manifests, evolving from earlier web standards to close the gap between web and native apps. Since then, PWAs have gained widespread adoption, with benefits including faster load times—reducing bounce rates by up to 123% when improving from 10 to 1 second—higher user engagement (e.g., 65% more pages per session on Twitter's PWA), and cross-platform efficiency without separate native builds. Examples include , which saw a 60% increase in core engagements after implementing a PWA, demonstrating their impact on business metrics like traffic and retention.

History

Predecessors

The development of progressive web apps built upon earlier efforts to enhance web applications with offline functionality and cross-device adaptability. In the late and early 2010s, HTML5 introduced the Application Cache API (AppCache), which allowed developers to specify resources for offline use by creating a cache manifest file linked to an HTML document via the manifest attribute. This enabled web apps to load resources from the cache when offline, providing a basic offline experience for users, but it was limited to static resource caching without advanced control over network requests. However, AppCache suffered from significant reliability issues and browser inconsistencies that hindered its adoption. Updates to the cache required changes to the , but the process was all-or-nothing: if even one resource failed to download during an update, the entire cache update would abort, leaving the app in its previous state and potentially serving stale content indefinitely—a problem sometimes referred to as the "zombie cache" where the cache becomes stuck and unresponsive to updates. Browser support varied widely; for instance, Chrome allocated up to 20% of available disk space shared with other storage APIs, while imposed a strict 5 MB limit per origin, leading to unpredictable behavior across platforms. These flaws, including fragility to network errors and lack of fine-grained control, made AppCache unreliable for production web apps and prompted its deprecation in favor of more robust mechanisms like service workers. Parallel to these technical advancements, design principles emerged to address the growing diversity of devices. Responsive web design, coined by Ethan Marcotte in 2010, emphasized fluid grids, flexible images, and CSS media queries to create layouts that adapt seamlessly to varying screen sizes, laying the foundation for cross-device compatibility in web applications. Complementing this, the mobile-first approach, popularized by Luke Wroblewski in 2009, advocated designing for smaller screens and touch interactions before scaling up to larger desktops, ensuring optimal performance and usability on mobile devices where bandwidth and processing power were constrained. These methodologies shifted web development toward device-agnostic experiences, influencing the progressive enhancement strategies central to PWAs. In 2015, Google launched the (AMP) project as an open-source initiative to accelerate content loading on mobile devices, particularly for news articles and static pages. AMP pages used a restricted subset of , minimal CSS, and sandboxed executed in iframes to achieve sub-second load times by preloading resources via Google's cache, but this came at the cost of limited interactivity, as custom JavaScript and complex dynamic features were heavily curtailed to prioritize speed over full app-like functionality. While AMP improved delivery, its focus on read-only, non-interactive pages highlighted the need for technologies that could support richer, app-like experiences without such compromises.

Introduction and Early Adoption

The term "Progressive Web App" (PWA) was coined by Alex Russell, a developer, and designer Frances Berriman on June 15, 2015. They introduced the concept to describe web applications that leverage —starting with basic functionality and progressively adding advanced features—to provide reliable, fast, and engaging experiences comparable to native apps, while remaining accessible via standard web URLs without app store barriers. This vision aimed to bridge the gap between the open web and closed native ecosystems, prioritizing inclusivity for users on low-end devices or slow networks. Building on foundational web technologies like , Google outlined the initial technical framework for PWAs later in 2015. The proposal centered on integrating two key APIs: Service Workers, which enable background scripting for caching, offline access, and push notifications; and the Web App Manifest, a file that defines app metadata for installation, icons, and splash screens to mimic native app behavior. These elements allowed developers to create web apps that felt native-like, with the "app shell" model ensuring rapid loading of core UI while deferring non-essential content. Early adoption gained momentum in 2017, highlighted by 's launch of Twitter Lite as a PWA in April. This lightweight version loaded in under three seconds on networks, resulting in a 65% increase in pages per session, a 75% increase in tweets sent from web users, and up to 70% data savings compared to the native app, demonstrating PWAs' potential for emerging markets with limited bandwidth. Similarly, released its PWA that year, allowing users to curate and read personalized news magazines offline by caching articles and media. The W3C began formalizing PWA-enabling technologies in 2016 through its Web Applications Working Group, advancing specifications for Service Workers and related APIs to ensure cross-browser interoperability. This effort, incubated partly via the Web Incubator Community Group, focused on standardizing components like caching strategies and parsing to support reliable web app experiences.

Recent Developments

In 2023, Apple introduced support for push notifications in Progressive Web Apps (PWAs) on with the release of 16.4 and Safari 16.4, allowing developers to send real-time alerts to users who have added the PWA to their and granted permission. This feature marked a significant step forward, though it is limited to confirmed domains and requires explicit user opt-in. In the , compliance with the (DMA) led to reversals of planned PWA restrictions in 17.4, maintaining home screen web app support. Subsequent 18.1 updates, as of 2024, enabled third-party browsers to create PWAs for the iPhone home screen using their own engines, improving installation prompts and under DMA requirements, particularly in the . However, PWAs continue to face limitations, such as a 50 MB cache storage quota and restricted background processing due to battery and privacy policies. From 2024 onward, PWAs have increasingly integrated with through the Web Neural Network (WebNN) API, a W3C standard that enables on-device processing without relying on cloud services. This API allows PWAs to leverage for tasks like image recognition and directly in the browser, reducing latency and enhancing privacy in applications such as personalized content recommendation. In parallel, IoT connectivity has advanced via the Web and WebUSB APIs, which permit PWAs to interface with smart devices like sensors and peripherals over or USB connections. For instance, developers can use Web to enable PWAs to read data from wearables or control systems, fostering seamless IoT ecosystems in 2024-2025 deployments. Google reinforced PWA adoption on Android in 2023 by expanding Trusted Web Activities (TWAs), allowing developers to package PWAs for distribution in the Store with full-screen experiences and integration of native features like Play Billing for in-app purchases. These updates eliminated the need for a service worker fetch handler during installation and introduced richer install prompts with screenshots and descriptions from the web app manifest, streamlining the path from web to store-listed app. Performance advancements in PWAs have narrowed the gap with native apps, particularly through refined caching strategies in service workers. On devices, PWAs benefit from APIs such as Cache Storage and Background Fetch that optimize resource management and reduce data usage, enabling smooth rendering and minimal latency. These gains make PWAs viable alternatives for resource-constrained environments, though they remain browser-dependent.

Definition and Characteristics

Core Principles

Progressive Web Apps (PWAs) are built on the principle of , ensuring that the application functions effectively in any browser by providing a baseline experience that gracefully degrades on older or less capable devices while progressively adding enhanced features on modern ones. This approach prioritizes universal accessibility, allowing users to access core content and functionality regardless of their browser or device limitations, thereby democratizing the web experience. Reliability forms a foundational pillar of PWAs, emphasizing fast loading times and seamless offline functionality to maintain usability under varying network conditions. By leveraging technologies like service workers, PWAs can cache essential resources, enabling instant loading and operation without an internet connection, which eliminates frustrations such as slow performance or complete inaccessibility during poor connectivity. Safety is non-negotiable, with PWAs mandating delivery over to protect against man-in-the-middle attacks and ensure . This secure not only safeguards user interactions but also unlocks advanced web APIs essential for PWA capabilities. Discoverability is equally critical, as PWAs use standard URLs that allow them to be indexed by search engines, making them easily findable through conventional web searches rather than app stores. Re-engageability enhances user retention by mimicking native app behaviors, such as sending push notifications to alert users to updates or new content, and prompting installations to the for quick access. These mechanisms foster ongoing interaction, bridging the gap between web and native experiences while keeping the app lightweight and updateable without manual intervention.

Key Features

Progressive web apps (PWAs) deliver user-centric features that emulate native applications while leveraging web technologies, grounded in the core principles of for reliability and accessibility. Installability enables users to add PWAs to their home screens or app launchers via browser prompts, resulting in icons that launch the app in standalone windows free of browser chrome such as address bars. This feature fosters an app-like permanence and convenience, allowing direct device access without navigating through a browser, which improves re-engagement and reduces friction in daily use. Responsiveness ensures PWAs adapt fluidly across devices and screen sizes through CSS and flexible layouts, providing a seamless interface transition between mobile, tablet, and desktop environments. Users benefit from a consistent, optimized viewing experience regardless of device, eliminating the need for separate versions and enhancing on diverse hardware. Engagement is bolstered by background synchronization, which queues and completes updates opportunistically when connectivity returns, ensuring content remains fresh without interrupting user workflows. Additionally, splash screens deliver a polished, native-style launch , mimicking installed apps to create an immediate sense of reliability and professionalism upon opening. These elements heighten user retention by offering uninterrupted interactions and a responsive feel even in variable network conditions. Linkability allows PWAs to be shared effortlessly via standard URLs, supporting to specific content and integration with social sharing mechanisms, in contrast to native apps often confined to app stores. This inherent web characteristic promotes discoverability through search engines and easy dissemination among users, broadening reach without installation barriers.

Technical Foundations

Web App Manifest

The web app is a JSON-based that provides developers with a centralized place to define metadata for a , enabling features such as installation prompts, app icons, and display preferences in supporting browsers. It is typically named manifest.json and linked to the document using a <link> element with rel="manifest" and the href attribute pointing to the file's location, such as <link rel="manifest" href="/manifest.json" rel="nofollow">. This manifest plays a crucial role in making progressive web apps (PWAs) installable by supplying the necessary information for the browser to present the app as a native-like experience on the user's device. The manifest consists of a single JSON object with top-level keys known as members, including required and recommended properties for app identity and behavior. Essential members include name, a full human-readable for the app; short_name, a concise version for display in limited spaces like home screens; and icons, an array of image resources specifying sources (src), sizes (e.g., 192x192 pixels), types (e.g., or ), and purposes (e.g., "any" for general use or "maskable" for adaptive icons). Other key members are start_url, the URL launched when the app opens (relative to the manifest's scope); display, which controls the UI mode such as "fullscreen" (no browser chrome), "standalone" (app-like without ), or "minimal-ui" (reduced browser UI); scope, defining the set of URLs navigable from the start URL to prevent ; theme_color, a CSS color for UI elements like the ; and background_color, a fallback color shown while the app loads. For example, a basic manifest might appear as:

json

{ "name": "My Progressive Web App", "short_name": "MyPWA", "icons": [ { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" } ], "start_url": "/", "display": "standalone", "scope": "/", "theme_color": "#000000", "background_color": "#ffffff" }

{ "name": "My Progressive Web App", "short_name": "MyPWA", "icons": [ { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" } ], "start_url": "/", "display": "standalone", "scope": "/", "theme_color": "#000000", "background_color": "#ffffff" }

To trigger installability, the manifest must meet specific validation criteria enforced by browsers: it must be served over HTTPS, parse as valid JSON without errors, include a valid name or short_name, a start_url within the site's scope, and at least one icon of 192x192 pixels or larger with appropriate format support. Upon meeting these criteria—along with complementary requirements like a registered service worker—browsers like Chrome and Firefox will parse the manifest and offer an install prompt to users, allowing the PWA to be added to the home screen or applications folder. On , support for the web app manifest has evolved gradually but remains partial compared to other platforms. Since iOS 11.3 in 2018, has provided basic PWA capabilities using Apple-specific meta tags like <link rel="apple-touch-icon"> for icons and startup images, bypassing the full manifest for metadata. Icons support from the web app manifest was added in Safari 15.4 ( 15.4, March 2022), with further properties like name, display modes, and added or enhanced in Safari 16.4 ( 16.4, March 2023). In 2024, EU regulations under the led to temporary adjustments in PWA support on 17.4, which were resolved to maintain prior functionality. As of 18 (2024) and 18 (2025), advanced features like scope validation remain limited when adding sites to the via the Share menu. This adaptation allows users to install PWAs manually, but without automatic prompts, relying on these meta tags for broader compatibility.

Service Workers

Service workers are event-driven scripts that run in the background, separate from the main browser thread, enabling web applications to intercept and handle network requests even when the page is not active. They function as a programmable proxy between the web app, the browser, and the network, allowing developers to cache resources, manage offline functionality, and perform background tasks without impacting the . This architecture ensures that service workers operate independently of the document's lifecycle, persisting across sessions and enabling progressive web apps (PWAs) to deliver reliable, app-like experiences. The lifecycle of a service worker begins with registration, typically initiated via the navigator.serviceWorker.register() method, which loads a file defining the worker's behavior and associates it with a specific scope, often aligned with the web app manifest's start URL to define operational boundaries. Upon successful registration, the service worker enters the "installing" phase, triggered by the install event, where developers can precache essential assets using the Cache API to prepare for offline use. Once installed, the activate event fires, allowing cleanup of outdated caches from previous versions to prevent storage bloat and ensure smooth updates. This controlled lifecycle manages concurrency, with only one active service worker per scope at a time, facilitating seamless version transitions in PWAs. Core use cases for service workers in PWAs revolve around enhancing reliability through network interception and background synchronization. For caching, service workers listen for fetch events to implement strategies such as cache-first, which serves resources from the local cache before attempting a network request, or network-first, which prioritizes fresh data from the server while falling back to cache if offline; these are achieved via the Cache API's caches.open() and caches.match() methods. Additionally, service workers handle push events from servers to deliver notifications, enabling real-time updates without user interaction, as seen in the push event listener that can trigger display of custom notifications. Error handling in service workers focuses on graceful degradation for offline scenarios, where failed network requests during a fetch event can return fallback responses from the cache or generate custom error pages to maintain usability. For instance, if no cached resource matches a request, the worker can respond with a default offline page, ensuring the PWA remains functional rather than failing entirely. This approach, combined with the worker's event-driven nature, supports robust offline-first architectures in PWAs.

javascript

// Example: Basic service worker registration if ('serviceWorker' in [navigator](/page/Navigator)) { [navigator](/page/Navigator).serviceWorker.register('/sw.js') .then(registration => console.log('SW registered')) .catch(error => console.log('SW registration failed')); } // Example: Install event for caching self.addEventListener('install', event => { event.waitUntil( caches.open('v1').then(cache => cache.addAll(['/index.html', '/styles.css'])) ); }); // Example: Fetch event with cache-first [strategy](/page/Strategy) self.addEventListener('fetch', event => { event.respondWith( caches.[match](/page/Match)(event.request).then(response => response || fetch(event.request)) ); }); ```[](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers) ## Browser and Platform Support ### Major Browsers [Apple Safari](/page/Safari) offers partial support for Progressive Web Apps (PWAs), with service workers available since version 11.1 in 2017 for offline caching and basic functionality. The web app manifest is supported but with limitations, such as incomplete handling of display modes on [iOS](/page/IOS). Push notifications were added in version 16.4 ([March](/page/March) 2023) for [macOS Ventura](/page/MacOS_Ventura) and [iOS](/page/IOS) 16.4, though they require user gestures and immediate display on [iOS](/page/IOS) to maintain permissions. As of [Safari](/page/Safari) 18 in November 2025 (aligned with macOS Sequoia and [iOS](/page/IOS) 18), PWA installation to the [home screen](/page/Home_screen) or [dock](/page/Dock) is possible, but advanced features like background synchronization remain unavailable. This support is consistent across [iOS](/page/IOS) and macOS, prioritizing security over full app-like behaviors.[](https://caniuse.com/web-app-manifest)[](https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers)[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) Google Chrome has offered comprehensive support for Progressive Web Apps (PWAs) since version 40 in 2015, including full implementation of the web app manifest for installability, service workers for offline functionality, and push notifications for user engagement. This support extends to version 142 as of November 2025, with seamless Android integration via the "Add to [Home Screen](/page/Home_screen)" prompt, enabling PWAs to behave like native applications.[](https://caniuse.com/web-app-manifest) On desktop platforms, Chrome's PWA features allow for standalone windows and taskbar pinning, enhancing [user experience](/page/User_experience) across operating systems. Particularly on Windows 11, when visiting a compatible PWA site that is not already installed, an install icon appears in the address bar; clicking it triggers an installation prompt, allowing the user to install the PWA as a desktop application added to the Start menu, taskbar, or desktop, and launching in a standalone window without browser UI elements such as tabs or the address bar.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing) Mozilla [Firefox](/page/Firefox) provides robust PWA support on Android since version 54 in 2017, covering core elements like service workers, background sync, and push notifications for reliable offline and real-time capabilities.[](https://caniuse.com/push-api) For desktop, [Firefox](/page/Firefox) introduced experimental PWA installation in Nightly builds in March 2025, progressing to tested support on Windows by August 2025, though full manifest integration remains partial compared to Chromium-based browsers up to version 145.[](https://www.ghacks.net/2025/08/22/experimental-firefox-now-supports-progressive-web-apps-on-windows/) This development addresses prior gaps, allowing users to install and manage PWAs more natively on desktop environments.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing) Microsoft Edge gained full PWA support after adopting the Chromium engine in January 2020 with version 79, mirroring Chrome's feature set including manifests, service workers, and notifications up to version 142 in late 2025.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/) Edge excels in Windows integration, supporting PWA installation to the Start menu, taskbar, and even Widgets Board in Windows 11 for enhanced discoverability and actions. On Windows 11, an "App available" icon appears in the address bar for eligible PWAs; selecting this icon opens an installation dialog, enabling the user to install the PWA as a desktop application that integrates with the Start menu, allows pinning to the taskbar, and optionally creates a desktop shortcut, launching in a standalone window without browser UI.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/ux) This alignment ensures consistent PWA performance across desktop and mobile, with ongoing updates like App Actions in version 137 for deeper system ties.[](https://blogs.windows.com/msedgedev/2025/05/30/bring-your-pwa-closer-to-users-with-app-actions-on-windows/) Chromium-based browsers like Brave and [Opera](/page/Opera) deliver full PWA compatibility, with support for manifests since versions 53 and 40 respectively, extending to their latest releases in 2025.[](https://caniuse.com/web-app-manifest) Brave emphasizes [privacy](/page/Privacy) in PWA implementations, such as optimized service worker caching that blocks trackers without compromising offline access.[](https://community.brave.app/t/progressive-web-applications-pwa-in-brave/605917) [Opera](/page/Opera) similarly aligns with [Chromium](/page/Chromium) standards, supporting push APIs and installation prompts while maintaining cross-platform consistency for desktop and mobile users.[](https://caniuse.com/push-api) ### Platform-Specific Limitations Progressive Web Apps (PWAs) encounter significant OS-level constraints on [iOS](/page/IOS), where Safari's implementation limits key functionalities despite broader web standard support. As of 2025, [iOS](/page/IOS) does not provide full service worker support for background [synchronization](/page/Synchronization), even following the partial enhancements in iOS 18, which prevent PWAs from deferring and executing tasks automatically upon network reconnection without user intervention.[](https://caniuse.com/background-sync) Push notifications on [iOS](/page/IOS) require explicit user confirmation through a [gesture](/page/Gesture) to grant permission, and the service worker must display the notification immediately upon receipt; otherwise, the permission is automatically revoked to ensure timely delivery.[](https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers) If the user denies permission during sign-up, this denial is permanent for the installed PWA, as there is no individual toggle in iOS Settings > Notifications to re-enable it. To reset the permission and allow re-prompting, the user must delete the PWA from the Home Screen and re-add it via Share > Add to Home Screen in Safari. Developers may display an in-app message providing these instructions after a denial.[](https://community.appfarm.io/t/push-notification-experiences/1017)[](https://sarunw.com/posts/how-to-reset-push-notification-permission-on-ios/) Additionally, while home screen badges are supported for installed PWAs using the [Badging API](/page/API) since iOS 16.4, they necessitate separate user configuration in the device's Notifications settings and are limited to [Home Screen](/page/Home_screen) web apps.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/How_to/Display_badge_on_app_icon) On Android, PWA support is robust in modern versions through Chrome, enabling full access to service workers, offline caching, and push notifications. However, older Android versions prior to 5.0 ([Lollipop](/page/Lollipop)) lack service worker compatibility entirely, rendering core PWA features like offline functionality unavailable, and they do not enforce [HTTPS](/page/HTTPS) as a secure context requirement for these APIs. Desktop operating systems present varying degrees of integration challenges for PWAs. Windows and macOS offer complete PWA support via browsers such as [Microsoft Edge](/page/Microsoft_Edge) and [Google Chrome](/page/Google_Chrome), including seamless notification handling and installation to the [taskbar](/page/Taskbar) or [dock](/page/Dock). On [Linux](/page/Linux) distributions, while major browsers like Chrome provide the underlying PWA capabilities, notification integration can differ across desktop environments—such as GNOME's reliance on system trays versus KDE's plasma notifications—potentially leading to inconsistent display or management of alerts. To address these platform-specific limitations, developers implement progressive enhancement techniques, detecting available features at runtime (e.g., via checks like `'serviceWorker' in navigator` or `'PushManager' in window`) and gracefully degrading to basic web app modes, such as server-dependent loading without offline support or simplified user prompts for notifications.[](https://web.dev/learn/pwa/progressive-web-apps) This approach ensures core usability across constrained environments while maximizing advanced features where supported. ## Advanced Enabling Technologies ### WebAssembly WebAssembly (Wasm) is a binary instruction format designed for a stack-based virtual machine, enabling code to execute at near-native speeds within web browsers. It serves as a portable compilation target for high-level languages such as C++, [Rust](/page/Rust), and others, allowing developers to leverage existing codebases for web applications without significant performance loss. This format complements [JavaScript](/page/JavaScript) by providing efficient execution for computationally intensive tasks that would otherwise be slow in interpreted environments.[](https://webassembly.org/)[](https://developer.mozilla.org/en-US/docs/WebAssembly) In Progressive Web Apps (PWAs), [WebAssembly](/page/WebAssembly) integrates seamlessly to enhance performance, particularly for high-demand operations like image processing or gaming. Developers load Wasm modules dynamically through [JavaScript](/page/JavaScript), often caching the binaries via service workers to support offline execution, ensuring the PWA remains functional without network access. For instance, Adobe's web version of Photoshop utilizes [WebAssembly](/page/WebAssembly), compiled from its C++ codebase via [Emscripten](/page/Emscripten), to perform complex editing tasks such as layer manipulation and filtering at speeds comparable to native applications. Similarly, PWAs incorporating games or simulations benefit from Wasm's efficiency, as seen in ports of engines like Unity that deliver smooth rendering and physics calculations directly in the browser.[](https://web.dev/articles/ps-on-the-web)[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Offline_and_background_operation) WebAssembly operates within a strict [security](/page/Security) model, executing in a memory-safe sandbox that isolates it from the host environment and prevents unauthorized access to system resources. Modules interact with [JavaScript](/page/JavaScript) through well-defined imports and exports, where functions and globals are explicitly declared and validated at load time, raising exceptions for any violations. To optimize delivery in PWAs, Wasm binaries are typically compressed using [Brotli](/page/Brotli), which achieves superior size reduction compared to [Gzip](/page/Gzip)—often 20-30% smaller—facilitating faster downloads over mobile networks while maintaining compatibility across browsers.[](https://webassembly.org/docs/security/)[](https://almanac.httparchive.org/en/2021/webassembly) By 2025, advancements in [WebAssembly](/page/WebAssembly), notably the completion of version 3.0 including the Garbage Collection (GC) proposal, have expanded its capabilities for PWAs. As of late 2025, the GC proposal is implemented in major browsers including Chrome (version 119+), [Firefox](/page/Firefox) (120+), and [Safari](/page/Safari) (18.2+), enabling efficient support for languages like [Java](/page/Java) and C# in PWAs. The GC feature introduces automatic [memory management](/page/Memory_management) with support for structured data types, enabling the efficient handling of large, dynamic datasets in complex applications such as embedded [databases](/page/DNA_gyrase) or real-time [analytics](/page/Analytics) tools. This low-level GC allows compilers from languages like [Java](/page/Java) or [OCaml](/page/OCaml) to target Wasm more effectively, reducing manual memory overhead and unlocking previously impractical use cases in browser-based PWAs without relying on external plugins.[](https://webassembly.org/news/2025-09-17-wasm-3.0/)[](https://webassembly.org/features/) ### Data Storage Progressive Web Apps (PWAs) rely on client-side storage mechanisms to manage data offline, enabling seamless user experiences without constant network connectivity. The primary [API](/page/API) for handling structured data is IndexedDB, which provides an asynchronous, low-level, transactional database system. It supports object stores for data organization, indexes for efficient querying, and transactions to ensure [data integrity](/page/Data_integrity), making it suitable for storing large datasets such as user preferences, application state, or cached content.[](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) For simpler storage needs, PWAs can use the Web Storage API's localStorage and sessionStorage, which offer synchronous key-value pair storage. localStorage persists data across browser sessions for the origin, while sessionStorage clears data upon tab closure. Both are limited to approximately 5 MB per origin in most browsers, sufficient for small items like settings or temporary tokens but not for extensive datasets.[](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API)[](https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria) To handle offline data synchronization, PWAs employ the Background Synchronization API, which allows service workers to queue changes made while offline and defer resolution until a stable network connection is available. This prevents [data loss](/page/Data_loss) by ensuring queued operations, such as uploading user edits or syncing database updates, are processed reliably in the background without user intervention. Service workers can intercept and manage these storage-related requests to facilitate the sync process. For example, cloud services like Firebase can be integrated to enable automatic synchronization to the cloud when online, supporting user accounts and cross-device sync, which is particularly useful for AI-integrated PWAs.[](https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API)[](https://firebase.google.com/docs/web/pwa)[](https://firebase.google.com/products/generative-ai) Browser-enforced storage quotas prevent excessive disk usage, with limits varying by implementation; for example, Chrome permits an origin to consume up to 60% of available disk space across storage APIs like IndexedDB. Developers can use the StorageManager API's persist() method to request user permission for persistent storage, which, if granted, exempts the origin's data from automatic eviction during low-disk scenarios, ensuring longevity for critical offline [data](/page/Data). Quotas can be queried via estimate() to monitor usage and avoid errors.[](https://web.dev/articles/storage-for-the-web)[](https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/persist) ### Push Notifications Push notifications in progressive web apps (PWAs) enable server-initiated re-engagement with users by delivering messages to the client even when the app is closed or not in focus. The Push API integrates with service workers to receive these messages from external push services, such as [Firebase Cloud Messaging](/page/Firebase_Cloud_Messaging), which route notifications through browser-specific endpoints while the service worker remains active in the background.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Tutorials/js13kGames/Re-engageable_Notifications_Push)[](https://www.w3.org/TR/push-api/) Implementation begins with obtaining explicit user permission via the `Notification.requestPermission()` method, which displays a prompt allowing users to grant, deny, or manage access to notifications for the origin. Upon approval, the PWA subscribes to the push service, generating an endpoint URL for message delivery; push payloads are typically limited to around 4 KB in total size (varying by browser, e.g., 4 KB in Chrome/[Firefox](/page/Firefox) and 2 KB in [Safari](/page/Safari)), often containing [JSON](/page/JSON) data.[](https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission_static)[](https://web.dev/articles/push-notifications-web-push-protocol) When a push event fires in the service worker, developers invoke `showNotification()` to render the alert, specifying options like a prominent **[title](/page/Title)**, descriptive **body** text, an associated **[icon](/page/Icon)**, and interactive **actions** (e.g., buttons for quick responses). On mobile platforms, this supports device vibration via a pattern array (e.g., `[200, 100, 200]`) and default sound playback, provided the `silent` option is not enabled, mimicking native app behavior for better engagement.[](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification)[](https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification) As of 2025, the Push API remains a W3C Working Draft, with implementations varying across browsers. This aligns with expanded [iOS](/page/IOS) support in [Safari](/page/Safari) 16.4+ (with limitations, such as requiring home screen installation), improving push functionality availability across major browsers and devices.[](https://www.w3.org/TR/push-api/)[](https://documentation.onesignal.com/docs/en/web-push-for-ios) For scenarios involving network interruptions, undelivered notifications can leverage [data storage](/page/Data_storage) mechanisms to queue payloads until reconnection.[](https://www.w3.org/TR/service-workers/) On iOS, if a user denies push notification permission for an installed PWA, the denial is permanent, and no toggle exists in iOS Settings > Notifications to re-enable it. To reset the permission and allow re-prompting, the user must delete the PWA from the Home Screen and re-add it via Share > Add to Home Screen in Safari. Developers should display an in-app message with these instructions after a permission denial to guide users effectively.[](https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers)[](https://www.notificare.com/blog/2023/10/17/push-notifications-for-ios-web-apps/)[](https://sarunw.com/ios/reset-app-notification-permissions/) ## Comparison with Native Apps ### Advantages Progressive Web Apps (PWAs) offer significant cost efficiencies in development and maintenance compared to native applications, as they utilize a single [codebase](/page/Codebase) that functions across multiple platforms without the need for separate builds tailored to each operating system. This approach reduces development expenses by eliminating the duplication of effort required for platform-specific coding, with estimates indicating up to 50% lower costs for cross-platform projects.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/) Additionally, updates to PWAs can be deployed instantly through server-side changes, bypassing the lengthy review and approval processes associated with app stores, which streamlines maintenance and ensures users always access the latest version without manual intervention.[](https://web.dev/learn/pwa/progressive-web-apps) PWAs enhance discoverability and [search engine optimization](/page/Search_engine_optimization) (SEO) by being naturally indexable by search engines like [Google](/page/Google), allowing users to find and access them directly via web searches rather than navigating app stores. This eliminates delays from app store approval cycles, enabling faster market entry and broader organic reach. Studies from [Google](/page/Google) indicate that installed PWAs achieve 2.5 times higher conversion rates among users compared to non-installed mobile web experiences, reflecting improved engagement and retention.[](https://web.dev/articles/drive-business-success) In terms of user engagement and retention, native mobile apps generally achieve the highest levels due to advanced features such as push notifications, offline access, and prominent home screen presence, which foster deeper user loyalty. Responsive mobile websites, conversely, exhibit the lowest engagement and retention rates, as they lack these app-like capabilities and often suffer from performance limitations. Progressive Web Apps offer higher engagement and retention than responsive websites, thanks to features like push notifications and installability; for instance, case studies show PWAs can increase time spent on site by up to 40% and page views per session by 65% compared to traditional mobile web experiences, though they typically do not surpass native apps for the most loyal users.[](https://web.dev/articles/drive-business-success)[](https://www.cloudflight.io/en/blog/rwd-vs-native-apps-vs-pwas-in-2024/)[](https://www.griddynamics.com/blog/pwa-research) The cross-platform nature of PWAs allows them to operate on any device equipped with a modern [web browser](/page/Web_browser), from smartphones to desktops, thereby minimizing fragmentation and ensuring consistent experiences without OS-specific adaptations. This broad accessibility rivals native apps in offline functionality through service worker caching, providing reliable performance in low-connectivity scenarios without requiring platform-dependent code.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/) PWAs also feature a reduced storage footprint on user devices, typically occupying about one-tenth the space of equivalent native apps due to leveraging the device's shared web runtime and avoiding redundant platform binaries. For instance, average PWA sizes hover around 2 MB, in contrast to 16-50 MB for native counterparts, which facilitates quicker downloads and installation, particularly beneficial for users in regions with limited bandwidth or storage.[](https://anyforsoft.com/blog/native-app-vs-progressive-web-app/) ### Limitations Progressive web apps (PWAs) face constraints in directly accessing device hardware compared to native applications, relying instead on user-mediated Web APIs that require explicit permissions and exhibit inconsistencies across browser implementations. For instance, access to the camera via the MediaDevices API, GPS through the Geolocation API, and Bluetooth using the Web Bluetooth API is possible but limited to what the browser exposes, often without the seamless, always-on integration native apps provide.[](https://web.dev/learn/pwa/progressive-web-apps) In terms of performance, PWAs encounter ceilings relative to native apps due to the overhead of browser rendering and [JavaScript](/page/JavaScript) execution, resulting in slower startup times and higher battery drain during intensive tasks, as web technologies lack the low-level optimizations available to native code. Studies indicate that PWAs consume more energy overall than native apps, though they remain more efficient than some hybrid alternatives for UI rendering.[](https://dl.acm.org/doi/10.1016/j.is.2022.102017)[](https://www.researchgate.net/publication/351487772_PWA_vs_the_Others_A_Comparative_Study_on_the_UI_Energy-Efficiency_of_Progressive_Web_Apps) Platform dependencies further restrict PWAs, particularly on [iOS](/page/IOS), where Apple's implementation limits background execution and some notification features, although push notifications have been supported since iOS 16.4 (2023) for installed PWAs, improving engagement capabilities as of 2025.[](https://web.dev/learn/pwa/progressive-web-apps) Additionally, PWAs cannot natively integrate with app store analytics or in-app purchase systems, forgoing the monetization and user acquisition tools built into platforms like the [Apple App Store](/page/App_store).[](https://web.dev/learn/pwa/progressive-web-apps) Security trade-offs in PWAs stem from the mandatory use of [HTTPS](/page/HTTPS), which enforces secure connections but confines operations within the browser's sandbox, preventing the low-level system calls and direct hardware manipulations that native code permits. This isolation enhances user [privacy by design](/page/Privacy_by_design) but limits PWAs' ability to perform advanced system-level tasks available to native applications.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) While these limitations exist, the ease of web distribution can offset some deficits by enabling broader reach without [app store](/page/App_store) approvals.[](https://web.dev/learn/pwa/progressive-web-apps) ## Distribution Methods ### Web Distribution Progressive web apps (PWAs) are hosted on standard web servers such as [Apache](/page/Apache) or [Nginx](/page/Nginx), requiring secure delivery over [HTTPS](/page/HTTPS) to ensure installability and security features like service workers function properly.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable) This hosting setup allows PWAs to be accessed directly via unique URLs, facilitating discovery through [search engine optimization](/page/Search_engine_optimization) (SEO) techniques identical to those used for traditional websites.[](https://web.dev/learn/pwa/progressive-web-apps) Unlike native apps confined to app stores, PWAs leverage organic [web traffic](/page/Web_traffic) and direct linking, enabling broader reach without intermediary platforms.[](https://web.dev/learn/pwa/) On [iOS](/page/IOS), as of iOS 17.4 and subsequent updates in 2025, [Safari](/page/Safari) supports PWA installation via the Share menu, with enhanced features including push notifications and offline functionality, particularly for [EU](/page/.eu) users under the [Digital Markets Act](/page/Digital_Markets_Act).[](https://brainhub.eu/library/pwa-on-ios)[](https://www.mobiloud.com/blog/progressive-web-apps-ios) Updates in PWAs occur automatically through service workers, which the browser checks for changes upon page reload or at regular intervals, such as every 24 hours.[](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) Caching strategies like stale-while-revalidate enable zero-downtime updates by serving cached content immediately while fetching and applying fresh versions in the background.[](https://web.dev/learn/pwa/serving) This mechanism ensures users experience seamless enhancements without manual intervention or [app store](/page/App_store) approvals.[](https://web.dev/learn/pwa/update) PWAs integrate seamlessly with web-based analytics tools, such as [Google Analytics](/page/Google_Analytics), to monitor user engagement, page views, and behavior directly from the browser environment. This approach provides developers with real-time insights into [web traffic](/page/Web_traffic) and interactions, bypassing app store-specific metrics and enabling [A/B testing](/page/A/B_testing) through standard web experimentation frameworks. User installation of PWAs is prompted by the browser after meeting specific criteria, including [HTTPS](/page/HTTPS) serving, a valid web app manifest, and user engagement thresholds like at least one interaction and 30 seconds spent on the site in Chrome.[](https://web.dev/articles/install-criteria) The [manifest file](/page/Manifest_file) briefly enables these browser-initiated prompts by defining app metadata, allowing users to add the PWA to their home screen or desktop without visiting an [app store](/page/App_store).[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest) ### App Store Releases On Android, Progressive Web Apps (PWAs) can be packaged for submission to the [Google Play](/page/Google_Play) Store using Trusted Web Activities (TWAs), which allow the PWA to run in a full-screen, Chrome-powered context without an [address bar](/page/Address_bar). Developers use the Bubblewrap command-line tool, developed by [Google](/page/Google), to wrap the PWA into an Android Package Kit (APK) file by specifying the PWA's [URL](/page/URL), app name, and icons.[](https://developers.google.com/codelabs/pwa-in-play) Verification is achieved through Digital Asset Links, a protocol that associates the APK with the PWA's domain via a [JSON](/page/JSON) file hosted on the website, enabling the full-screen mode and preventing unauthorized use.[](https://developer.android.com/develop/ui/views/layout/webapps/guide-trusted-web-activities-version2) Once packaged, the APK undergoes [Google](/page/Google)'s review process, which typically focuses on standard app policies rather than deep code inspection since the content is web-based.[](https://developer.chrome.com/docs/android/trusted-web-activity) For iOS, Apple does not provide an official method to wrap PWAs directly into native apps for the App Store, limiting distribution primarily to users adding the PWA to their [home screen](/page/Home_screen) via [Safari](/page/Safari). However, third-party tools like PWABuilder enable developers to generate an iOS package by creating an [Xcode](/page/Xcode) project that loads the PWA within a WKWebView, producing an [IPA](/page/.ipa) file suitable for submission via [TestFlight](/page/TestFlight) or the [App Store](/page/App_store).[](https://blog.pwabuilder.com/posts/publish-your-pwa-to-the-ios-app-store/) This approach uses web view rendering and supports features like push notifications via integrations such as FCM, but lacks some native iOS capabilities like advanced background processing without additional native code, and requires the app to meet Apple's guidelines for non-repackaged [web content](/page/Web_content), often necessitating additional native elements for approval.[](https://docs.pwabuilder.com/#/builder/app-store?id=push-notifications)[](https://github.com/pwa-builder/pwabuilder-ios) In the [Microsoft Store](/page/Microsoft_Store), PWAs are packaged as MSIX bundles without requiring code changes to the web app, leveraging tools like PWABuilder to generate the package from the PWA's [URL](/page/URL) after evaluating its readiness.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/how-to/microsoft-store) The resulting app runs the PWA using [Microsoft](/page/Microsoft) Edge's engine, with a custom referer header to identify Store installations, and submission involves reserving an app name in the Microsoft Partner Center followed by uploading the MSIX bundle for review, which usually completes in 24-48 hours.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/how-to/microsoft-store) While WebView2 is used for hybrid Windows apps integrating web content, pure PWAs in the Store rely on Edge for rendering to ensure consistent performance across devices.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/how-to/microsoft-store) Packaging PWAs for app stores offers advantages such as faster review times compared to fully native apps, often due to the reliance on established web standards, but requires compliance with store-specific policies, including mandatory [privacy](/page/Privacy) policies detailing [data collection](/page/Data_collection) practices.[](https://www.adjust.com/blog/native-app-vs-progressive-web-app/) For instance, both Apple and [Google](/page/Google) mandate clear disclosure of user data handling in app metadata.[](https://developer.apple.com/app-store/review/guidelines/) Monetization is facilitated through in-app web payments via APIs like the Payment Request API, allowing seamless transactions without store commissions in many cases, though wrapped PWAs may integrate store billing for [digital goods](/page/Digital_goods) to meet platform rules.[](https://web.dev/articles/pwas-in-app-stores) Drawbacks include potential rejection if the PWA appears as a mere [website](/page/Website) wrapper without [added value](/page/Added_value), and varying support for features like offline access across stores.[](https://brainhub.eu/library/pwa-on-ios) ## Adoption and Impact ### Notable Examples One prominent example of a Progressive Web App (PWA) implementation is [Twitter](/page/Twitter) Lite, launched in 2017 to target users in emerging markets with limited bandwidth and device capabilities. Twitter Lite leverages service workers for caching and offline functionality, enabling near-instant loading on subsequent visits and reducing data usage by 70%. This resulted in a 30% reduction in average time-to-interactive for logged-in users and a 50% reduction in the 99th percentile latency, while engagement metrics improved significantly, including a 75% increase in tweets sent and a 65% increase in pages per session.[](https://web.dev/case-studies/twitter) Starbucks introduced its PWA in 2017 to streamline mobile ordering, particularly in areas with unreliable connectivity. The app utilizes IndexedDB for storing menu items, previous orders, and static content, allowing users to browse menus, customize orders, and manage carts entirely offline. At just 233 KB in size—99.84% smaller than the [iOS](/page/IOS) app—this PWA doubled daily active users on [mobile web](/page/Mobile_web) and enabled desktop orders to match mobile order rates, boosting overall mobile orders and user engagement across markets.[](https://www.mixedmediaventures.com/wp-content/uploads/2018/04/Starbucks.pdf) Pinterest rolled out its PWA in 2017 to enhance [mobile web](/page/Mobile_web) performance for visual discovery. By implementing precaching of frequently accessed routes via service workers, the PWA achieved instant loading for key pages, significantly reducing the core bundle size from 650 KB to 150 KB compared to the previous mobile site. This led to a 40% increase in time spent on the site and a 60% rise in core engagement, with user-generated ad revenue growing by 44%.[](https://medium.com/dev-channel/a-pinterest-progressive-web-app-performance-case-study-3bd6ed2e6154) Spotify's PWA provides rich media playback across desktop and mobile web browsers, increasing monthly active users by 30% on mobile web and providing a consistent experience that drove higher adoption among users avoiding app store downloads.[](https://onilab.com/blog/20-progressive-web-apps-examples) ### Industry Trends As of 2025, progressive web apps (PWAs) have seen substantial adoption across industries, with the global PWA market valued at USD 5.23 billion and projected to grow at a compound annual growth rate (CAGR) of 18.98%, reflecting broader integration into top websites and applications.[](https://straitsresearch.com/report/progressive-web-apps-market) This growth is evidenced by increasing use of PWA elements for enhanced user engagement, particularly in e-commerce, where implementations have driven conversion rates up to 76% higher compared to traditional sites, as reported in case studies from major platforms.[](https://radixweb.com/blog/pwa-for-ecommerce) Economic analyses highlight PWAs' role in reducing cross-platform development costs by 30-50% relative to native apps, enabling faster deployment with a single codebase while maintaining compatibility across devices.[](https://saventech.com/progressive-web-apps-vs-native-apps-who-wins-in-2025/) In emerging markets, PWAs have accelerated growth due to their low-data consumption, which addresses connectivity challenges and supports offline functionality, thereby expanding access in regions with limited bandwidth.[](https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/progressive-web-apps-benefit-brands/) Looking ahead, 2025 marks an explosion in PWA advancements through AI integrations, such as on-device [machine learning](/page/Machine_learning) for personalized experiences and real-time analytics, positioning them as a [cornerstone](/page/Cornerstone) of hybrid web-mobile ecosystems.[](https://www.stackfiltered.com/blog/the_future_of_ai_driven_pwas_what_to_expect_in_2025_and_beyond) Market projections indicate the PWA sector will reach USD 9.4 billion by 2030, underscoring their potential to capture a growing portion of the mobile application landscape amid rising demand for efficient, scalable solutions.[](https://colaninfotech.com/blog/progressive-web-app-pwa-market-trends-2025/) PWAs also address key challenges in [accessibility](/page/Accessibility) and [sustainability](/page/Sustainability), inherently supporting [Web Content Accessibility Guidelines](/page/Web_Content_Accessibility_Guidelines) (WCAG) compliance through web standards that ensure equitable user experiences for people with disabilities.[](https://gtcsys.com/faq/are-progressive-web-apps-compliant-with-accessibility-standards-e-g-wcag/) Additionally, their smaller download sizes and optimized resource use contribute to a lower [carbon footprint](/page/Carbon_footprint) compared to native apps, promoting energy-efficient digital practices that reduce environmental impact from data transfers and device [energy consumption](/page/Energy_consumption).[](https://greensoftware.foundation/articles/creating-green-energy-efficient-progressive-web-apps/)

// Example: Basic service worker registration if ('serviceWorker' in [navigator](/page/Navigator)) { [navigator](/page/Navigator).serviceWorker.register('/sw.js') .then(registration => console.log('SW registered')) .catch(error => console.log('SW registration failed')); } // Example: Install event for caching self.addEventListener('install', event => { event.waitUntil( caches.open('v1').then(cache => cache.addAll(['/index.html', '/styles.css'])) ); }); // Example: Fetch event with cache-first [strategy](/page/Strategy) self.addEventListener('fetch', event => { event.respondWith( caches.[match](/page/Match)(event.request).then(response => response || fetch(event.request)) ); }); ```[](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers) ## Browser and Platform Support ### Major Browsers [Apple Safari](/page/Safari) offers partial support for Progressive Web Apps (PWAs), with service workers available since version 11.1 in 2017 for offline caching and basic functionality. The web app manifest is supported but with limitations, such as incomplete handling of display modes on [iOS](/page/IOS). Push notifications were added in version 16.4 ([March](/page/March) 2023) for [macOS Ventura](/page/MacOS_Ventura) and [iOS](/page/IOS) 16.4, though they require user gestures and immediate display on [iOS](/page/IOS) to maintain permissions. As of [Safari](/page/Safari) 18 in November 2025 (aligned with macOS Sequoia and [iOS](/page/IOS) 18), PWA installation to the [home screen](/page/Home_screen) or [dock](/page/Dock) is possible, but advanced features like background synchronization remain unavailable. This support is consistent across [iOS](/page/IOS) and macOS, prioritizing security over full app-like behaviors.[](https://caniuse.com/web-app-manifest)[](https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers)[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) Google Chrome has offered comprehensive support for Progressive Web Apps (PWAs) since version 40 in 2015, including full implementation of the web app manifest for installability, service workers for offline functionality, and push notifications for user engagement. This support extends to version 142 as of November 2025, with seamless Android integration via the "Add to [Home Screen](/page/Home_screen)" prompt, enabling PWAs to behave like native applications.[](https://caniuse.com/web-app-manifest) On desktop platforms, Chrome's PWA features allow for standalone windows and taskbar pinning, enhancing [user experience](/page/User_experience) across operating systems. Particularly on Windows 11, when visiting a compatible PWA site that is not already installed, an install icon appears in the address bar; clicking it triggers an installation prompt, allowing the user to install the PWA as a desktop application added to the Start menu, taskbar, or desktop, and launching in a standalone window without browser UI elements such as tabs or the address bar.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing) Mozilla [Firefox](/page/Firefox) provides robust PWA support on Android since version 54 in 2017, covering core elements like service workers, background sync, and push notifications for reliable offline and real-time capabilities.[](https://caniuse.com/push-api) For desktop, [Firefox](/page/Firefox) introduced experimental PWA installation in Nightly builds in March 2025, progressing to tested support on Windows by August 2025, though full manifest integration remains partial compared to Chromium-based browsers up to version 145.[](https://www.ghacks.net/2025/08/22/experimental-firefox-now-supports-progressive-web-apps-on-windows/) This development addresses prior gaps, allowing users to install and manage PWAs more natively on desktop environments.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing) Microsoft Edge gained full PWA support after adopting the Chromium engine in January 2020 with version 79, mirroring Chrome's feature set including manifests, service workers, and notifications up to version 142 in late 2025.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/) Edge excels in Windows integration, supporting PWA installation to the Start menu, taskbar, and even Widgets Board in Windows 11 for enhanced discoverability and actions. On Windows 11, an "App available" icon appears in the address bar for eligible PWAs; selecting this icon opens an installation dialog, enabling the user to install the PWA as a desktop application that integrates with the Start menu, allows pinning to the taskbar, and optionally creates a desktop shortcut, launching in a standalone window without browser UI.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/ux) This alignment ensures consistent PWA performance across desktop and mobile, with ongoing updates like App Actions in version 137 for deeper system ties.[](https://blogs.windows.com/msedgedev/2025/05/30/bring-your-pwa-closer-to-users-with-app-actions-on-windows/) Chromium-based browsers like Brave and [Opera](/page/Opera) deliver full PWA compatibility, with support for manifests since versions 53 and 40 respectively, extending to their latest releases in 2025.[](https://caniuse.com/web-app-manifest) Brave emphasizes [privacy](/page/Privacy) in PWA implementations, such as optimized service worker caching that blocks trackers without compromising offline access.[](https://community.brave.app/t/progressive-web-applications-pwa-in-brave/605917) [Opera](/page/Opera) similarly aligns with [Chromium](/page/Chromium) standards, supporting push APIs and installation prompts while maintaining cross-platform consistency for desktop and mobile users.[](https://caniuse.com/push-api) ### Platform-Specific Limitations Progressive Web Apps (PWAs) encounter significant OS-level constraints on [iOS](/page/IOS), where Safari's implementation limits key functionalities despite broader web standard support. As of 2025, [iOS](/page/IOS) does not provide full service worker support for background [synchronization](/page/Synchronization), even following the partial enhancements in iOS 18, which prevent PWAs from deferring and executing tasks automatically upon network reconnection without user intervention.[](https://caniuse.com/background-sync) Push notifications on [iOS](/page/IOS) require explicit user confirmation through a [gesture](/page/Gesture) to grant permission, and the service worker must display the notification immediately upon receipt; otherwise, the permission is automatically revoked to ensure timely delivery.[](https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers) If the user denies permission during sign-up, this denial is permanent for the installed PWA, as there is no individual toggle in iOS Settings > Notifications to re-enable it. To reset the permission and allow re-prompting, the user must delete the PWA from the Home Screen and re-add it via Share > Add to Home Screen in Safari. Developers may display an in-app message providing these instructions after a denial.[](https://community.appfarm.io/t/push-notification-experiences/1017)[](https://sarunw.com/posts/how-to-reset-push-notification-permission-on-ios/) Additionally, while home screen badges are supported for installed PWAs using the [Badging API](/page/API) since iOS 16.4, they necessitate separate user configuration in the device's Notifications settings and are limited to [Home Screen](/page/Home_screen) web apps.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/How_to/Display_badge_on_app_icon) On Android, PWA support is robust in modern versions through Chrome, enabling full access to service workers, offline caching, and push notifications. However, older Android versions prior to 5.0 ([Lollipop](/page/Lollipop)) lack service worker compatibility entirely, rendering core PWA features like offline functionality unavailable, and they do not enforce [HTTPS](/page/HTTPS) as a secure context requirement for these APIs. Desktop operating systems present varying degrees of integration challenges for PWAs. Windows and macOS offer complete PWA support via browsers such as [Microsoft Edge](/page/Microsoft_Edge) and [Google Chrome](/page/Google_Chrome), including seamless notification handling and installation to the [taskbar](/page/Taskbar) or [dock](/page/Dock). On [Linux](/page/Linux) distributions, while major browsers like Chrome provide the underlying PWA capabilities, notification integration can differ across desktop environments—such as GNOME's reliance on system trays versus KDE's plasma notifications—potentially leading to inconsistent display or management of alerts. To address these platform-specific limitations, developers implement progressive enhancement techniques, detecting available features at runtime (e.g., via checks like `'serviceWorker' in navigator` or `'PushManager' in window`) and gracefully degrading to basic web app modes, such as server-dependent loading without offline support or simplified user prompts for notifications.[](https://web.dev/learn/pwa/progressive-web-apps) This approach ensures core usability across constrained environments while maximizing advanced features where supported. ## Advanced Enabling Technologies ### WebAssembly WebAssembly (Wasm) is a binary instruction format designed for a stack-based virtual machine, enabling code to execute at near-native speeds within web browsers. It serves as a portable compilation target for high-level languages such as C++, [Rust](/page/Rust), and others, allowing developers to leverage existing codebases for web applications without significant performance loss. This format complements [JavaScript](/page/JavaScript) by providing efficient execution for computationally intensive tasks that would otherwise be slow in interpreted environments.[](https://webassembly.org/)[](https://developer.mozilla.org/en-US/docs/WebAssembly) In Progressive Web Apps (PWAs), [WebAssembly](/page/WebAssembly) integrates seamlessly to enhance performance, particularly for high-demand operations like image processing or gaming. Developers load Wasm modules dynamically through [JavaScript](/page/JavaScript), often caching the binaries via service workers to support offline execution, ensuring the PWA remains functional without network access. For instance, Adobe's web version of Photoshop utilizes [WebAssembly](/page/WebAssembly), compiled from its C++ codebase via [Emscripten](/page/Emscripten), to perform complex editing tasks such as layer manipulation and filtering at speeds comparable to native applications. Similarly, PWAs incorporating games or simulations benefit from Wasm's efficiency, as seen in ports of engines like Unity that deliver smooth rendering and physics calculations directly in the browser.[](https://web.dev/articles/ps-on-the-web)[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Offline_and_background_operation) WebAssembly operates within a strict [security](/page/Security) model, executing in a memory-safe sandbox that isolates it from the host environment and prevents unauthorized access to system resources. Modules interact with [JavaScript](/page/JavaScript) through well-defined imports and exports, where functions and globals are explicitly declared and validated at load time, raising exceptions for any violations. To optimize delivery in PWAs, Wasm binaries are typically compressed using [Brotli](/page/Brotli), which achieves superior size reduction compared to [Gzip](/page/Gzip)—often 20-30% smaller—facilitating faster downloads over mobile networks while maintaining compatibility across browsers.[](https://webassembly.org/docs/security/)[](https://almanac.httparchive.org/en/2021/webassembly) By 2025, advancements in [WebAssembly](/page/WebAssembly), notably the completion of version 3.0 including the Garbage Collection (GC) proposal, have expanded its capabilities for PWAs. As of late 2025, the GC proposal is implemented in major browsers including Chrome (version 119+), [Firefox](/page/Firefox) (120+), and [Safari](/page/Safari) (18.2+), enabling efficient support for languages like [Java](/page/Java) and C# in PWAs. The GC feature introduces automatic [memory management](/page/Memory_management) with support for structured data types, enabling the efficient handling of large, dynamic datasets in complex applications such as embedded [databases](/page/DNA_gyrase) or real-time [analytics](/page/Analytics) tools. This low-level GC allows compilers from languages like [Java](/page/Java) or [OCaml](/page/OCaml) to target Wasm more effectively, reducing manual memory overhead and unlocking previously impractical use cases in browser-based PWAs without relying on external plugins.[](https://webassembly.org/news/2025-09-17-wasm-3.0/)[](https://webassembly.org/features/) ### Data Storage Progressive Web Apps (PWAs) rely on client-side storage mechanisms to manage data offline, enabling seamless user experiences without constant network connectivity. The primary [API](/page/API) for handling structured data is IndexedDB, which provides an asynchronous, low-level, transactional database system. It supports object stores for data organization, indexes for efficient querying, and transactions to ensure [data integrity](/page/Data_integrity), making it suitable for storing large datasets such as user preferences, application state, or cached content.[](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) For simpler storage needs, PWAs can use the Web Storage API's localStorage and sessionStorage, which offer synchronous key-value pair storage. localStorage persists data across browser sessions for the origin, while sessionStorage clears data upon tab closure. Both are limited to approximately 5 MB per origin in most browsers, sufficient for small items like settings or temporary tokens but not for extensive datasets.[](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API)[](https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria) To handle offline data synchronization, PWAs employ the Background Synchronization API, which allows service workers to queue changes made while offline and defer resolution until a stable network connection is available. This prevents [data loss](/page/Data_loss) by ensuring queued operations, such as uploading user edits or syncing database updates, are processed reliably in the background without user intervention. Service workers can intercept and manage these storage-related requests to facilitate the sync process. For example, cloud services like Firebase can be integrated to enable automatic synchronization to the cloud when online, supporting user accounts and cross-device sync, which is particularly useful for AI-integrated PWAs.[](https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API)[](https://firebase.google.com/docs/web/pwa)[](https://firebase.google.com/products/generative-ai) Browser-enforced storage quotas prevent excessive disk usage, with limits varying by implementation; for example, Chrome permits an origin to consume up to 60% of available disk space across storage APIs like IndexedDB. Developers can use the StorageManager API's persist() method to request user permission for persistent storage, which, if granted, exempts the origin's data from automatic eviction during low-disk scenarios, ensuring longevity for critical offline [data](/page/Data). Quotas can be queried via estimate() to monitor usage and avoid errors.[](https://web.dev/articles/storage-for-the-web)[](https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/persist) ### Push Notifications Push notifications in progressive web apps (PWAs) enable server-initiated re-engagement with users by delivering messages to the client even when the app is closed or not in focus. The Push API integrates with service workers to receive these messages from external push services, such as [Firebase Cloud Messaging](/page/Firebase_Cloud_Messaging), which route notifications through browser-specific endpoints while the service worker remains active in the background.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Tutorials/js13kGames/Re-engageable_Notifications_Push)[](https://www.w3.org/TR/push-api/) Implementation begins with obtaining explicit user permission via the `Notification.requestPermission()` method, which displays a prompt allowing users to grant, deny, or manage access to notifications for the origin. Upon approval, the PWA subscribes to the push service, generating an endpoint URL for message delivery; push payloads are typically limited to around 4 KB in total size (varying by browser, e.g., 4 KB in Chrome/[Firefox](/page/Firefox) and 2 KB in [Safari](/page/Safari)), often containing [JSON](/page/JSON) data.[](https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission_static)[](https://web.dev/articles/push-notifications-web-push-protocol) When a push event fires in the service worker, developers invoke `showNotification()` to render the alert, specifying options like a prominent **[title](/page/Title)**, descriptive **body** text, an associated **[icon](/page/Icon)**, and interactive **actions** (e.g., buttons for quick responses). On mobile platforms, this supports device vibration via a pattern array (e.g., `[200, 100, 200]`) and default sound playback, provided the `silent` option is not enabled, mimicking native app behavior for better engagement.[](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification)[](https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification) As of 2025, the Push API remains a W3C Working Draft, with implementations varying across browsers. This aligns with expanded [iOS](/page/IOS) support in [Safari](/page/Safari) 16.4+ (with limitations, such as requiring home screen installation), improving push functionality availability across major browsers and devices.[](https://www.w3.org/TR/push-api/)[](https://documentation.onesignal.com/docs/en/web-push-for-ios) For scenarios involving network interruptions, undelivered notifications can leverage [data storage](/page/Data_storage) mechanisms to queue payloads until reconnection.[](https://www.w3.org/TR/service-workers/) On iOS, if a user denies push notification permission for an installed PWA, the denial is permanent, and no toggle exists in iOS Settings > Notifications to re-enable it. To reset the permission and allow re-prompting, the user must delete the PWA from the Home Screen and re-add it via Share > Add to Home Screen in Safari. Developers should display an in-app message with these instructions after a permission denial to guide users effectively.[](https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers)[](https://www.notificare.com/blog/2023/10/17/push-notifications-for-ios-web-apps/)[](https://sarunw.com/ios/reset-app-notification-permissions/) ## Comparison with Native Apps ### Advantages Progressive Web Apps (PWAs) offer significant cost efficiencies in development and maintenance compared to native applications, as they utilize a single [codebase](/page/Codebase) that functions across multiple platforms without the need for separate builds tailored to each operating system. This approach reduces development expenses by eliminating the duplication of effort required for platform-specific coding, with estimates indicating up to 50% lower costs for cross-platform projects.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/) Additionally, updates to PWAs can be deployed instantly through server-side changes, bypassing the lengthy review and approval processes associated with app stores, which streamlines maintenance and ensures users always access the latest version without manual intervention.[](https://web.dev/learn/pwa/progressive-web-apps) PWAs enhance discoverability and [search engine optimization](/page/Search_engine_optimization) (SEO) by being naturally indexable by search engines like [Google](/page/Google), allowing users to find and access them directly via web searches rather than navigating app stores. This eliminates delays from app store approval cycles, enabling faster market entry and broader organic reach. Studies from [Google](/page/Google) indicate that installed PWAs achieve 2.5 times higher conversion rates among users compared to non-installed mobile web experiences, reflecting improved engagement and retention.[](https://web.dev/articles/drive-business-success) In terms of user engagement and retention, native mobile apps generally achieve the highest levels due to advanced features such as push notifications, offline access, and prominent home screen presence, which foster deeper user loyalty. Responsive mobile websites, conversely, exhibit the lowest engagement and retention rates, as they lack these app-like capabilities and often suffer from performance limitations. Progressive Web Apps offer higher engagement and retention than responsive websites, thanks to features like push notifications and installability; for instance, case studies show PWAs can increase time spent on site by up to 40% and page views per session by 65% compared to traditional mobile web experiences, though they typically do not surpass native apps for the most loyal users.[](https://web.dev/articles/drive-business-success)[](https://www.cloudflight.io/en/blog/rwd-vs-native-apps-vs-pwas-in-2024/)[](https://www.griddynamics.com/blog/pwa-research) The cross-platform nature of PWAs allows them to operate on any device equipped with a modern [web browser](/page/Web_browser), from smartphones to desktops, thereby minimizing fragmentation and ensuring consistent experiences without OS-specific adaptations. This broad accessibility rivals native apps in offline functionality through service worker caching, providing reliable performance in low-connectivity scenarios without requiring platform-dependent code.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/) PWAs also feature a reduced storage footprint on user devices, typically occupying about one-tenth the space of equivalent native apps due to leveraging the device's shared web runtime and avoiding redundant platform binaries. For instance, average PWA sizes hover around 2 MB, in contrast to 16-50 MB for native counterparts, which facilitates quicker downloads and installation, particularly beneficial for users in regions with limited bandwidth or storage.[](https://anyforsoft.com/blog/native-app-vs-progressive-web-app/) ### Limitations Progressive web apps (PWAs) face constraints in directly accessing device hardware compared to native applications, relying instead on user-mediated Web APIs that require explicit permissions and exhibit inconsistencies across browser implementations. For instance, access to the camera via the MediaDevices API, GPS through the Geolocation API, and Bluetooth using the Web Bluetooth API is possible but limited to what the browser exposes, often without the seamless, always-on integration native apps provide.[](https://web.dev/learn/pwa/progressive-web-apps) In terms of performance, PWAs encounter ceilings relative to native apps due to the overhead of browser rendering and [JavaScript](/page/JavaScript) execution, resulting in slower startup times and higher battery drain during intensive tasks, as web technologies lack the low-level optimizations available to native code. Studies indicate that PWAs consume more energy overall than native apps, though they remain more efficient than some hybrid alternatives for UI rendering.[](https://dl.acm.org/doi/10.1016/j.is.2022.102017)[](https://www.researchgate.net/publication/351487772_PWA_vs_the_Others_A_Comparative_Study_on_the_UI_Energy-Efficiency_of_Progressive_Web_Apps) Platform dependencies further restrict PWAs, particularly on [iOS](/page/IOS), where Apple's implementation limits background execution and some notification features, although push notifications have been supported since iOS 16.4 (2023) for installed PWAs, improving engagement capabilities as of 2025.[](https://web.dev/learn/pwa/progressive-web-apps) Additionally, PWAs cannot natively integrate with app store analytics or in-app purchase systems, forgoing the monetization and user acquisition tools built into platforms like the [Apple App Store](/page/App_store).[](https://web.dev/learn/pwa/progressive-web-apps) Security trade-offs in PWAs stem from the mandatory use of [HTTPS](/page/HTTPS), which enforces secure connections but confines operations within the browser's sandbox, preventing the low-level system calls and direct hardware manipulations that native code permits. This isolation enhances user [privacy by design](/page/Privacy_by_design) but limits PWAs' ability to perform advanced system-level tasks available to native applications.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) While these limitations exist, the ease of web distribution can offset some deficits by enabling broader reach without [app store](/page/App_store) approvals.[](https://web.dev/learn/pwa/progressive-web-apps) ## Distribution Methods ### Web Distribution Progressive web apps (PWAs) are hosted on standard web servers such as [Apache](/page/Apache) or [Nginx](/page/Nginx), requiring secure delivery over [HTTPS](/page/HTTPS) to ensure installability and security features like service workers function properly.[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable) This hosting setup allows PWAs to be accessed directly via unique URLs, facilitating discovery through [search engine optimization](/page/Search_engine_optimization) (SEO) techniques identical to those used for traditional websites.[](https://web.dev/learn/pwa/progressive-web-apps) Unlike native apps confined to app stores, PWAs leverage organic [web traffic](/page/Web_traffic) and direct linking, enabling broader reach without intermediary platforms.[](https://web.dev/learn/pwa/) On [iOS](/page/IOS), as of iOS 17.4 and subsequent updates in 2025, [Safari](/page/Safari) supports PWA installation via the Share menu, with enhanced features including push notifications and offline functionality, particularly for [EU](/page/.eu) users under the [Digital Markets Act](/page/Digital_Markets_Act).[](https://brainhub.eu/library/pwa-on-ios)[](https://www.mobiloud.com/blog/progressive-web-apps-ios) Updates in PWAs occur automatically through service workers, which the browser checks for changes upon page reload or at regular intervals, such as every 24 hours.[](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) Caching strategies like stale-while-revalidate enable zero-downtime updates by serving cached content immediately while fetching and applying fresh versions in the background.[](https://web.dev/learn/pwa/serving) This mechanism ensures users experience seamless enhancements without manual intervention or [app store](/page/App_store) approvals.[](https://web.dev/learn/pwa/update) PWAs integrate seamlessly with web-based analytics tools, such as [Google Analytics](/page/Google_Analytics), to monitor user engagement, page views, and behavior directly from the browser environment. This approach provides developers with real-time insights into [web traffic](/page/Web_traffic) and interactions, bypassing app store-specific metrics and enabling [A/B testing](/page/A/B_testing) through standard web experimentation frameworks. User installation of PWAs is prompted by the browser after meeting specific criteria, including [HTTPS](/page/HTTPS) serving, a valid web app manifest, and user engagement thresholds like at least one interaction and 30 seconds spent on the site in Chrome.[](https://web.dev/articles/install-criteria) The [manifest file](/page/Manifest_file) briefly enables these browser-initiated prompts by defining app metadata, allowing users to add the PWA to their home screen or desktop without visiting an [app store](/page/App_store).[](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest) ### App Store Releases On Android, Progressive Web Apps (PWAs) can be packaged for submission to the [Google Play](/page/Google_Play) Store using Trusted Web Activities (TWAs), which allow the PWA to run in a full-screen, Chrome-powered context without an [address bar](/page/Address_bar). Developers use the Bubblewrap command-line tool, developed by [Google](/page/Google), to wrap the PWA into an Android Package Kit (APK) file by specifying the PWA's [URL](/page/URL), app name, and icons.[](https://developers.google.com/codelabs/pwa-in-play) Verification is achieved through Digital Asset Links, a protocol that associates the APK with the PWA's domain via a [JSON](/page/JSON) file hosted on the website, enabling the full-screen mode and preventing unauthorized use.[](https://developer.android.com/develop/ui/views/layout/webapps/guide-trusted-web-activities-version2) Once packaged, the APK undergoes [Google](/page/Google)'s review process, which typically focuses on standard app policies rather than deep code inspection since the content is web-based.[](https://developer.chrome.com/docs/android/trusted-web-activity) For iOS, Apple does not provide an official method to wrap PWAs directly into native apps for the App Store, limiting distribution primarily to users adding the PWA to their [home screen](/page/Home_screen) via [Safari](/page/Safari). However, third-party tools like PWABuilder enable developers to generate an iOS package by creating an [Xcode](/page/Xcode) project that loads the PWA within a WKWebView, producing an [IPA](/page/.ipa) file suitable for submission via [TestFlight](/page/TestFlight) or the [App Store](/page/App_store).[](https://blog.pwabuilder.com/posts/publish-your-pwa-to-the-ios-app-store/) This approach uses web view rendering and supports features like push notifications via integrations such as FCM, but lacks some native iOS capabilities like advanced background processing without additional native code, and requires the app to meet Apple's guidelines for non-repackaged [web content](/page/Web_content), often necessitating additional native elements for approval.[](https://docs.pwabuilder.com/#/builder/app-store?id=push-notifications)[](https://github.com/pwa-builder/pwabuilder-ios) In the [Microsoft Store](/page/Microsoft_Store), PWAs are packaged as MSIX bundles without requiring code changes to the web app, leveraging tools like PWABuilder to generate the package from the PWA's [URL](/page/URL) after evaluating its readiness.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/how-to/microsoft-store) The resulting app runs the PWA using [Microsoft](/page/Microsoft) Edge's engine, with a custom referer header to identify Store installations, and submission involves reserving an app name in the Microsoft Partner Center followed by uploading the MSIX bundle for review, which usually completes in 24-48 hours.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/how-to/microsoft-store) While WebView2 is used for hybrid Windows apps integrating web content, pure PWAs in the Store rely on Edge for rendering to ensure consistent performance across devices.[](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps/how-to/microsoft-store) Packaging PWAs for app stores offers advantages such as faster review times compared to fully native apps, often due to the reliance on established web standards, but requires compliance with store-specific policies, including mandatory [privacy](/page/Privacy) policies detailing [data collection](/page/Data_collection) practices.[](https://www.adjust.com/blog/native-app-vs-progressive-web-app/) For instance, both Apple and [Google](/page/Google) mandate clear disclosure of user data handling in app metadata.[](https://developer.apple.com/app-store/review/guidelines/) Monetization is facilitated through in-app web payments via APIs like the Payment Request API, allowing seamless transactions without store commissions in many cases, though wrapped PWAs may integrate store billing for [digital goods](/page/Digital_goods) to meet platform rules.[](https://web.dev/articles/pwas-in-app-stores) Drawbacks include potential rejection if the PWA appears as a mere [website](/page/Website) wrapper without [added value](/page/Added_value), and varying support for features like offline access across stores.[](https://brainhub.eu/library/pwa-on-ios) ## Adoption and Impact ### Notable Examples One prominent example of a Progressive Web App (PWA) implementation is [Twitter](/page/Twitter) Lite, launched in 2017 to target users in emerging markets with limited bandwidth and device capabilities. Twitter Lite leverages service workers for caching and offline functionality, enabling near-instant loading on subsequent visits and reducing data usage by 70%. This resulted in a 30% reduction in average time-to-interactive for logged-in users and a 50% reduction in the 99th percentile latency, while engagement metrics improved significantly, including a 75% increase in tweets sent and a 65% increase in pages per session.[](https://web.dev/case-studies/twitter) Starbucks introduced its PWA in 2017 to streamline mobile ordering, particularly in areas with unreliable connectivity. The app utilizes IndexedDB for storing menu items, previous orders, and static content, allowing users to browse menus, customize orders, and manage carts entirely offline. At just 233 KB in size—99.84% smaller than the [iOS](/page/IOS) app—this PWA doubled daily active users on [mobile web](/page/Mobile_web) and enabled desktop orders to match mobile order rates, boosting overall mobile orders and user engagement across markets.[](https://www.mixedmediaventures.com/wp-content/uploads/2018/04/Starbucks.pdf) Pinterest rolled out its PWA in 2017 to enhance [mobile web](/page/Mobile_web) performance for visual discovery. By implementing precaching of frequently accessed routes via service workers, the PWA achieved instant loading for key pages, significantly reducing the core bundle size from 650 KB to 150 KB compared to the previous mobile site. This led to a 40% increase in time spent on the site and a 60% rise in core engagement, with user-generated ad revenue growing by 44%.[](https://medium.com/dev-channel/a-pinterest-progressive-web-app-performance-case-study-3bd6ed2e6154) Spotify's PWA provides rich media playback across desktop and mobile web browsers, increasing monthly active users by 30% on mobile web and providing a consistent experience that drove higher adoption among users avoiding app store downloads.[](https://onilab.com/blog/20-progressive-web-apps-examples) ### Industry Trends As of 2025, progressive web apps (PWAs) have seen substantial adoption across industries, with the global PWA market valued at USD 5.23 billion and projected to grow at a compound annual growth rate (CAGR) of 18.98%, reflecting broader integration into top websites and applications.[](https://straitsresearch.com/report/progressive-web-apps-market) This growth is evidenced by increasing use of PWA elements for enhanced user engagement, particularly in e-commerce, where implementations have driven conversion rates up to 76% higher compared to traditional sites, as reported in case studies from major platforms.[](https://radixweb.com/blog/pwa-for-ecommerce) Economic analyses highlight PWAs' role in reducing cross-platform development costs by 30-50% relative to native apps, enabling faster deployment with a single codebase while maintaining compatibility across devices.[](https://saventech.com/progressive-web-apps-vs-native-apps-who-wins-in-2025/) In emerging markets, PWAs have accelerated growth due to their low-data consumption, which addresses connectivity challenges and supports offline functionality, thereby expanding access in regions with limited bandwidth.[](https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/progressive-web-apps-benefit-brands/) Looking ahead, 2025 marks an explosion in PWA advancements through AI integrations, such as on-device [machine learning](/page/Machine_learning) for personalized experiences and real-time analytics, positioning them as a [cornerstone](/page/Cornerstone) of hybrid web-mobile ecosystems.[](https://www.stackfiltered.com/blog/the_future_of_ai_driven_pwas_what_to_expect_in_2025_and_beyond) Market projections indicate the PWA sector will reach USD 9.4 billion by 2030, underscoring their potential to capture a growing portion of the mobile application landscape amid rising demand for efficient, scalable solutions.[](https://colaninfotech.com/blog/progressive-web-app-pwa-market-trends-2025/) PWAs also address key challenges in [accessibility](/page/Accessibility) and [sustainability](/page/Sustainability), inherently supporting [Web Content Accessibility Guidelines](/page/Web_Content_Accessibility_Guidelines) (WCAG) compliance through web standards that ensure equitable user experiences for people with disabilities.[](https://gtcsys.com/faq/are-progressive-web-apps-compliant-with-accessibility-standards-e-g-wcag/) Additionally, their smaller download sizes and optimized resource use contribute to a lower [carbon footprint](/page/Carbon_footprint) compared to native apps, promoting energy-efficient digital practices that reduce environmental impact from data transfers and device [energy consumption](/page/Energy_consumption).[](https://greensoftware.foundation/articles/creating-green-energy-efficient-progressive-web-apps/)

References

Add your contribution
Related Hubs
Contribute something
User Avatar
No comments yet.