Platform Capabilities

PWAs can use many Web Platform APIs, but support is uneven. Every capability needs feature detection, fallback UX, and target-browser testing.

Capability Families

NeedWeb capabilityPWA stance
Share outboundWeb Share APIGood mobile enhancement where supported
Receive shared contentWeb Share Target manifest memberUseful installed-app integration, test per platform
Open filesFile Handling APIStrong desktop installed-PWA feature where supported
ClipboardAsync Clipboard APIUseful but permission and gesture constrained
App badgeBadging APINice status indicator, not core UX
Protocol linksProtocol handlersGood for deep links and app handoff
Local filesFile System Access API or file inputsBrowser-specific; provide import/export fallback
HardwareWeb Bluetooth, USB, HID, SerialPowerful but narrow browser support and permission-heavy
PaymentsPayment Request and platform walletsVerify country, browser, and processor support
Window chromeWindow Controls OverlayDesktop-only enhancement, not a baseline

Feature Detection Pattern

if ('share' in navigator) {
  await navigator.share({
    title: 'Invoice',
    text: 'Invoice INV-1042',
    url: '/invoices/INV-1042',
  });
} else {
  await navigator.clipboard.writeText(location.href);
  showToast('Link copied');
}

Rule

If the capability is central to the product and only one browser supports it well, you are making a platform bet. Name that bet in the decision guide before implementation starts.