Progressive Web Apps

What are they?

  • Web apps on the home screen
  • Launched as standalone (full-screen) apps
  • Hook into push notifications
  • Better offline experience
  • Resilient to connection issues

Requirements

  • Has a manifest file
  • Served over HTTPS
  • Have a registered service worker

Manifest file

{
  "short_name": "BBC News",
  "name": "BBC News",
  "icons": [
    {
      "src": "launcher-icon-2x.png",
      "sizes": "96x96",
      "type": "image/png"
    },
    {
      "src": "launcher-icon-3x.png",
      "sizes": "144x144",
      "type": "image/png"
    }
  ],
  "start_url": "/",
  "display": "standalone",
  "orientation": "landscape"
}
<link rel="manifest" href="/manifest.json">

Service workers

  • Responds to events including network requests
  • Run in the background, separate from page
  • Only wakes up long enough to process events
  • Intercept & cache network requests
  • Construct arbitrary responses
  • Handle push notifications
this.addEventListener('install', event => {
  event.waitUntil(
    caches.open('v1').then(cache => {
      return cache.addAll([
        '/news/blogs-news-from-elsewhere-36586189',
        '/news/blogs-news-from-elsewhere-36561197',
        '/news/world-us-canada-36541261',

        '/styles/core.css',
        '/styles/enhanced.css',

        '/js/main.js'
      ])
    })
  )
})
this.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => response || fetch(event.request))
  )
})
this.addEventListener('push', event => {  
  console.log('Look mum, push notifications!', event)

  event.waitUntil(  
    this.registration.showNotification('BREAKING NEWS: Sheep', {  
      body: 'BBC News is receiving reports of sheep.',  
      icon: '/images/notifications/emergency-sheep.png',  
      tag: 'you-can-tag-notifications'  
    })  
  )  
})

But we have a native app!

Native apps are an investment

  • Find the app
  • Decide you like it
  • Download it
  • Open it
  • Put it on your home screen

PWAs are an upsell

  • You're already on the site
  • Decide you like it
  • Put it on your home screen

Offline experience

Resilience

Performance

Spamming push notifications

Better serving the user

(Gently) improving engagement

Progressive Web Apps

By Joseph Wynn

Progressive Web Apps

Lightning talk on PWAs.

  • 1,721