Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Non-standard: This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

The BeforeInstallPromptEvent is the interface of the beforeinstallprompt event fired at the Window object before a user is prompted to "install" a website to a home screen on mobile.

This interface inherits from the Event interface.

Event BeforeInstallPromptEvent


BeforeInstallPromptEvent() Non-standard Experimental

Creates a new BeforeInstallPromptEvent object.

Instance properties

Inherits properties from its parent, Event.

BeforeInstallPromptEvent.platforms Read only Non-standard Experimental

Returns an array of string items containing the platforms on which the event was dispatched. This is provided for user agents that want to present a choice of versions to the user such as, for example, "web" or "play" which would allow the user to choose between a web version or an Android version.

BeforeInstallPromptEvent.userChoice Read only Non-standard Experimental

Returns a Promise that resolves to a string containing either "accepted" or "dismissed".

Instance methods

BeforeInstallPromptEvent.prompt() Experimental

Allows a developer to show the install prompt at a time of their own choosing. This method returns a Promise.


window.addEventListener("beforeinstallprompt", (e) => {
  // log the platforms provided as options in an install prompt
  console.log(e.platforms); // e.g., ["web", "android", "windows"]
  e.userChoice.then((choiceResult) => {
    console.log(choiceResult.outcome); // either "accepted" or "dismissed"
  }, handleError);

Browser compatibility

BCD tables only load in the browser