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 — fullscreen →
standalone → minimal-ui → browser — 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.
The four display values
Section titled “The four display values”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— likestandalonebut 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.
The fallback chain
Section titled “The fallback chain”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 usesstandalone, thenminimal-ui, thenbrowser. - You only ever need to set the highest mode you want — the chain handles the rest.
browseris the terminal value: it always works and never adds an app window.
display_override for newer modes
Section titled “display_override for newer modes”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_overrideentry in order, then falls back todisplay. window-controls-overlaylets 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_overridedegrades gracefully on older browsers that still honor the plaindisplayvalue.
Browser & ecosystem support
Section titled “Browser & ecosystem support”| Browser / Platform | Support | Since | Confidence | Source | Notes |
|---|---|---|---|---|---|
| Chrome (Android) | ✅ yes | 39 | high | ref | — |
| Chrome (Desktop) | ✅ yes | 73 | high | ref | — |
| Edge (Desktop) | ✅ yes | 79 | high | ref | — |
| Safari (iOS) | ✅ yes | 11.3 | medium | ref | standalone honored; minimal-ui falls back to standalone. |
| Safari (macOS) | ✅ yes | 17 | medium | ref | — |
| Firefox (Desktop) | ❌ no | — | medium | ref | No desktop install path consuming display. |
| Samsung Internet | ✅ yes | 4.0 | high | ref | — |
Display, installability, and scope
Section titled “Display, installability, and scope”- Installability. Most browsers require a display value of
standalone,fullscreen, orminimal-uito offer install. A manifest set tobrowsertypically disqualifies the install prompt. - Scope interaction.
displaydecides how much chrome an in-scope page shows;scopedecides which URLs count as in-app. When the user navigates out ofscope, the browser re-exposes the address bar regardless of yourdisplaymode — display can’t keep off-scope pages chrome-free. - Start context. The chosen mode applies from
start_urlonward; deep links that land in-scope inherit the same display treatment.
Choosing a display mode
Section titled “Choosing a display mode”| 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. |
Practical checklist
Section titled “Practical checklist”- 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
browserif you want the install prompt to appear. - For newer modes, list them in
display_overrideand keep a safedisplayfallback. - If you use
window-controls-overlay, test the title-bar drawing area and provide a usable layout when the overlay isn’t granted. - Confirm
scopealigns with your app paths —displaywon’t hide chrome off-scope. - Test the installed launch on each target platform; OS chrome differs even in
standalone.