Skip to content

The complete technical guide to Progressive Web Apps

Service workers, the web app manifest, caching and offline strategies, push notifications, installation on every platform, device capabilities, performance, security and tooling, explained down to the spec-level details and backed by production-ready code.

Start with the fundamentals Build your first PWA Production checklist

What is a Progressive Web App?

A Progressive Web App (PWA) is a website built with standard web technologies that progressively gains app capabilities when the browser supports them. It can be installed to the home screen, dock or Start menu, launch in its own window, work offline or on unreliable networks, receive push notifications, and integrate with the operating system through file handling, sharing and shortcuts. Technically, three things turn a site into an installable PWA: a secure context (HTTPS), a web app manifest and, for offline support, a service worker. Read the full definition →

100+ in-depth pages
Every manifest member
All major browsers & platforms
Production-grade code examples

Explore the guide

  • Fundamentals


    What PWAs are, how they evolved, how they compare to native and hybrid apps, and exactly what makes a site installable.

    Start here

  • Web App Manifest


    Every member explained: identity, scope, display modes, icons and maskable icons, shortcuts, screenshots and OS integration.

    Manifest reference

  • Service Workers


    Lifecycle, registration and scope, fetch handling, updates, navigation preload, messaging, static routing and common pitfalls.

    Master service workers

  • Caching & Offline


    Cache Storage, caching strategies, precaching, offline UX, HTTP caching, storage quotas, IndexedDB and the Origin Private File System.

    Work offline

  • Push & Background


    Web Push end to end (including the protocol and iOS), notifications, badging, background sync, periodic sync and background fetch.

    Re-engage users

  • Device & OS Integration


    Web Share and share targets, file system access and file handling, protocol handlers, window controls overlay, payments and passkeys.

    Go beyond the browser

  • Installation & Stores


    Install prompts, platform-specific install flows, detecting installed apps, Trusted Web Activities and publishing to app stores.

    Get installed

  • Platform Support


    What works where: iOS and iPadOS, Android, Windows, macOS, Linux and ChromeOS, plus Isolated Web Apps.

    Support matrix

  • Performance


    The app shell model, Core Web Vitals, loading and runtime performance, and how to measure the impact of your service worker.

    Make it fast

  • Architecture


    SPA vs MPA PWAs, offline-first data and sync, conflict resolution and streaming responses from the service worker.

    Design the system

  • Tooling & Frameworks


    Workbox, the Vite PWA plugin, Angular, Next.js, Nuxt, SvelteKit and more, plus PWABuilder for store packaging.

    Pick your tools

  • Security & Privacy


    Secure contexts, service worker security, Content Security Policy, permissions and storage partitioning.

    Lock it down

  • Testing & Debugging


    DevTools for every browser, automated tests with Playwright and Puppeteer, and auditing after Lighthouse's PWA category.

    Test it

  • UX & Design


    App-like UX patterns, splash screens and theming, view transitions, responsive design and accessibility.

    Design it

  • AI & the Future


    On-device AI in the browser, cloud AI features, AI agents as a new client of your app, and whether the future is native, PWA or both.

    Explore AI & PWAs

  • Guides


    When to build a PWA, migrating an existing site, SEO, analytics, case studies and the production checklist.

    Follow a guide

  • Reference


    Glossary, API and manifest cheat sheets, FAQ, and specifications and resources.

    Look it up

Service worker lifecycle

Why a new service worker waits, what skipWaiting() and clients.claim() really do, and how to ship updates without breaking open tabs.

Read the lifecycle deep dive →

Caching strategies

Cache first, network first, stale-while-revalidate and more — each with diagrams, vanilla code and Workbox equivalents.

Compare caching strategies →

Web push on iOS

What works on iPhone and iPad, Declarative Web Push, and why your subscription fails if the app isn't on the Home Screen.

Get push working on iOS →

Installability criteria

The exact requirements each browser checks before offering to install your app, and how to debug a missing install prompt.

Check installability →

Learning paths

  1. What is a PWA? — the definition and the core ideas.
  2. Core building blocks — HTTPS, manifest, service worker and storage.
  3. Tutorial: your first PWA — build an installable, offline app from scratch.
  4. Service worker lifecycle — the part everyone gets wrong at first.
  5. Caching strategies — choose the right strategy per resource.
  1. Migrating an existing site — a low-risk rollout plan.
  2. Updating service workers — update flows and kill switches.
  3. Service worker pitfalls — two dozen common mistakes and their fixes.
  4. Service worker security — caching, logout and XSS.
  5. Production checklist — verify everything before launch.
  1. Install prompts & custom UI — promote installation properly.
  2. Push notifications — end-to-end implementation.
  3. Device & OS integration — share, files, protocols and more.
  4. iOS & iPadOS — what Apple platforms support and how to work around gaps.
  5. Publishing to app stores — Google Play, Microsoft Store and beyond.
  1. AI & the future — how AI changes building and distributing apps.
  2. On-device AI in the browser — built-in AI APIs, WebGPU and offline models.
  3. Cloud AI in PWAs — streaming LLM responses, offline and security.
  4. AI agents & the web — making your app usable by agents and assistants.
  5. The future: native, PWA or both? — an evidence-based decision framework.

About this guide

This guide is written for professional web developers. Every page was fact-checked against specifications, MDN compatibility data and browser vendor sources, and browser support tables state when they were verified. The site itself is an installable, offline-capable PWA — see how it works, or browse the glossary, API cheat sheet and FAQ.