Glossary

Definition

appinstalled event

Short definition

appinstalled is a window event, listened for with window.addEventListener("appinstalled", () => { ... }), that fires after the browser has finished installing the PWA — regardless of whether the install was triggered via the native beforeinstallprompt flow or a browser menu item. It fires exactly once per successful install and carries no event detail beyond the fact that installation completed.

Reviewed August 7, 2026

It complements beforeinstallprompt's userChoice promise: userChoice tells you what the user chose in the moment, while appinstalled is the authoritative confirmation that the OS actually finished registering the app, which can matter if the process is interrupted between those two points.

A common pattern hides a persistent "Install app" banner permanently for that browser profile once appinstalled fires, storing a flag in localStorage since there is no browser API to query "is this PWA currently installed" after the fact on most platforms.

The event does not fire on iOS Safari, since Apple's manual share-sheet install flow has no corresponding JavaScript signal — measuring iOS installs generally relies on the display-mode media query or navigator.standalone at next launch instead.

Chrome for Android also fires this event for installs completed via the browser's own menu ("Add to Home screen") even when a site never called prompt() itself, so listening for it captures installs your own UI did not directly initiate.

Related terms
beforeinstallprompt userChoice
userChoice is a property on the deferred beforeinstallprompt event, resolving to an object like { outcome: "accepted" | "dismissed", platform: "web" }, available after calling deferredEvent.prompt(). It is the only reliable, synchronous-feeling signal for whether a user actually accepted or dismissed your custom install prompt in that specific interaction.
Standalone mode detection
Standalone mode detection means checking, at runtime, whether the current page is running as an installed app rather than a regular tab. On Chromium and most browsers this is window.matchMedia("(display-mode: standalone)").matches; on iOS Safari the historical equivalent is the non-standard navigator.standalone boolean, since iOS predates the display-mode media feature's adoption there.
WebAPK
A WebAPK is a small, real Android application package that Chrome generates and signs on the fly (via a Google-run server) when a user installs a qualifying PWA on Android. It gives the installed site a genuine entry in Android Settings > Apps, its own task-switcher identity separate from Chrome, and the ability to be the registered handler for its own scope's URLs.
Related applications
related_applications is a manifest array such as [{"platform": "play", "id": "com.example.app"}] listing native app store equivalents of the PWA. The companion boolean field prefer_related_applications, when true, tells Chromium to prefer directing the user to install the native app instead of showing the web install prompt.
Safari share sheet install
On iOS, installing a PWA requires the user to manually tap the Share icon in Safari's toolbar, then choose "Add to Home Screen" from the resulting menu — there is no beforeinstallprompt equivalent, no browser-generated install banner, and no way for a site to trigger this flow programmatically.
PWA install criteria
Chromium's PWA install criteria require: the site served over HTTPS; a linked Web App Manifest with at least a name (or short_name), a 192x192 and 512x512 icon, a start_url, and a display value of standalone, fullscreen, minimal-ui or a display_override entry; and a registered service worker with a fetch event handler, even a minimal pass-through one.