READ ONLY TODO: mv Notion or Zenn

アウトプット場所

service worker

Fetch html

Install event happen

navigator.serviceWorker.register(/sw.js)

Resolve install promise

self.addEventListener(install, event => {  
  event.waitUntil(somePromise);  
});

Waiting if a sw has already worked

Activate event happen

self.addEventListener(activate, event => {  
});

Each of these happen

After activation,

  • go another page
  • reload
  • call clients.claim()

Handle event

self.addEventListener(fetch, event => {  
});

Introduce new version of sw

Change sw contents

Install success

Waiting

Some happen

  • Close all tab that show the domain
  • skipWaiting()

activate

Caution

Dont change sw url

Update may skip some version

eg v2 -> v6(v3~5 has been not installed)

SPA

Page navigation never happen.
So user should close and open to get sw effects.

You should call
skipWaiting
and
clients.claim()

So you should implements sw that work together with old sw version.

if ('serviceWorker' in navigator) {
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/service-worker.js')
      .then(reg => {
        setInterval(() => {
          reg.update() 
        }, 15000) // Your update span
      });
  });
}