By feature
Published
The by-feature view lists each PWA capability. Open any feature for its full OS × browser × version matrix, ecosystem policy rows, and provenance.
- Legend
- Yes
- Partial
- Flag
- No
- Unknown
| Feature | Category | Summary | Best support | Targets | Confidence |
|---|---|---|---|---|---|
| Async Clipboard API | Capabilities | Programmatic read/write access to the system clipboard via navigator.clipboard, gated by a user gesture or the clipboard-read/clipboard-write permission. | Yes | 9 | high |
| Background Fetch | Service Worker | The Background Fetch API lets a service worker hand off a long-running download (or upload) to the browser itself, which shows the user progress and a cancel control and wakes the service worker with an event once the operation settles. | Yes | 9 | high |
| Background Sync | Capabilities | Defer actions until the user has stable connectivity via the service worker. | Yes | 9 | high |
| Badging API | Engagement | Set an app-icon badge (count or dot) on the installed PWA. | Yes | 7 | medium |
| Chinese vendor browsers | Platforms | PWA behaviour in the Android browsers mainland Chinese users actually run: HarmonyOS Browser (Huawei), Mi Browser (Xiaomi), ColorOS Browser (OPPO), UC Browser, QQ Browser and the WeChat in-app WebView (XWeb), each for install to home screen, standalone display, service worker and Web Push. browser-compat-data has no data for any of them, so every row rests on vendor documentation; where no vendor statement exists the row says unknown rather than guessing. | Yes | 24 | low |
| Contact Picker | Device | The Contact Picker API lets a page ask the user to select one or more entries from their device contacts and share only the fields the site requested, without granting standing access to the address book. | Yes | 9 | high |
| EyeDropper API | Capabilities | The EyeDropper API opens a browser-supplied eyedropper from a user gesture and resolves with the sampled pixel's color in sRGBHex format, for use in custom color pickers. | Yes | 9 | high |
| File System Access API | Capabilities | Read and write to the user's local file system with explicit permission. | Yes | 7 | medium |
| Generic Sensor API | Capabilities | The Sensor APIs expose device sensors through a common design; support below is for the representative Accelerometer interface, which requires a secure context and a Permissions API grant. | Yes | 9 | high |
| Geolocation API | Capabilities | Read the user's geographic position with explicit permission, one-shot or via a watch. | Yes | 9 | high |
| getInstalledRelatedApps() | APIs | navigator.getInstalledRelatedApps() reports which related native or PWA apps declared in the manifest are already installed on the device. | Yes | 8 | low |
| Idle Detection API | Capabilities | The Idle Detection API's IdleDetector interface reports whether the user is active or idle and whether the screen is locked, gated behind the idle-detection permission and a 60-second minimum threshold. | Yes | 9 | high |
| Install Prompt (beforeinstallprompt) | Installation | Programmatic control over the PWA install prompt via the beforeinstallprompt event. | Yes | 7 | medium |
| Local Font Access | Capabilities | The Local Font Access API's window.queryLocalFonts() method returns the fonts installed on a user's device as FontData objects, gated behind a local-fonts permission prompt. | Yes | 9 | high |
| Manifest Protocol Handlers | Manifest | Register a PWA to handle custom or allow-listed URL protocols via manifest.protocol_handlers. | Yes | 7 | medium |
| manifest: file_handlers | Manifest | The file_handlers member registers an installed PWA with the OS as a handler for specific file types, delivered to the app via window.launchQueue. | Yes | 9 | high |
| manifest: id | Manifest | The id member provides a stable identity for a PWA, decoupled from start_url. | Yes | 9 | high |
| manifest: launch_handler | Manifest | The launch_handler member's client_mode controls whether launching the installed app reuses an existing window or opens a new one, and whether that window is navigated to the launch target URL. | Yes | 9 | high |
| manifest: scope_extensions | Manifest | The scope_extensions member lets an installed PWA's navigation scope span additional origins it owns, each verified via a .well-known/web-app-origin-association file. | Yes | 9 | high |
| manifest: share_target | Manifest | The share_target member registers the installed PWA as a target in the OS native share sheet. | Yes | 6 | low |
| manifest: shortcuts | Manifest | The shortcuts member adds quick-action entries to the OS context menu of an installed PWA. | Yes | 7 | low |
| Notification Triggers | Engagement | Notification Triggers was a proposed showTrigger option for ServiceWorkerRegistration.showNotification() that would schedule a notification to appear at a future time chosen by a TimestampTrigger; Chrome's own documentation says development of the feature has ended. | No | 1 | medium |
| Notification.permission / requestPermission() | Notifications | The three-state permission property and the method used to request it, per MDN's Limited-availability browser-compat data. Does not cover the separate Notification() constructor, which has its own Android restrictions. | Yes | 9 | medium |
| Payment Request API | Commerce | Browser-mediated checkout sheet collecting payment and contact details. | Yes | 7 | medium |
| Periodic Background Sync | Service Worker | The Periodic Background Sync API lets an installed PWA's service worker periodically synchronize data in the background, gated by installation and Chrome's site engagement heuristics. | Yes | 9 | high |
| Persistent Storage | Storage | navigator.storage.persist() requests protection from automatic data eviction. | Yes | 9 | high |
| Screen Wake Lock | Device | The Screen Wake Lock API lets a page request that the device's screen stay on and not dim or lock, releasing the lock automatically when the tab is hidden. | Yes | 10 | low |
| Service Workers | Capabilities | The programmable network proxy that powers offline, caching, and push for PWAs. | Yes | 7 | medium |
| Storage Buckets | Capabilities | The Storage Buckets API lets a page create multiple, separately named storage buckets via navigator.storageBuckets, each with its own IndexedDB, Cache, and quota-eviction policy, instead of sharing one origin-wide storage pool. | Yes | 5 | low |
| Trusted Web Activity availability | Installation | The Android mechanism that opens a verified web origin as a full-screen Chrome Custom Tab with Digital Asset Links verification; the generated package can be installed directly on a device or uploaded to the Play Store. | Yes | 1 | medium |
| Web App Manifest: categories | Manifest | The categories member lists app-store classifications for a web app; it is app-store metadata, not a browser-rendered feature, so browser compatibility does not apply. | Unknown | 6 | medium |
| Web App Manifest: description | Manifest | The description member is a string explaining what a PWA does; browsers and app stores that support it surface the text in install and app-listing UI. | Yes | 9 | high |
| Web App Manifest: display | Manifest | The display member chooses the installed app's window mode (standalone, fullscreen, minimal-ui, browser). | Yes | 7 | medium |
| Web App Manifest: display_override | Manifest | The display_override member provides a fallback chain of display modes, letting a PWA prefer newer modes while falling back to standard modes. | Yes | 9 | high |
| Web App Manifest: display_override "tabbed" mode | Manifest | The "tabbed" display_override value and the tab_strip member let an installed PWA present a tabbed document interface inside its own app window. | Yes | 9 | high |
| Web App Manifest: handle_links | Manifest | The handle_links member lets an installed PWA declare whether in-scope links should open inside the app; it is still a WICG proposal, and chromestatus.com tracks Chrome's own implementation as "On hold" with no shipping milestone recorded. | No | 1 | medium |
| Web App Manifest: icons | Manifest | The icons member supplies home-screen, task-switcher, and install-dialog imagery for a PWA. It also supports maskable icons that adapt to platform-specific shapes. | Yes | 8 | low |
| Web App Manifest: name / short_name | Manifest | The name and short_name members define how a PWA is labelled in install prompts, the app shelf, and the home screen. | Yes | 9 | high |
| Web App Manifest: orientation | Manifest | The orientation member sets the default screen orientation an installed web app launches and runs in. | Yes | 9 | high |
| Web App Manifest: prefer_related_applications | Manifest | prefer_related_applications is a boolean hint that a browser may use to favor installing one of the apps listed in related_applications over the web app itself. | Yes | 9 | high |
| Web App Manifest: related_applications | Manifest | related_applications lists native or store apps related to a PWA and backs Navigator.getInstalledRelatedApps(). The separate prefer_related_applications member has its own dataset (manifest-prefer-related-applications) since it is an independent manifest member with its own BCD entry. | Yes | 9 | high |
| Web App Manifest: scope | Manifest | The scope member fences the installed app's navigation boundary. | Yes | 7 | medium |
| Web App Manifest: screenshots | Manifest | The screenshots member supplies richer install UI in browsers and store listings. | Yes | 7 | medium |
| Web App Manifest: start_url | Manifest | The start_url member identifies the URL that loads when a user launches an installed PWA from the home screen or app shelf. | Yes | 9 | high |
| Web App Manifest: theme_color / background_color | Manifest | The theme_color and background_color members set the UI chrome color and the splash-screen/loading background color for an installed PWA. | Yes | 18 | high |
| Web Bluetooth API | Capabilities | The Web Bluetooth API lets a web app request access to nearby Bluetooth Low Energy (BLE) devices via navigator.bluetooth.requestDevice() and communicate with their GATT services. It is a WICG specification, not yet supported in Firefox or Safari. | Yes | 10 | high |
| Web Locks API | Capabilities | navigator.locks.request() lets scripts in a tab or worker acquire an exclusive or shared, origin-scoped lock to coordinate access to a shared resource. | Yes | 9 | high |
| Web NFC API | Capabilities | The Web NFC API lets a web app read and write NDEF messages to NFC tags via the NDEFReader interface. It is a W3C Community Group draft. | Yes | 9 | high |
| Web Push | Engagement | Server-sent push messages delivered via the Push API + service worker, even when the app is closed. | Yes | 7 | medium |
| Web Serial API | Capabilities | The Web Serial API lets a web app request access to a serial port via navigator.serial.requestPort() and read/write data to it. It is a WICG specification. | Yes | 9 | high |
| Web Share API | Capabilities | The Web Share API invokes the platform-native share sheet so users can share text, URLs, or files from a PWA. Share Target (receiving shared content via manifest share_target) is scoped separately; its browser-compat-data coverage is not yet tracked in MDN BCD. | Yes | 9 | high |
| WebAPK availability | Installation | The mechanism Chrome uses to install PWAs as real Android apps with their own package identity, splash screen, and deep-link registration. | Yes | 1 | medium |
| WebAuthn / PublicKeyCredential | Capabilities | PublicKeyCredential lets a PWA register and authenticate users with public-key credentials via platform or roaming authenticators instead of passwords. Per MDN, a passkey is a discoverable WebAuthn credential built on this same PublicKeyCredential API — this matrix reflects baseline PublicKeyCredential availability. | Yes | 9 | high |
| WebCodecs API | Capabilities | The WebCodecs API gives web apps low-level, hardware-accelerated access to encode and decode individual video frames and audio chunks via VideoEncoder, VideoDecoder, AudioEncoder, and AudioDecoder. It is a W3C specification. | Yes | 18 | high |
| WebGPU | Capabilities | WebGPU exposes GPU rendering and compute to the web via navigator.gpu.requestAdapter()/requestDevice() and the WGSL shading language. It is a W3C specification. | Yes | 9 | high |
| WebHID API | Capabilities | The WebHID API lets a web app request access to non-standard Human Interface Devices via navigator.hid.requestDevice() and exchange input/output/feature reports with them. It is a WICG specification. | Yes | 9 | high |
| WebRTC (RTCPeerConnection) | Capabilities | Establish real-time peer-to-peer audio, video, and data connections directly between browsers. | Yes | 9 | high |
| WebTransport | Networking | WebTransport is a web API for flexible, low-latency, bidirectional client-server messaging over HTTP/3, offering both reliable streams and unreliable, UDP-like datagrams over a single connection. | Yes | 9 | high |
| WebUSB API | Capabilities | The WebUSB API lets a web app request access to non-standard USB devices via navigator.usb.requestDevice() and communicate with them directly. It is a WICG specification, not yet supported in Firefox or Safari. | Yes | 10 | high |
| Window Management | Capabilities | The Window Management API lets a page discover the screens attached to a device (window.screen.isExtended) and, after a permission prompt, get per-screen details to place windows precisely (Window.getScreenDetails()). | Yes | 9 | high |
← Back to the Compatibility overview.