Free guideEditorial review in progress; your agent sees whether each guide's current version is reviewed. What “reviewed” means

Installability criteria and the web app manifest, member by member

What makes a site installable on Chromium (HTTPS, a linked manifest with name/short_name, 192 and 512 px icons, start_url, display) versus Safari (no requirements since 26), why a service worker is no longer an install gate but still mandatory in practice, and a minimal correct manifest with id, scope, display_override, colours and icons.

Discipline
PWA
Type
Pattern
Platforms
Web app
Version
1.0.1 · 2026-09-26

Overview

What: The concrete bar a web app must clear to be offered for installation, and the manifest members that control identity, launch, appearance and integration once installed.

Why: Agents routinely ship a manifest missing id or scope, forget the 512 px icon, or assume Lighthouse will grade "PWA-ness" (that category was removed). Getting the manifest right is cheap and it decides the launcher icon, the first-paint background, whether the URL bar leaks in, and whether a later change of start URL is treated as a different app.

Use when: creating or auditing any installable web app.

Do not confuse "installable" with "app-like": offline, native feel and performance are separate work (pwa-app-shell-and-offline-fallback, pwa-standalone-display-and-safe-areas).

Implementation

  1. Chromium installability (Chrome, Edge, Samsung Internet): served over HTTPS (or localhost/loopback — file:// never qualifies); a manifest linked from every page that can be a launch target (<link rel="manifest" href="/manifest.webmanifest">); manifest contains name or short_name, icons with at least 192×192 and 512×512, start_url, display and/or display_override, and prefer_related_applications absent or false. A service worker is not required for menu install (dropped in Chrome 108 mobile / 112 desktop) — but it is required for offline, caching and push, so treat it as mandatory in practice. Chrome also lets users install any site as an app without a manifest; the manifest is what earns promotion.
  2. Safari: macOS 14+ "Add to Dock" and iOS/iPadOS 16.4+ Share → Add to Home Screen work with or without a manifest; from Safari/iOS 26 every added site opens as a web app by default ("Open as Web App" toggle) and there are zero installability requirements. No beforeinstallprompt exists on iOS (pwa-ios-safari-limits).
  3. Firefox: desktop does not install web apps; Firefox for Android offers add-to-home-screen — verify current behaviour.
  4. Manifest members that matter:
    • identity/launch: id (set it explicitly so start_url can change later), name, short_name, description, start_url, scope (out-of-scope navigations reveal the URL bar).
    • appearance: display (standalone | fullscreen | minimal-ui | browser), display_override (ordered list tried first — how you opt into window-controls-overlay or tabbed with a fallback), orientation, theme_color, background_color (painted before CSS loads — match your app background to avoid a flash).
    • icons: icons[] with sizes, type, purpose (any, maskable, monochrome) — see pwa-icons-maskable-and-screenshots.
    • store-like: screenshots (enables the richer install sheet), categories, shortcuts (long-press icon menu).
    • deeper integration (Chromium-leaning): launch_handler, file_handlers, protocol_handlers, share_target.
  5. Minimal correct manifest:
{
  "id": "/?source=pwa",
  "name": "Field Notes", "short_name": "Field Notes",
  "description": "Capture and review notes, online or offline.",
  "start_url": "/?source=pwa", "scope": "/",
  "display": "standalone",
  "display_override": ["standalone", "minimal-ui", "browser"],
  "background_color": "#0b0f14", "theme_color": "#0b0f14",
  "icons": [
    { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
    { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" },
    { "src": "/icons/icon-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
  ]
}
  1. Do not rely on a Lighthouse PWA score — the category was removed; audit against the checklist below instead.

Verification

  • Page served over HTTPS; manifest linked from every launchable page.
  • id, name/short_name, start_url, scope, display set explicitly.
  • 192 and 512 any icons plus a 512 maskable icon resolve (no 404).
  • background_color matches the app background — no first-paint flash on launch.
  • Service worker registered (for offline, not for the install gate).
  • Install is offered as an enhancement, never a gate (impossible to prompt on iOS).
  • Chrome DevTools → Application → Manifest shows no warnings; installed app opens without the URL bar.

Sources:

Limitations

  • Exactly which signal triggers Chrome's automatic install prompt is fast-moving; the menu-install criteria above are stable.
  • display_override, launch_handler, file_handlers, protocol_handlers and share_target are Chromium-leaning and marked experimental on MDN; feature-detect and never make them load-bearing.
  • Safari ignores most manifest members beyond icons, colours and display; iOS splash screens come from background_color and the icon.
  • A manifest cannot make a site feel like an app; it only makes it installable.
  • Values verified 2026-09-26: all 1 numeric values in this item were checked (1 against platform documentation) and confirmed; no corrections were needed.