PWA Starter: Manifest

Manifest

The first, and easier, aspect of a PWA is the manifest. This is a JSON file that holds information about the content and gives supporting browsers hints and instructions for installing the content in the user’s homescreen.

<link rel="manifest" href="/manifest.json" />

The manifest itself is a JSON file that contanins information about the application. The sample manifest below contains the following information:

  • name: Full name of the application
  • short name: Short name of the application
  • description
  • icons: An array of available icons to use for different aspects of the application
  • (default) orientation
  • start_url: The entry point for the application
  • display: how is the application UI presented to the user
  • background_color while the application is loading
  • text direction: rtl, ltr
  • lang: default language
{
  "name": "BookReader",
  "short_name": "BookReader",
  "description": "An ebook reader application",
  "icons": [{
    "src": "images/touch/homescreen48.png",
    "sizes": "48x48",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen72.png",
    "sizes": "72x72",
    "type": "image/png"
  }, {
    "src": "images/touch/homescreen144.png",
    "sizes": "144x144",
    "type": "image/png"
  }],

  "orientation": "portrait",
  "start_url": "index.html?utm_source=homescreen",
  "display": "standalone",
  "background_color": "#fff",
  "dir": "ltr",
  "lang": "en-us",
}

Orientation may be one of the following values:

  • any
  • natural
  • landscape
  • portrait

There are additional values for orientation that I’m researching. I think they move the app to primary or secondary display but, as far as I understand them, only landscape and portrait are currently supported. The additional values are:

  • landscape-primary
  • landscape-secondary
  • portrait-primary
  • portrait-secondary

The display mode attribute controls how much of the browser’s chrome and UI is show for your application. Each of the 4 modes in the table below falls back to the next one on the table, except for browser, which is the default.

Display Mode Description Fallback Display Mode
fullscreen All of the available display area is used for content and none of the browser chrome is visible. standalone
standalone The application will look and feel like a standalone application. In this mode, the user agent will exclude UI elements for controlling navigation, but can include other UI elements such as a status bar. minimal-ui
minimal-ui The application will look and feel like a standalone application, but will have a minimal set of UI elements for controlling navigation. The included elements vary by browser. browser
browser This is the default mode. The application opens in a conventional browser tab or new window, depending on the browser and platform. (None)

 

Splash Screen

Chrome 47 and later, display a splash screen for a web application launched from a home screen. This splashscreen is auto-generated using properties in the web app manifest, specifically: name, background_color, and the icon in the icons array that is closest to 128dpi for the device.

Even if it’s not a PWA, the ability to save a web site or app to the homescreen greatly improves the user experience for the content.