Skip to content

Manifest Basics

A minimal manifest must have enough information for the browser to install the app and display it correctly. The table below lists the most important fields:

FieldRequiredPurpose
nameYesFull app name shown in install prompts and the app launcher
short_nameRecommendedTruncated name for home screens with limited space
start_urlYesURL the app opens when launched from the home screen
scopeRecommendedURL prefix that defines which pages are “inside” the app
idRecommendedStable identifier; prevents duplicate installs across URL changes
descriptionRecommendedShort blurb shown in app stores and install UI
langRecommendedPrimary language of the manifest content (e.g. "en")
dirRecommendedText direction: "ltr", "rtl", or "auto"
{
"name": "My Awesome PWA",
"short_name": "AwesomePWA",
"id": "/",
"start_url": "/",
"scope": "/",
"description": "A fast, offline-capable progressive web app.",
"lang": "en",
"dir": "ltr",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#5A0FC8",
"icons": [
{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" }
]
}

name vs short_namename is displayed in the install dialog and splash screen. short_name is used on the home screen where space is tight (Android typically truncates at around 12 characters). If short_name is omitted, the browser falls back to name.

start_url — This is where the app navigates to when a user taps its icon. Use "/" to start at the root. You can also append query params to track installs: "/?source=pwa".

scope — Any navigation outside the scope forces the browser to open a regular browser tab instead of staying in the standalone window. Keep scope equal to "/" for single-origin apps, or narrow it to a sub-path like "/app/" if your marketing pages should stay outside the PWA shell.

id — A stable string that uniquely identifies the app. If you later change start_url, the browser will not create a duplicate install as long as id stays the same. Set it to "/" or a permanent URL path.

lang and dir — These tell assistive technology and the OS which language and text direction to use for the app’s name and description.

The playground below serves a minimal manifest. Open it in StackBlitz and check the DevTools Application → Manifest panel to verify every field is parsed correctly.

Runs a real service worker + manifest in your browser.
Which field is used to identify the app stably across start_url changes?
What happens when a user navigates to a URL outside the manifest scope in a standalone PWA?
What is short_name used for?
Which fields tell assistive technology and the OS about the app language and text direction?