Skip to content

Advanced

Outcome: a PWA that uses platform capabilities — push, file handling, deeper OS integration — without breaking on the engines that lack them. The defining discipline at this level is progressive enhancement: every advanced capability is checked for support first and degrades cleanly when absent.

Do the core path first — Getting started, Installable, Offline, Performance — before reaching for these.

  1. Feature-detect, never assume. Guard each capability behind an in/typeof check before using it.

  2. Verify real-world support. A capability existing in the spec is not the same as it working on your users’ browsers. Check the relevant Compatibility matrix — start from by-feature — before you depend on it.

  3. Degrade cleanly. When a capability is missing, the app should lose that feature, not break. Plan the fallback before you ship the enhancement.

Web Push notifications. Re-engage users with server-sent messages. Support and the iOS-installed-only constraints are real — read the web-push compatibility data and the notifications reference before building the subscription flow.

File System Access. Read and write user-chosen files for editor-like apps. This is one of the most unevenly supported capabilities, so a fallback (download/upload) is mandatory — see the File System Access reference and its compatibility data.

Background Sync. Defer and replay writes made while offline. Treat as enhancement; confirm support in the background-sync compatibility data.

Badging. Surface unread state on the app icon. Confirm via the badging compatibility data.

  • Service worker updates. Ship a deliberate update flow so users aren’t stranded on a stale worker — the lifecycle reference covers waiting, skipWaiting, and update prompts.
  • Storage durability. Request persistent storage for data that must survive eviction; see storage persistence.
  • Platform quirks. iOS diverges most; keep the iOS / Safari platform notes close.

← Back to the Guides overview.