Service Workers & Progressive Web Apps

What is the best practice for handling PWA updates?
let newWorker;

navigator.serviceWorker.addEventListener('controllerchange', () => {
  if (newWorker) {
    showUpdateNotification();
  }
});

navigator.serviceWorker.register('/sw.js').then(registration => {
  registration.addEventListener('updatefound', () => {
    newWorker = registration.installing;
    newWorker.addEventListener('statechange', () => {
      if (newWorker.state === 'installed') {
        if (navigator.serviceWorker.controller) {
          showUpdateAvailable();
        }
      }
    });
  });
});
Next Question (18/20)