The term "progressive web app" was coined in 2015 and has collected a lot of marketing since. Underneath, it describes something small and concrete: a website that browsers agree to treat like an app. This guide explains what that agreement consists of, what a user actually gets, and where the edges are.
The three parts
1. A website served over HTTPS
Nothing else in this list works on an insecure origin. If your site still answers on plain HTTP without redirecting, fix that first. Every host provides a free certificate now.
2. A web app manifest
A JSON file, usually manifest.json, linked from the page head. It tells the browser how to present the site when installed: the name, the icon, which page to open first, whether to hide the browser bar, what colour to paint the status bar. Browsers read it and decide whether the site qualifies for an install prompt. The manifest guide covers every field.
3. A service worker
A JavaScript file the browser runs in the background, separate from your pages. It sits between your site and the network and can answer requests from a cache, which is what makes an installed web app open instantly and keep working in a tunnel. It also receives push notifications when the app isn't open. The caching guide explains the strategies.
That is the whole definition. Everything else — offline support, push, "app-like feel" — is what those three parts make possible.
What "installed" means on each platform
| Android (Chrome, Edge, Samsung Internet) | iPhone / iPad (Safari) | Desktop (Chrome, Edge) | |
|---|---|---|---|
| How the user installs | Browser shows an Install prompt, or the user picks Install app from the menu | Share button → Add to Home Screen. No automatic prompt. | Install icon in the address bar |
| What appears | Icon in the launcher and app drawer; entry in Settings → Apps | Icon on the home screen | Icon in Start menu / Dock / Launchpad; own window |
| How it opens | Own window, no browser UI, own task-switcher card | Own window, no Safari UI | Own window with a minimal title bar |
| Offline | Whatever the service worker cached | Whatever the service worker cached | Whatever the service worker cached |
| Push notifications | Yes | Yes, iOS 16.4 and later, only for home-screen apps | Yes |
| Updates | Automatic. The app is the live website; the service worker updates itself when its file changes. | ||
What a user actually experiences
They tap an icon. A splash screen in your colours appears for a moment, then your site, full-screen. Links inside your site stay inside the app; links to other sites open in the browser. If the connection drops, pages they have visited still load, and pages they haven't show your offline page instead of a browser error. If you send a push notification, it appears in their notification tray with your icon, whether or not the app is open. When you update your website, the app reflects it the next time they open it.
Nothing here required an app store, a review process, a developer account, or a second codebase.
Why "progressive"
The word means the site works everywhere and gets better where the browser allows. A browser that doesn't understand manifests just shows a website. One that does offers installation. One that supports push adds notifications. You build once and each user gets the most their device can do — which is also the honest way to describe the limits.
What a PWA cannot do
- Appear in the Apple App Store. Ever. On iPhone, distribution is through Safari and your own website. (Google Play does list PWAs via Trusted Web Activities.)
- Prompt to install on iOS. The user must find Add to Home Screen themselves; your job is to tell them how.
- Reach every device API. Bluetooth, NFC, background geolocation and a few others are available on Android Chrome but not on iOS Safari. If your product depends on them, see the comparison.
- Run heavy background work. Service workers wake briefly for push and sync; they do not run continuously.
- Fix a slow website. Caching helps repeat visits, but the first load is your site's first load. A 6 MB homepage is a 6 MB app.
Who this is for
Any website people return to: a shop, a menu, a schedule, a members' area, a publication, a tool, a game. If your site is a brochure people visit once, installability adds little. If people come back weekly, an icon on their phone and a push channel change the relationship.
How much work it is
For a site you host yourself: generating the files with the builder, uploading three files and a folder, adding two lines to the head — under an hour, including testing. For sites on hosted builders (Shopify, Wix, Squarespace) the answer depends on the platform and is covered page by page in the platform guides.
Next: read the manifest guide to understand what you are about to generate, or go straight to the PWA Builder.