What is a web app manifest?
A web app manifest (manifest.json or site.webmanifest) is a JSON file that provides metadata about your web application. It tells browsers how your app should behave when installed on a user's device.
What it enables
- "Add to Home Screen" — The install prompt on Android Chrome
- App-like experience — Opens without browser chrome (fullscreen or standalone)
- Custom icon and name — How your app appears on the home screen
- Splash screen — A loading screen when the app launches
- PWA features — Service workers, offline support, push notifications
- App stores — Required for submitting PWAs to Google Play via TWA
How to fix it
1. Create the manifest file
Create site.webmanifest in your public directory:
{
"name": "Your App Name",
"short_name": "App",
"description": "A brief description of your app",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#4285f4",
"icons": [
{
"src": "/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}2. Link it in your HTML
<link rel="manifest" href="/site.webmanifest" />Key manifest properties
| Property | Description |
|---|---|
name |
Full app name (shown in install dialog) |
short_name |
Short name (shown under home screen icon) |
start_url |
URL to open when the app launches |
display |
Display mode: standalone, fullscreen, minimal-ui, browser |
theme_color |
Toolbar color (matches the theme-color meta tag) |
background_color |
Splash screen background color |
icons |
Array of icon objects with src, sizes, and type |
Best practices
- Provide multiple icon sizes — At minimum 192x192 and 512x512
- Use
standalonedisplay — For the most app-like experience - Set
start_urlto "/" — Or a specific landing page for installed users - Include a maskable icon — For adaptive icon support on Android
- Validate — Use Chrome DevTools > Application > Manifest to check