Skip to content

Desktop PWA installation: Chrome, Edge, and beyond

Published

In one line: Chrome and Edge on Windows, macOS, Linux, and ChromeOS let users install PWAs as standalone desktop apps with their own windows, taskbar/dock entries, and OS-level integration — triggered via beforeinstallprompt or the browser’s ambient install icon.

Unlike Android, desktop Chromium does not show a mini-infobar. The install affordances are:

  • Address bar icon — a small “install” icon (a screen with a download arrow) appears in Chrome’s address bar or Edge’s address bar once the PWA meets the installability criteria.
  • Browser menu — Chrome: three-dot menu → “Install [App Name]…”; Edge: three-dot menu → Apps → Install [App Name].
  • Custom in-page prompt — your code captures beforeinstallprompt, stores it, and calls prompt() from a click handler. This is the recommended approach for controlled install UX.

beforeinstallprompt fires on desktop just as it does on Android; the same code path works across platforms.

After installation, a PWA opens in its own app window (an OS window with no browser tabs, no address bar, no browser toolbar). The window is managed by the browser engine but presented by the OS:

  • Windows: The app appears in the taskbar. Alt+Tab switches to it. Can be pinned to Start.
  • macOS: The app appears in the Dock. Cmd+Tab includes it. Spotlight finds it.
  • Linux: Appears in the application launcher (GNOME, KDE, etc.) as a .desktop entry.
  • ChromeOS: Appears in the launcher shelf and in search.

The window title and icon come from the manifest’s name and icons. The window’s behavior (size, position) follows the manifest’s launch_handler and window_controls_overlay settings when specified.

Chrome and Edge on desktop support window-controls-overlay in display_override, which lets your web content extend into the title bar area. The OS-native close/minimize/ maximize buttons remain in place; your HTML fills the rest of the title bar:

{
"display": "standalone",
"display_override": ["window-controls-overlay"]
}
.title-bar {
/* Position content in the title bar region */
position: fixed;
top: env(titlebar-area-y);
left: env(titlebar-area-x);
width: env(titlebar-area-width);
height: env(titlebar-area-height);
}

WCO is desktop-only; on mobile it has no effect and falls back to standalone.

Both Chrome and Edge support PWA installation on Windows 10 and 11. Edge additionally registers the PWA with the Windows Shell (Start menu, jump lists) more deeply than Chrome. Both generate a .lnk shortcut in the user’s apps folder. Edge’s “Apps” hub (edge://apps) manages installed PWAs.

On macOS, both Chrome and Edge create an app bundle in ~/Applications/Chrome Apps/ or ~/Applications/Microsoft Edge Apps/. The app appears in Spotlight and the Finder. Native macOS features like full-screen mode and Spaces work. The app does not appear in the Mac App Store.

Chrome creates a .desktop file in ~/.local/share/applications/. The app appears in the system launcher. Edge on Linux also supports PWA install (Chromium-based).

ChromeOS is tightly integrated with PWA installation. PWAs installed via Chrome on ChromeOS appear in the ChromeOS launcher, can be pinned to the shelf, and behave as first-class apps. ChromeOS also has native integration with the Google Play Store for TWAs (see TWA reference).

Safari on macOS (Sonoma / 14+) introduced Web Apps — users can install websites from Safari’s File menu → “Add to Dock”. The installed app opens in a Safari-based window without the address bar. beforeinstallprompt does not fire in Safari; the install is entirely user-driven from Safari’s menus. The feature was introduced in macOS Sonoma (14.0, late 2023). Safari on Windows does not exist as a supported platform.

Firefox desktop does not support PWA installation. The address bar install icon and beforeinstallprompt are absent. Users can bookmark the site but cannot install it as a standalone app.

const isStandalone =
window.matchMedia('(display-mode: standalone)').matches ||
window.matchMedia('(display-mode: window-controls-overlay)').matches;

Use this to hide the install button when the user is already using the installed app.

For current per-browser installation support figures, see /compatibility/.

  • Manifest has display: standalone (or WCO for title-bar apps).
  • Icons include at least 192 × 192 and 512 × 512 PNGs; consider an SVG any maskable variant.
  • beforeinstallprompt is captured and triggered from a user gesture.
  • Standalone detection suppresses the install button when already installed.
  • If targeting macOS Sonoma Safari, test the File → “Add to Dock” path separately (no JS API).
  • Test window resize and env(titlebar-area-*) CSS if using WCO.