Glossary

PWA

PWA stands for Progressive Web App, a website built with standard web technology that a browser can install and launch like a platform-specific app. The name traces to a June 15, 2015 post by Alex Russell, who credits Frances Berriman and called them "Progressive Apps". The baseline for installing is a linked web app manifest and HTTPS. The manifest format is a W3C specification, but "PWA" itself is a label, not a standard.

How it works

Three pieces do the work, and only two of them are required for installation.

  • Web app manifest: a JSON file linked from the page with <link rel="manifest" href="manifest.webmanifest">. The W3C spec (a Working Draft) says every member is optional. Its members include name, short_name, start_url, display, icons, id, scope, theme_color, background_color, shortcuts and color_scheme_dark.
  • Secure origin: MDN states the app must be served over https, or from localhost or 127.0.0.1 during development.
  • Service worker (optional for installing): a script that intercepts network requests, which enables offline use and caching. MDN notes it is not a requirement for a PWA to be installable.

Browsers set their own bar for the install prompt. For Chromium-based browsers, MDN lists these manifest requirements: name or short_name, icons including a 192px and a 512px image, start_url, display or display_override, and prefer_related_applications either false or absent. The manifest media type is application/manifest+json, and the registered file extension is .webmanifest.

This manifest was parsed with Node 22 and checked against that list:

{
  "name": "CycleTracker",
  "short_name": "Cycle",
  "start_url": "/",
  "display": "standalone",
  "theme_color": "#1b5e20",
  "background_color": "#ffffff",
  "icons": [
    { "src": "/icons/192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icons/512.png", "sizes": "512x512", "type": "image/png" }
  ]
}
ok   name or short_name
ok   start_url
ok   display or display_override
ok   192px icon
ok   512px icon
ok   prefer_related_applications not true

Does a PWA need a service worker?

No, a service worker is not required for installability. MDN's minimum requirements are the manifest and a secure origin, and it notes that many PWAs add a service worker for offline support. If you want the app to load with no network, you still need one.

Common pitfalls

  • Missing the 512px icon: MDN lists a 192px and a 512px icon as requirements for Chromium-based browsers. Declare both sizes.
  • Manifest linked on one page only: MDN says that with more than one page, every page must reference the manifest.
  • Testing over plain HTTP: a deployed site on http does not qualify. Use https, or localhost while developing.
  • Wrong media type: serve the file as application/manifest+json. The spec says any JSON media type is acceptable, but the registered type is the safest.
  • Treating display as guaranteed: the spec defines a fallback chain. A request for standalone falls back to minimal-ui, then browser, and every browser must support the browser mode.
  • Assuming every browser applies the same rules: the spec leaves installation to the user agent, and MDN's member list is specific to Chromium-based browsers. Test each target.

Related terms

  • Service worker — the script behind offline caching in most PWAs.
  • HTTPS — the secure origin that installation requires.
  • JSON — the format of the web app manifest.
  • DOM — the document the installed app still renders and scripts against.

See also

  • Term: Service worker — how offline caching and request interception work.