Skip to content

Compatibility

Published

Compatibility is a BCD-style data explorer that answers “Can I use X in a PWA?” across operating systems, browsers, versions — and, uniquely, country/region reach weighted by real-world browser share. It also covers the ecosystem-policy dimensions (ad networks, payments, store acceptance) that decide whether a capability is usable in production, not just whether it ships.

Each feature has a canonical page with its OS × browser × version matrix, ecosystem policy rows, full provenance, and a machine-readable JSON export.

  • Legend
  • Yes
  • Partial
  • Flag
  • No
  • Unknown
FeatureCategorySummaryBest supportTargetsConfidence
Async Clipboard APICapabilitiesProgrammatic read/write access to the system clipboard via navigator.clipboard, gated by a user gesture or the clipboard-read/clipboard-write permission.Yes9high
Background FetchService WorkerThe 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.Yes9high
Background SyncCapabilitiesDefer actions until the user has stable connectivity via the service worker.Yes9high
Badging APIEngagementSet an app-icon badge (count or dot) on the installed PWA.Yes7medium
Contact PickerDeviceThe 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.Yes9high
EyeDropper APICapabilitiesThe 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.Yes9high
File System Access APICapabilitiesRead and write to the user's local file system with explicit permission.Yes7medium
Generic Sensor APICapabilitiesThe 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.Yes9high
Geolocation APICapabilitiesRead the user's geographic position with explicit permission, one-shot or via a watch.Yes9high
getInstalledRelatedApps()APIsnavigator.getInstalledRelatedApps() reports which related native or PWA apps declared in the manifest are already installed on the device.Yes8low
Idle Detection APICapabilitiesThe 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.Yes9high
Install Prompt (beforeinstallprompt)InstallationProgrammatic control over the PWA install prompt via the beforeinstallprompt event.Yes7medium
Local Font AccessCapabilitiesThe 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.Yes9high
Manifest Protocol HandlersManifestRegister a PWA to handle custom or allow-listed URL protocols via manifest.protocol_handlers.Yes7medium
manifest: file_handlersManifestThe file_handlers member registers an installed PWA with the OS as a handler for specific file types, delivered to the app via window.launchQueue.Yes9high
manifest: idManifestThe id member provides a stable identity for a PWA, decoupled from start_url.Yes9high
manifest: launch_handlerManifestThe 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.Yes9high
manifest: scope_extensionsManifestThe 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.Yes9high
manifest: share_targetManifestThe share_target member registers the installed PWA as a target in the OS native share sheet.Yes6low
manifest: shortcutsManifestThe shortcuts member adds quick-action entries to the OS context menu of an installed PWA.Yes7low
Notification TriggersEngagementNotification 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.No1medium
Notification.permission / requestPermission()NotificationsThe 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.Yes9medium
Payment Request APICommerceBrowser-mediated checkout sheet collecting payment and contact details.Yes7medium
Periodic Background SyncService WorkerThe 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.Yes9high
Persistent StorageStoragenavigator.storage.persist() requests protection from automatic data eviction.Yes9high
Screen Wake LockDeviceThe 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.Yes10low
Service WorkersCapabilitiesThe programmable network proxy that powers offline, caching, and push for PWAs.Yes7medium
Storage BucketsCapabilitiesThe 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.Yes5low
Trusted Web Activity availabilityInstallationThe 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.Yes1medium
Web App Manifest: categoriesManifestThe 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.Unknown6medium
Web App Manifest: descriptionManifestThe 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.Yes9high
Web App Manifest: displayManifestThe display member chooses the installed app's window mode (standalone, fullscreen, minimal-ui, browser).Yes7medium
Web App Manifest: display_overrideManifestThe display_override member provides a fallback chain of display modes, letting a PWA prefer newer modes while falling back to standard modes.Yes9high
Web App Manifest: display_override "tabbed" modeManifestThe "tabbed" display_override value and the tab_strip member let an installed PWA present a tabbed document interface inside its own app window.Yes9high
Web App Manifest: handle_linksManifestThe 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.No1medium
Web App Manifest: iconsManifestThe 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.Yes8low
Web App Manifest: name / short_nameManifestThe name and short_name members define how a PWA is labelled in install prompts, the app shelf, and the home screen.Yes9high
Web App Manifest: orientationManifestThe orientation member sets the default screen orientation an installed web app launches and runs in.Yes9high
Web App Manifest: prefer_related_applicationsManifestprefer_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.Yes9high
Web App Manifest: related_applicationsManifestrelated_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.Yes9high
Web App Manifest: scopeManifestThe scope member fences the installed app's navigation boundary.Yes7medium
Web App Manifest: screenshotsManifestThe screenshots member supplies richer install UI in browsers and store listings.Yes7medium
Web App Manifest: start_urlManifestThe start_url member identifies the URL that loads when a user launches an installed PWA from the home screen or app shelf.Yes9high
Web App Manifest: theme_color / background_colorManifestThe theme_color and background_color members set the UI chrome color and the splash-screen/loading background color for an installed PWA.Yes18high
Web Bluetooth APICapabilitiesThe 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.Yes10high
Web Locks APICapabilitiesnavigator.locks.request() lets scripts in a tab or worker acquire an exclusive or shared, origin-scoped lock to coordinate access to a shared resource.Yes9high
Web NFC APICapabilitiesThe 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.Yes9high
Web PushEngagementServer-sent push messages delivered via the Push API + service worker, even when the app is closed.Yes7medium
Web Serial APICapabilitiesThe 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.Yes9high
Web Share APICapabilitiesThe 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.Yes9high
WebAPK availabilityInstallationThe mechanism Chrome uses to install PWAs as real Android apps with their own package identity, splash screen, and deep-link registration.Yes1medium
WebAuthn / PublicKeyCredentialCapabilitiesPublicKeyCredential 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.Yes9high
WebCodecs APICapabilitiesThe 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.Yes18high
WebGPUCapabilitiesWebGPU exposes GPU rendering and compute to the web via navigator.gpu.requestAdapter()/requestDevice() and the WGSL shading language. It is a W3C specification.Yes9high
WebHID APICapabilitiesThe 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.Yes9high
WebRTC (RTCPeerConnection)CapabilitiesEstablish real-time peer-to-peer audio, video, and data connections directly between browsers.Yes9high
WebTransportNetworkingWebTransport 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.Yes9high
WebUSB APICapabilitiesThe 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.Yes10high
Window ManagementCapabilitiesThe 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()).Yes9high

59 features seeded and growing.

Compatibility data is rendered from machine-readable JSON and exposed as Dataset JSON-LD, with a per-feature JSON export at /compatibility/<feature>.json so search and LLMs can quote the source.