Display Override
Overview
The display_override property allows you to specify a preferred display mode with multiple fallbacks for cases where certain display modes are not supported by the platform or browser. This provides graceful degradation and ensures your PWA displays optimally across different environments.
How It Works
The browser evaluates display modes in the display_override array from left to right. The first supported mode is used. If no mode in the array is supported, the browser falls back to the display property.
Evaluation Order:
Try first mode in
display_overrideIf not supported, try next mode
Continue until a supported mode is found
If none supported, use
displaypropertyIf
displaynot supported, usebrowser
Configuration
Basic Configuration
pwa:
manifest:
enabled: true
display: "standalone" # Fallback if display_override not supported
display_override: ["fullscreen", "minimal-ui"]Fallback chain: fullscreen → minimal-ui → standalone → browser
Complete Example
Evaluation:
Try
fullscreen(for media/games)If not available, try
window-controls-overlay(for desktop apps)If not available, try
minimal-uiIf not available, use
standalone(from display property)
Display Modes
fullscreen
Description: Uses all available display area with no browser UI visible. Ideal for immersive experiences.
Use Cases:
Games
Video players
Image galleries
Presentation apps
Immersive media experiences
Platform Support:
✅ Android Chrome (full support)
⚠️ Desktop (varies by browser)
❌ iOS Safari (not supported)
Example:
User Experience:
No address bar
No browser controls
No status bar
Fullscreen content
Exit typically via system gesture
standalone
Description: The application looks and feels like a standalone native application with its own window and app icon.
Use Cases:
Most PWAs
Productivity apps
Social media apps
E-commerce apps
Default recommended mode
Platform Support:
✅ Android Chrome
✅ iOS Safari
✅ Desktop browsers
✅ Windows (installed PWAs)
Example:
User Experience:
Separate window
Own app icon
System status bar (mobile)
No address bar
No browser back/forward buttons
minimal-ui
Description: Looks like a standalone app but includes a minimal set of UI elements for navigation (browser-dependent).
Use Cases:
Content-focused apps
Reading apps
News applications
Blog platforms
When you want minimal browser UI
Platform Support:
✅ Some Android browsers
⚠️ Implementation varies widely
❌ Many browsers treat as
standalone
Example:
User Experience:
Similar to standalone
May include back button
May include reload button
Varies by browser/platform
browser
Description: Opens in a conventional browser tab or window with full browser UI.
Use Cases:
Progressive enhancement
Apps that benefit from browser context
Default fallback
Development/testing
Platform Support:
✅ All browsers (default behavior)
Example:
User Experience:
Standard browser tab
Address bar visible
Browser navigation buttons
Browser menu
Standard web experience
window-controls-overlay
Description: Desktop-only mode that provides maximum window surface area with window controls (minimize, maximize, close) as an overlay.
Use Cases:
Desktop-focused apps
Productivity tools
Code editors
Design tools
Apps needing maximum screen space
Platform Support:
✅ Desktop Chrome/Edge (Windows, macOS, Linux)
❌ Mobile (ignored)
❌ iOS (not supported)
Example:
User Experience:
Full window surface for content
Title bar controls as overlay
Custom title bar possible
Maximize content area
Desktop-optimized
JavaScript Integration:
Browser Support
fullscreen
✅
✅
❌
⚠️
✅
standalone
✅
✅
✅
✅
✅
minimal-ui
⚠️
⚠️
❌
❌
⚠️
browser
✅
✅
✅
✅
✅
window-controls-overlay
✅*
✅*
❌
❌
❌
*Desktop only
Use Cases by Application Type
1. Media/Gaming App
Prioritize immersive fullscreen experience:
Reasoning: Games benefit from fullscreen. Falls back to standalone on iOS.
2. Productivity App (Desktop-focused)
Maximize workspace on desktop:
Reasoning: Desktop users get maximum screen space. Mobile users get standalone.
3. Content Reader
Minimal UI for focused reading:
Reasoning: Tries for minimal UI, falls back to well-supported standalone.
4. E-Commerce App
Standard app-like experience:
Reasoning: Standalone is widely supported and provides app-like experience without experimental features.
5. Progressive Enhancement
Start with browser, offer better experiences:
Reasoning: Works everywhere, enhances to standalone where supported.
6. Multi-Platform App
Different experiences for desktop and mobile:
Reasoning: Desktop gets window controls overlay, mobile might get fullscreen, everyone gets at least standalone.
Testing Display Modes
1. Chrome DevTools
2. Install and Check
3. JavaScript Detection
4. Test Across Platforms
Window Controls Overlay (Advanced)
For desktop apps using window-controls-overlay, you can customize the title bar area.
Detecting Window Controls Overlay
Custom Title Bar with WCO
Best Practices
1. Always Provide Fallbacks
2. Order from Most to Least Specific
3. Consider Platform Differences
4. Test on Real Devices
Don't rely solely on DevTools:
Install on actual Android device
Install on actual iOS device
Install on Windows/macOS/Linux desktop
Test in different browsers
5. Provide CSS Fallbacks
Common Mistakes
1. No Fallback Display
Problem:
Solution:
2. Wrong Order
Problem:
Solution:
3. Assuming Support
Problem:
Solution:
4. Not Testing iOS
Problem: Assuming fullscreen works like on Android
Solution: Always test on iOS Safari - fullscreen is not supported, falls back to standalone
5. Ignoring Browser Tab Mode
Problem: Only designing for standalone mode
Solution: Ensure app works in browser tab mode too (progressive enhancement)
Troubleshooting
Display Mode Not Applied
Problem: App doesn't use expected display mode
Checklist:
✓ Check browser support for requested mode
✓ Verify manifest is valid JSON
✓ Ensure app is installed, not just bookmarked
✓ Check DevTools → Application → Manifest
✓ Try uninstalling and reinstalling PWA
✓ Clear browser cache
Window Controls Overlay Not Working
Problem: Desktop app doesn't show window controls overlay
Solutions:
Verify using desktop Chrome/Edge
Check that PWA is installed (not running in tab)
Ensure
display_overrideincludes"window-controls-overlay"Check DevTools console for errors
Verify CSS uses correct environment variables
Fullscreen Mode Issues on Mobile
Problem: App doesn't go fullscreen on mobile
Solutions:
Check if platform supports fullscreen (Android: yes, iOS: no)
Verify manifest has
display_override: ["fullscreen"]Ensure app is launched from home screen
Some browsers require user gesture for fullscreen
Platform-Specific Behavior
Android
fullscreen: Fully supported, hides system UI
standalone: Full support, standard app mode
minimal-ui: May fallback to standalone
browser: Standard browser tab
iOS (Safari)
fullscreen: Not supported, falls back to standalone
standalone: Full support, hides Safari UI
minimal-ui: Not supported, falls back to standalone
browser: Standard Safari tab
Desktop (Chrome/Edge)
window-controls-overlay: Full support on Windows/macOS/Linux
fullscreen: Supported (F11 equivalent)
standalone: Creates separate window
minimal-ui: Usually falls back to standalone
Desktop (Firefox)
Limited PWA support overall
standalone: Some support
Other modes: Limited or no support
Related Documentation
Display Mode - Standard display property
Orientation - Screen orientation control
Complete Example - Full manifest example
Resources
MDN display_override: https://developer.mozilla.org/en-US/docs/Web/Manifest/display_override
Window Controls Overlay: https://developer.chrome.com/docs/web-platform/window-controls-overlay/
Display Modes Spec: https://w3c.github.io/manifest/#display-modes
Can I Use: https://caniuse.com/mdn-html_manifest_display_override
Last updated
Was this helpful?