Skip to content

Manifest display modes: standalone, fullscreen, minimal-ui, browser

In one line: display tells the browser how much of its own UI to strip when your installed PWA launches. The four values form a fallback chain — fullscreenstandaloneminimal-uibrowser — so an unsupported value quietly degrades to the next one down. standalone is the common default for an app-like window; display_override unlocks newer modes like window-controls-overlay.

  • fullscreen — uses the entire screen, no browser UI and no OS status bar where the platform allows. Best for immersive content like games or media.
  • standalone — opens in its own window with no address bar and no tab strip, but keeps OS-level chrome (status bar, back gesture). This is the typical “feels like a native app” choice.
  • minimal-ui — like standalone but the browser keeps a minimal set of navigation controls (often back/forward/reload). Useful when users navigate a lot and benefit from visible controls.
  • browser — opens in a normal browser tab or window with full chrome. Effectively declines an app-like window; on many browsers this also suppresses the install prompt.

Each value falls back down the list when the browser or platform doesn’t support it:

fullscreen → standalone → minimal-ui → browser
  • Request fullscreen; if unsupported, the browser uses standalone, then minimal-ui, then browser.
  • You only ever need to set the highest mode you want — the chain handles the rest.
  • browser is the terminal value: it always works and never adds an app window.

display alone can’t express modes outside the fixed chain. display_override is an ordered array the browser walks before falling back to display:

{
"display": "standalone",
"display_override": ["window-controls-overlay", "minimal-ui"],
"scope": "/app/"
}
  • The browser tries each display_override entry in order, then falls back to display.
  • window-controls-overlay lets your content draw into the title-bar area on desktop — useful for custom toolbars in productivity apps.
  • tabbed (where supported) gives an installed app its own tab strip.
  • Unknown entries are skipped, so display_override degrades gracefully on older browsers that still honor the plain display value.
Browser / PlatformSupportSinceConfidenceSourceNotes
Chrome (Android)✅ yes39highref
Chrome (Desktop)✅ yes73highref
Edge (Desktop)✅ yes79highref
Safari (iOS)✅ yes11.3mediumrefstandalone honored; minimal-ui falls back to standalone.
Safari (macOS)✅ yes17mediumref
Firefox (Desktop)❌ nomediumrefNo desktop install path consuming display.
Samsung Internet✅ yes4.0highref

Source: spec · MDN · Last verified 2026-06-24 · Confidence: high

  • Installability. Most browsers require a display value of standalone, fullscreen, or minimal-ui to offer install. A manifest set to browser typically disqualifies the install prompt.
  • Scope interaction. display decides how much chrome an in-scope page shows; scope decides which URLs count as in-app. When the user navigates out of scope, the browser re-exposes the address bar regardless of your display mode — display can’t keep off-scope pages chrome-free.
  • Start context. The chosen mode applies from start_url onward; deep links that land in-scope inherit the same display treatment.
Product need Recommended display Why
Immersive game or media player fullscreen Maximizes screen, removes all chrome where allowed.
General app-like experience standalone App window without address bar; still installable.
Content users navigate heavily minimal-ui Keeps back/forward/reload controls visible.
Custom desktop title-bar UI display_override: ["window-controls-overlay"] + display: "standalone" Draws into the title bar; falls back to standalone.
Want to stay a normal website browser No app window; usually no install prompt.
Maximize install eligibility standalone (or fullscreen/minimal-ui) browser disqualifies the install prompt on most browsers.
  • Set the single highest mode you want; let the fallback chain handle older browsers.
  • Use display: "standalone" unless you have a specific reason for another mode.
  • Avoid browser if you want the install prompt to appear.
  • For newer modes, list them in display_override and keep a safe display fallback.
  • If you use window-controls-overlay, test the title-bar drawing area and provide a usable layout when the overlay isn’t granted.
  • Confirm scope aligns with your app paths — display won’t hide chrome off-scope.
  • Test the installed launch on each target platform; OS chrome differs even in standalone.