Web app manifest

A web app manifest is a JSON file, usually served at /manifest.json and linked from the page head, that tells the operating system how a web app should behave when installed: its name, its icons, the address it opens at and whether it launches in its own window or a browser tab.

The fields that actually matter

A manifest is short, and most of it is metadata the operating system reads once at install time:

Published NorthernGo apps are served a generated /manifest.json with display: "standalone" and a maskable icon, so the app opens from its own icon rather than inside a tab.

Where it goes wrong

Three failure modes cover almost everything.

Icons that look broken after install. Android applies its own mask, so a square logo with content at the edges gets clipped. Building the icon with a safe margin, or shipping a separate maskable version, is the fix — see the app icon guide.

A start_url outside the scope. If the start address falls outside the manifest scope, the app opens in a normal browser tab and the install looks half-broken.

Expecting the manifest to do more than it does. This is the common misconception: a manifest makes an app installable, not offline-capable and not faster. Everything about working without a connection lives in the service worker. A site with a perfect manifest and no service worker installs beautifully and then shows a blank screen on a train.

The manifest is also read at install time, so changing an icon or a name does not update apps that are already on someone's home screen until they reinstall.

Frequently asked questions

Is a web app manifest enough to make an app installable?

Almost. Chrome and Android also require HTTPS and a registered service worker with a fetch handler before the install prompt appears. iOS is looser about the service worker but only installs from the Share menu in Safari, so there is no prompt to trigger.

Build it yourself

NorthernGo turns a plain-text description into a working web app with a database, login and a live URL. Local AI generation runs on your own GPU, is unlimited, and is free on every plan.

Start building free