# Desktop PWA installation: Chrome, Edge, and beyond

> How PWA installation works on Windows, macOS, Linux, and ChromeOS — install UI, window management, OS integration, and per-platform differences.

**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.

## Install triggers on desktop

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](/reference/installation/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.

## Window management after install

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.

## Window Controls Overlay (WCO)

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:

```json
{
  "display": "standalone",
  "display_override": ["window-controls-overlay"]
}
```

```css
.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`.

## Per-platform notes

### Windows (Chrome / Edge)

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.

### macOS (Chrome / Edge)

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.

### Linux (Chrome)

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

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](/reference/installation/twa)).

### macOS / Windows Safari

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)

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.

## Detecting standalone mode on desktop

```js
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.

## Compatibility

For current per-browser installation support figures, see [/compatibility/](/compatibility/).

## Practical checklist

- [ ] 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.