What is a Progressive Web App (PWA)? How it works and when to use it
A Progressive Web App (PWA) is a website built with web platform technologies that feels like a native installed app — it can be installed on a device, work offline, and run in the background. Here's how PWAs work, what they need, and when they make sense.
On this page
- How a progressive web app works
- Served over HTTPS
- The web app manifest
- The service worker
- What makes a PWA installable
- Offline and background operation
- Benefits of a progressive web app
- Single codebase across platforms
- No app store requirement
- Works offline and is reliable
- Engagement features
- When to use a progressive web app
- FAQ
- What is the difference between a PWA and a regular website?
- Can a PWA work without internet?
- Do I need an app store to install a PWA?
- Are PWAs supported on both Android and iOS?
- Summary
A progressive web app (PWA) is an app built using web platform technologies that provides a user experience like that of a platform-specific app. Like a website, a PWA runs on multiple platforms and devices from a single codebase. Like a platform-specific app, it can be installed on the device, operate while offline and in the background, and integrate with the device and other installed apps. In short, a PWA is a modern website that behaves like an installed app.
How a progressive web app works
PWAs are built on the ordinary web platform — HTML, CSS, and JavaScript — plus a small set of extra browser technologies that unlock app-like behavior. The core pieces are:
Served over HTTPS
A PWA must be served over a secure HTTPS connection. Service workers, the scripts that power offline behavior, are only available on secure origins. This also protects users: an installed app is associated with a permanent, trusted identity on the web.
The web app manifest
A web app manifest is a JSON file that describes the app to the browser: its name, icons, start URL, how it should be displayed, background and theme colors, and shortcut actions. The manifest is what lets the browser add the app to the user's home screen and launch it in its own standalone window rather than a browser tab.
The service worker
A service worker is a script that the browser runs in the background, separate from the page itself. It sits between the app and the network, intercepting network requests. This is what makes caching and offline operation possible: the service worker can store assets and responses locally and serve them when the network is unavailable, and it can perform background operations even when the main app is not running.
What makes a PWA installable
Installability is one of the defining aspects of a PWA. When installed, the app appears to users as a permanent feature of their device, which they can launch directly from the operating system like any other app. For the browser to offer an install experience, the web app generally needs to meet a set of installability criteria — typically a valid web app manifest describing the app and its icons, a registered service worker, and a secure HTTPS origin.
Because a PWA is a website at its core, installation does not go through an app store. The same codebase installs across platforms and devices, and users can add it to their home screen with a single action. When the device and the operating system support it, an installed PWA can go further: launch in a standalone window, display a badge on its icon, expose shortcut actions, and share data with other installed apps.
Offline and background operation
A defining strength of PWAs is that they keep working when the network is intermittent or absent. The service worker caches resources and data locally so the app can serve cached content without a connection. When connectivity returns, the app can sync data and fetch fresh content. PWAs can also perform operations in the background — such as receiving push notifications — even when the main app is closed.
This reliable offline behavior is what web.dev highlights as "reliability": PWAs use modern APIs to deliver enhanced capabilities, reliability, and installability while reaching anyone, anywhere, on any device, all with a single codebase.
Benefits of a progressive web app
Single codebase across platforms
Because a PWA is a website, one codebase runs on Android, iOS, desktop, and the web. There is no separate iOS and Android codebase to maintain, and no app-store review to ship an update — you deploy to the web and the change reaches every installed instance.
No app store requirement
PWAs install directly from the browser. Users avoid app-store sign-ups, and developers avoid app-store review processes, fees, and gatekeeping. Updates ship instantly on the web.
Works offline and is reliable
The service worker caches the app shell and data, so users get content and functionality even with no signal. This matters for travel, commuters, low-bandwidth regions, and any use case where connectivity is unreliable.
Engagement features
Installed PWAs can send push notifications and display badges, helping re-engage users the way platform-specific apps do. Because they launch from the home screen like native apps, they stay top-of-mind rather than being lost among browser tabs.
When to use a progressive web app
PWAs are a strong fit when you want the reach and low friction of the web together with app-like engagement — for example content apps, e-commerce, news, tools, and utility apps where offline access and installability add real value.
PWAs are a weaker fit when you need deep hardware integration, heavy graphics or AR that outpaces web platform capabilities, or full background processing that the web does not yet expose at native speed. In those cases a platform-specific app may still be the better choice, and many teams ship both.
FAQ
What is the difference between a PWA and a regular website?
A PWA is a regular website built with the same web platform technologies, but it adds three extra layers: a web app manifest that describes how the app looks when installed, a service worker that enables offline caching and background behavior, and a secure HTTPS connection required to make those work. A regular website runs only in a browser tab; a PWA can be installed, launch from the home screen, and work offline.
Can a PWA work without internet?
Yes. The service worker caches the app's assets and data, so a PWA can serve cached content when the network is offline or unreliable, and can sync fresh data when connectivity returns. This is one of the core differences between a PWA and a traditional website, which usually needs a live connection to load.
Do I need an app store to install a PWA?
No. PWAs install directly from the browser onto the device — there is no app store, review process, or fee. When the device and operating system support it, the browser offers an install option, and the app appears on the home screen like a platform-specific app.
Are PWAs supported on both Android and iOS?
Yes. The core of a PWA is a website, so one codebase runs on any browser across platforms. However, feature support varies: some capabilities, such as the full set of install and background features, are more mature in Chromium-based browsers and on Android than they are in Safari on iOS, where some PWA features are limited. A good PWA works everywhere but progressively enables more capability where the platform allows.
Summary
A progressive web app is a website enhanced with web platform technologies — HTTPS, a web app manifest, and a service worker — to deliver the experience of a platform-specific app. It can be installed on a device, launch from the home screen, work offline, and run in the background, all from a single codebase that reaches every platform without an app store.
PWAs shine where the reach and low friction of the web meet the engagement and reliability users expect from installed apps — content, commerce, news, and utility apps. They are the right choice when installability, offline access, and push re-engagement add real value, and when you want to ship one codebase instead of maintaining separate native apps.
Sources
- MDN — Progressive web apps (developer.mozilla.org/en-US/docs/Web/Progressive_web_apps
- CC-BY-SA 2.5+
- MDN contributors)
- web.dev — Learn PWA (web.dev/learn/pwa
- Apache 2.0
- Google Chrome team)
Share this guide
Related guides
- What is HTML? How HyperText Markup Language works and why it matters
HTML is the foundation of every web page. Learn what HyperText Markup Language is, how HTML elements and tags work, why semantic HTML matters for SEO and accessibility, and how HTML fits with CSS and JavaScript.
- What is a Service Worker? How it works and when to use it
A service worker is a JavaScript file the browser runs in the background, separate from the page. It sits between your app and the network and lets you cache assets, intercept requests, work offline, and receive push notifications. Here's how it works, what its lifecycle looks like, and when to reach for one.
- What is a browser cache? How it speeds up websites
Where your browser stores copies of images, scripts and fonts, why cached pages load faster, and how to clear the cache or force a fresh copy.