The reference for installable web apps.
157 entries and 60 compatibility datasets, checked against browser-compat-data and vendor release notes, in English and Chinese. Each support row links its source, and its confidence level is computed from the kind of source.
Support tables come from browser-compat-data and vendor documentation. The demo shows a capability on your own device. Lab pages record what a real device did, with the date, the OS build, and the raw data. The evidence layers page explains how the three relate.
Can I PWA?
All 60 datasetsSupport for the capabilities that decide whether a web app ships, in Chrome, Edge, Firefox, Safari on macOS and iOS, Samsung Internet, and Android WebView. Each version is the first release with support; a range shows that support began as partial.
| Capability | ChromeBlink · desktop | EdgeBlink · desktop | FirefoxGecko · desktop | SafariWebKit · macOS | SafariWebKit · iOS | Samsung InternetBlink · Android | WebViewBlink · Android |
|---|---|---|---|---|---|---|---|
| Install prompt | 44 | 79 | 5.0 | 44 | |||
| Web Push | 42 | 17 | 44 | 16 | 16.4 | 4.0 | |
| Service workers | 40 | 17 | 44 | 11.1 | 11.3 | 4.0 | 40 |
| Background Sync | 49 | 79 | 5.0 | ||||
| Periodic Background Sync | 80 | 80 | 13.0 | ||||
| Badging | 81 | 81 | 17 | 16.4 | |||
| Web Share | 89→128 | 81→93 | 71 | 12.1 | 12.2 | 8.0 | |
| Share target | 89 | 89 | 12.0 | ||||
| File System Access | 86 | 86 | 29.0 | 132 | |||
| File handlers | 102 | 102 | |||||
| Window Management | 100 | 100 | 19.0 | 100 | |||
| WebGPU | 113→144 | 113→144 | 141 | 26 | 26 | 25.0 | 121 |
Browse the reference
Reference overviewEight sections. An entry on a manifest member or API says what it does, what errors it throws, how each browser handles it, and which part of the specification defines it.
Manifest25
- categories
- description
- display
- display_override
- edge_side_panel
- file_handlers
- handle_links
- How installed PWAs pick up manifest changes
- icons
- id
- lang, dir, and *_localized
- launch_handler
- name and short_name
- orientation
- protocol_handlers
- related_applications and prefer_related_applications
- scope
- scope_extensions
- screenshots
- share_target
- shortcuts
- start_url
- tabbed display mode and tab_strip
- theme_color and background_color
- widgets
Service Worker17
- Background Fetch API
- Background Sync API
- Cache API
- Caching strategies for service workers
- Clients API
- Debugging service workers
- FetchEvent and request routing
- NavigationPreloadManager
- Offline fallback for service workers
- Periodic Background Sync API
- Removing a service worker safely (kill switch)
- Service worker lifecycle
- Service worker registration and scope
- Service Worker Static Routing API
- Service-Worker-Allowed header
- skipWaiting() and the update flow
- Workbox
Installation17
- App shortcuts after install
- Badging API
- beforeinstallprompt event
- Desktop installation
- getInstalledRelatedApps()
- Install prompt UX
- Installability criteria
- iOS Add to Home Screen
- Isolated Web Apps
- Richer install UI
- Several PWAs on one origin
- The N+1 install problem
- Trusted Web Activity
- Uninstalling an installed PWA
- Web App Origin Association file
- Web Install API (navigator.install)
- WebAPK
Capabilities46
- Async Clipboard API
- Barcode Detection API (Shape Detection)
- Compute Pressure API
- Contact Picker API
- Credential Management API
- Device Posture API (foldables)
- Digital Goods API
- Document Picture-in-Picture API
- EyeDropper API
- Federated Credential Management (FedCM)
- File System Access API
- Fullscreen API in installed PWAs
- Generic Sensor API
- Geolocation API
- Idle Detection API
- Keyboard Lock and Pointer Lock
- Local Font Access API
- Local Network Access
- Media Session API
- Navigation API
- Payment Request API
- Permissions API (navigator.permissions.query)
- registerProtocolHandler() and manifest protocol handlers
- Screen Capture API (getDisplayMedia)
- Screen Orientation API (lock and unlock)
- Screen Wake Lock API
- Shipped, origin trial, flag, in development
- Storage Buckets API
- User activation and the APIs it gates
- Vibration API
- VirtualKeyboard API
- Web Bluetooth API
- Web Locks API
- Web MIDI API
- Web NFC API
- Web Serial API
- Web Share API
- WebAuthn and passkeys
- WebCodecs API
- WebGPU API
- WebHID API
- WebOTP API
- WebRTC API
- WebTransport API
- WebUSB API
- Window Management API
Storage12
- CacheStorage and the caches global
- Clear-Site-Data response header
- Document.requestStorageAccess()
- Eviction and best-effort storage
- Home Screen web app storage isolation on iOS
- IDBFactory.open() and the IndexedDB request model
- localStorage and sessionStorage
- navigator.storage.getDirectory() (OPFS)
- Partitioned cookies (CHIPS)
- Safari's 7-day cap on script-writable storage
- StorageManager.estimate()
- StorageManager.persist() and persisted()
Notifications10
- Declarative Web Push
- Notification actions and badge options
- Notification interface
- Notification triggers (showTrigger)
- Notification.requestPermission()
- Notifications API
- Periodic background sync for content updates
- Push subscription expiry and refresh
- Web Push and PushManager.subscribe()
- Web Push on iOS and iPadOS (16.4+)
Performance13
- Back/forward cache (bfcache)
- Code splitting with dynamic import()
- Core Web Vitals (LCP, INP, and CLS)
- Font and image optimization
- Lighthouse and the removed PWA category
- Navigation preload and service worker boot time
- PerformanceObserver and paint timing
- Precaching strategies
- Resource hints (preload and preconnect)
- Service worker startup and fetch overhead
- Speculation Rules API
- The app shell model
- View Transitions API
Platforms17
- Baseline support overview
- Chrome and Android (WebAPK, TWA)
- ChromeOS (launcher and shelf)
- desktop
- Firefox
- Firefox taskbar web apps on Windows
- HarmonyOS NEXT and ArkWeb
- In-app browsers and PWA installation
- iOS and Safari
- iOS by version (iOS 11.3 to iOS 27)
- iPadOS
- Linux desktop
- Meta Quest (Horizon OS browser)
- Microsoft Edge (sidebar, store)
- Safari for macOS (Dock apps)
- Samsung Internet
- Windows
How this reference is kept accurate
Each row of a compatibility dataset covers one browser on one operating system and has exactly one of five statuses: yes, partial, flag, no, or unknown.
Support rows come from MDN browser-compat-data, vendor documentation and release notes, and W3C, WHATWG, and WICG specifications. StatCounter Global Stats browser market shares for September 2026 are used only by the by-country view.
Every entry shows a last-verified date, which moves only when the entry is re-checked against its sources. Entries older than 180 days are queued for re-verification, or after 90 days when their facts depend on store or platform policy. The publishing pipeline is scheduled to run every four hours.
- latest content update
- 2026-10-25
- reference entries
- 157
- compatibility datasets
- 60
- latest compatibility verification
- 2026-10-20