Skip to content

Push & Advanced: Overview

A Progressive Web App can go far beyond offline caching. The browser platform provides a suite of engagement APIs that let your PWA behave like a first-class native application — waking up to deliver notifications, showing unread badges, receiving shared content, and refreshing data in the background.

This module covers five of those capabilities:

CapabilityAPIRequires server?Requires permission?
Local notificationsNotifications APINoYes
Push messagesPush APIYes (VAPID)Yes
App badgeBadging APINoNo
Share contentWeb Share + Share TargetNoNo
Background refreshPeriodic Background SyncNoYes (installed)

Users spend the majority of their time outside your app. These APIs are the bridge back:

  • Notifications re-engage users with timely, relevant messages — order updates, chat messages, reminders.
  • Push lets your server initiate a notification even when the user has no tab open.
  • Badging gives users a glanceable unread count on the app icon without requiring them to open the app.
  • Share Target integrates your PWA into the OS share sheet so users can share photos, links, and text directly into your app.
  • Periodic Background Sync keeps content fresh for the next time the user opens the app, even if the device was offline.
  1. Overview (this page) — capabilities table and permissions overview.
  2. Notifications — the Notifications API: requesting permission, showing notifications from the page and from the service worker, handling notificationclick.
  3. Push API — end-to-end push: VAPID keys, subscribing, sending a subscription to your server, the SW push event.
  4. Badging and Share Targetnavigator.setAppBadge, manifest share_target, and navigator.share.
  5. Periodic Background Sync — registering a periodic sync, handling the periodicsync event, and its limitations.

Most of these APIs require the user to explicitly grant permission. The golden rule:

Ask for permission at the moment it makes sense to the user — after they sign up for notifications, finish placing an order, or tap “Enable alerts”. Never ask on first page load.

Which of these advanced PWA APIs requires a backend server with VAPID keys?
What is the best moment to ask for notification permission?
Which API gives an installed PWA a glanceable unread count on its icon?