Build my web app

What a progressive web app is, in plain English

The three files that turn a website into something people install, what "installed" actually means on Android, iPhone and desktop, and what a PWA cannot do — stated without hype.

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 installsBrowser shows an Install prompt, or the user picks Install app from the menuShare button → Add to Home Screen. No automatic prompt.Install icon in the address bar
What appearsIcon in the launcher and app drawer; entry in Settings → AppsIcon on the home screenIcon in Start menu / Dock / Launchpad; own window
How it opensOwn window, no browser UI, own task-switcher cardOwn window, no Safari UIOwn window with a minimal title bar
OfflineWhatever the service worker cachedWhatever the service worker cachedWhatever the service worker cached
Push notificationsYesYes, iOS 16.4 and later, only for home-screen appsYes
UpdatesAutomatic. 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

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.