coderef

Presentation APILimited availability

The Presentation API shows or controls content on another display, such as a network-connected TV or projector.

Not yet supported in all major browsers — check the table and provide a fallback.

Browser support

DesktopChrome
1–46Not supported
47+Supportedsince Dec 1, 2015
Current: 155
Edge
12–18Not supported
79+Supportedsince Jan 15, 2020
Current: 154
Firefox
✕Not supportedup to 157
Current: 157
Safari
✕Not supportedup to 27
Current: 27
MobileChrome Android
18–46Not supported
47+Supportedsince Dec 2, 2015
Current: 155
Firefox Android
✕Not supportedup to 157
Current: 157
Safari iOS
✕Not supportedup to 27
Current: 27

How to use

Not supported in Firefox, Safari, Firefox Android, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.

Example

Full syntax and examples are on MDN: presentation.

Feature detection

JS · check before using
if ("Presentation" in globalThis) {
  // Presentation is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (39). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Navigator.presentation4779✕✕47✕✕
Presentation4779✕✕47✕✕
Presentation.defaultRequest4779✕✕47✕✕
Presentation.receiver5979✕✕59✕✕
PresentationAvailability4779✕✕47✕✕
PresentationAvailability.change_event4779✕✕47✕✕
PresentationAvailability.value4779✕✕47✕✕
PresentationConnection4779✕✕47✕✕
PresentationConnection.binaryType4779✕✕47✕✕
PresentationConnection.close4979✕✕49✕✕
PresentationConnection.close_event5079✕✕50✕✕
PresentationConnection.connect_event5079✕✕50✕✕
PresentationConnection.id4779✕✕47✕✕
PresentationConnection.message_event4779✕✕47✕✕
PresentationConnection.send4779✕✕47✕✕
PresentationConnection.state4779✕✕47✕✕
PresentationConnection.terminate4879✕✕48✕✕
PresentationConnection.terminate_event5079✕✕50✕✕
PresentationConnection.url5779✕✕57✕✕
PresentationConnectionAvailableEvent4779✕✕47✕✕
Show 19 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
PresentationConnectionAvailableEvent.PresentationConnectionAvailableEvent4779✕✕47✕✕
PresentationConnectionAvailableEvent.connection4779✕✕47✕✕
PresentationConnectionCloseEvent5079✕✕50✕✕
PresentationConnectionCloseEvent.PresentationConnectionCloseEvent5079✕✕50✕✕
PresentationConnectionCloseEvent.message5079✕✕50✕✕
PresentationConnectionCloseEvent.reason5079✕✕50✕✕
PresentationConnectionList5979✕✕59✕✕
PresentationConnectionList.connectionavailable_event5979✕✕59✕✕
PresentationConnectionList.connections5979✕✕59✕✕
PresentationReceiver5979✕✕59✕✕
PresentationReceiver.connectionList5979✕✕59✕✕
PresentationRequest4779✕✕47✕✕
PresentationRequest.PresentationRequest4779✕✕47✕✕
PresentationRequest.connectionavailable_event4779✕✕47✕✕
PresentationRequest.getAvailability4779✕✕47✕✕
PresentationRequest.reconnect4779✕✕47✕✕
PresentationRequest.secure_context_required6179✕✕61✕✕
PresentationRequest.start4779✕✕47✕✕
iframe.sandbox.allow-presentation537950✕5350✕