What is a Progressive Web App?
By FrontendPro Editorial Team Updated 9/26/2026
Answer
A PWA is an ordinary website that adds a few browser capabilities so it can be installed, launched from the home screen, and keep working with a poor connection — without an app store.
The three requirements
- HTTPS — service workers only run on secure origins.
- A web app manifest — name, icons, theme colour, and
display: "standalone"so it opens without browser chrome. - A service worker — a script that sits between the page and the network, letting you serve cached responses when the network fails.
{ "name": "FrontendPro", "start_url": "/", "display": "standalone",
"icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }] }
self.addEventListener("fetch", (e) => {
e.respondWith(caches.match(e.request).then((hit) => hit ?? fetch(e.request)));
});
What it gets you
Installability, offline or flaky-network tolerance, push notifications, background sync, and instant repeat loads from cache — while keeping what the web already gives you: a URL you can share, no install friction, no review process, and one codebase.
Honest limitations
Support is uneven. Push notifications on iOS require the user to install the app first and arrived only recently; background sync and several hardware APIs are not available at all in Safari. Deep OS integration — widgets, background execution, some Bluetooth and filesystem access — remains native-only. If those matter, a PWA is not a substitute.
Where the difficulty actually is
The hard part is not adding a service worker, it is cache invalidation. A worker that caches too aggressively serves stale HTML after a deploy and users see an old version with no way to refresh out of it. Version your caches, clean up old ones in the activate event, and prefer network-first for HTML with cache-first for hashed assets. Workbox exists mainly to get these strategies right.
Build it as progressive enhancement: the site should work fully without the service worker, which then makes it faster and more resilient.
