The web app manifest is a JSON file that tells the browser how your site should
behave when it is installed as an app. It declares the app’s identity (name, icons,
id), its installation boundary (scope), how it renders once launched (display),
and OS integration points such as shortcuts and share_target.
The specification defines the manifest as an application manifest linked with
rel="manifest"; every member below is optional in the format itself. What a given
browser requires before it will offer installation is a separate, browser-specific
question: see Install prompt rather than
assuming the spec settles it.
Identity: name and short_name label the
install prompt and the home-screen icon; id pins the app’s
identity so a changed URL does not create a second install.
Entry and boundary: start_url is what launches;
scope fences which URLs stay inside the app window.
scope manifest memberThe scope member is the URL prefix that marks which pages belong to an installed web app; navigation outside it keeps the app window but brings browser UI back.
start_url manifest memberstart_url is the same-origin URL an installed PWA opens from the home screen, the place to tag launches for analytics, and one input to the app identity.
id manifest memberid identifies an installed PWA independently of start_url, so the launch URL can change without the browser treating the manifest as a second app.
name and short_name manifest membersname is the full label of an installed web app and short_name the label for tight spaces such as a home screen; Chromium requires one of them before it offers installation.
display manifest memberThe display member picks how much browser UI an installed web app keeps: fullscreen, standalone, minimal-ui, or browser, on a fixed fallback chain.
display_override manifest memberdisplay_override lists display modes in priority order ahead of the display fallback chain, letting a PWA request window-controls-overlay or tabbed safely.
icons manifest membericons lists the images a browser and OS use for an installed PWA (src, sizes, type, purpose); it gates Chromium installability and Android maskable shapes.
theme_color and background_color manifest memberstheme_color tints the title bar, status bar, and task switcher of an installed PWA; background_color fills the splash screen and window until the first paint.
screenshots manifest memberThe screenshots member lists wide or narrow images that Chrome 94 on Android and Chrome 105 on desktop show in the richer install dialog; Safari ignores it.
shortcuts manifest memberThe shortcuts array adds quick-action entries to the long-press or right-click menu of an installed PWA icon, each opening an in-scope URL instead of start_url.
share_target manifest memberThe share_target member registers an installed PWA in the OS share sheet and delivers shared text, URLs, and files to an in-scope URL by GET or multipart POST.
file_handlers manifest memberfile_handlers registers an installed PWA as the OS opener for named MIME types and extensions; window.launchQueue then hands the opened file to the page.
handle_links manifest memberhandle_links is a WICG proposal letting an installed PWA ask to open in-scope links in its own window. No engine ships it; Chrome 155 drops the member silently.
launch_handler manifest memberThe launch_handler member's client_mode decides whether launching an installed web app focuses an existing window, navigates it, or opens a new one; Chrome and Edge 110 implement it.
lang, dir, and *_localized manifest memberslang and dir set the default language and text direction of a manifest; the *_localized members carry per-language name, short_name, description, and icons, shipped in Chrome and Edge 148.
related_applications and prefer_related_applicationsrelated_applications lists a PWA's native or web counterparts by platform, url, and id; prefer_related_applications makes Chrome on Android offer one instead.
edge_side_panel manifest memberThe Edge-only edge_side_panel member and its preferred_width property pin a PWA to the Microsoft Edge sidebar; Microsoft deprecated it in July 2026.
widgets manifest memberThe widgets array registers Adaptive Cards widgets for the Windows 11 Widgets Board, rendered and refreshed by the PWA's service worker on widgetinstall.
scope_extensions manifest memberscope_extensions lists other origins an installed web app treats as in scope, each confirmed by a web-app-origin-association file; Chrome 138 ships it.
tabbed display mode and tab_strip manifest memberThe tabbed display_override value gives an installed PWA its own tab strip, and the tab_strip member configures its pinned home tab and new-tab button.
categories manifest memberThe categories member is an array of lowercase strings naming the store sections a web app belongs in; browsers parse it but render nothing from it.
description manifest memberThe description member explains what a web app does; Chrome 88 and Edge 88 show it in the richer install dialog, Firefox and Safari parse it and do nothing.
orientation manifest memberThe orientation member asks for a default screen orientation for an installed web app window; Chrome on Android honours it, desktop browsers and Safari do not.
protocol_handlers manifest memberprotocol_handlers registers an installed web app in the OS as the handler for URL schemes such as mailto or web+note; Chrome 96 and Edge 96, desktop only.
How installed PWAs pick up manifest changesChrome re-checks an installed PWA's manifest about once a day, applies changes after all app windows close, and updates different fields on desktop and Android.