# PWAs on Firefox

> What installing a web app means on Firefox — taskbar web apps on Windows since Firefox 143, manifest-driven installation on Firefox for Android, no install prompt or beforeinstallprompt anywhere — and how to write install-flow code that does not assume one exists.

**In one line:** Firefox 143 (released 2025-09-16) lets Windows users pin a website to
the taskbar and run it as a web app in a simplified window; Firefox for Android installs
PWAs from the manifest; neither fires `beforeinstallprompt`, so install-flow code must
not assume a prompt exists.

## What installing means on Firefox

Since Firefox 143, per the release notes, Firefox on Windows "supports running
websites as web apps pinned directly to the taskbar" — simplified windows launched
from the taskbar that keep the user's installed add-ons. The release notes also state
that the feature "is not currently available for Firefox installs from the Microsoft
Store". There is no in-page install icon and no way for the manifest alone to produce
that window; the user pins the site from Firefox's own UI. On macOS and Linux desktop
Firefox still has no manifest-driven install flow. Per MDN's `BeforeInstallPromptEvent`
page, the interface is non-standard and primarily implemented by Chromium-based
browsers, so no version of Firefox fires it.

## Feature detection and fallback

Code that offers an "Install app" button must not assume the install APIs exist:

```html
<button id="install-button" hidden>Install app</button>
<p id="install-instructions" hidden>
  This browser doesn't support one-click install from this page. Bookmark it, or
  use this tab as an ordinary browser tab — some browsers offer their own
  "Add to Home screen" option in their menu, but not all do.
</p>

<script>
  let deferredPrompt = null;
  const installButton = document.getElementById('install-button');
  const installInstructions = document.getElementById('install-instructions');

  function showManualInstallInstructions() {
    installInstructions.hidden = false;
  }

  if (!('onbeforeinstallprompt' in window)) {
    // Unsupported here (e.g. desktop Firefox, or Safari): the event never
    // fires, so point the user at manual alternatives instead of showing a
    // dead install button.
    showManualInstallInstructions();
  } else {
    window.addEventListener('beforeinstallprompt', (event) => {
      event.preventDefault();
      deferredPrompt = event;
      installButton.hidden = false;
    });

    installButton.addEventListener('click', async () => {
      if (!deferredPrompt) return;
      deferredPrompt.prompt();
      deferredPrompt = null;
    });
  }
</script>
```

The fallback text above deliberately doesn't claim
every such browser has its own "Install" menu item: per MDN, desktop Firefox does
not support installing a PWA from its manifest, so the honest guidance there is
"use it as a normal tab, or bookmark it." Firefox for Android, by contrast, is
grouped with Chrome, Edge, Opera, and Samsung Internet as a browser that does
support installing PWAs from the manifest.

## Where it is supported

Per MDN, Firefox for Android supports installing PWAs from the manifest, alongside
Chrome, Edge, Opera, and Samsung Internet on Android. On desktop, Firefox 143 and
later on Windows offer taskbar web apps (release notes, 2025-09-16); Firefox on macOS
and Linux has no manifest-driven install flow, which makes it the exception among
major desktop engines where Chromium-based browsers install from the manifest.

## Practical checklist

- [ ] Never gate core functionality behind installation succeeding — desktop
      Firefox users must be able to use the app fully as an ordinary tab.
- [ ] Feature-detect `beforeinstallprompt` support rather than assuming every
      browser fires it; branch to manual instructions when it does not.
- [ ] Don't assume the rest of the app's functionality depends on installation —
      design the core experience to work as an ordinary browser tab first.
- [ ] Don't advertise an "Install" button unconditionally; show it only once
      `beforeinstallprompt` has actually fired, or replace it with
      browser-specific guidance on Firefox.
- [ ] Re-check this position periodically — Mozilla's browser feature set changes
      independently of the underlying web specs this entry is not describing.

## Where to go next

- [PWAs on iOS and Safari](/reference/platforms/ios-safari/) — another platform
  with its own install-flow constraints distinct from Chromium's.
- [PWAs on Chrome and Android](/reference/platforms/chrome-android/) — the
  `beforeinstallprompt`-driven install flow this entry's fallback code branches
  away from on Firefox.