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
| Need | Web capability | PWA stance |
|---|---|---|
| Share outbound | Web Share API | Good mobile enhancement where supported |
| Receive shared content | Web Share Target manifest member | Useful installed-app integration, test per platform |
| Open files | File Handling API | Strong desktop installed-PWA feature where supported |
| Clipboard | Async Clipboard API | Useful but permission and gesture constrained |
| App badge | Badging API | Nice status indicator, not core UX |
| Protocol links | Protocol handlers | Good for deep links and app handoff |
| Local files | File System Access API or file inputs | Browser-specific; provide import/export fallback |
| Hardware | Web Bluetooth, USB, HID, Serial | Powerful but narrow browser support and permission-heavy |
| Payments | Payment Request and platform wallets | Verify country, browser, and processor support |
| Window chrome | Window Controls Overlay | Desktop-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.