title: What is the use of `self.Clients.claim()`
body: <p>To register a service worker, I can call</p>
  
  <pre><code>navigator.serviceWorker.register('/worker.js')
  </code></pre>
  
  <p>Every time the page loads it checks for an updated version of <code>worker.js</code>. If an update is found, the new worker won't be used until all the page's tabs are closed and then re-opened.  The solution I read was:</p>
  
  <pre><code>self.addEventListener('install', function(event) {
    event.waitUntil(self.skipWaiting());
  });
  self.addEventListener('activate', function(event) {
    event.waitUntil(self.clients.claim());
  });
  </code></pre>
  
  <p>I can understand the skipWaiting part, but what exactly does <code>clients.claim()</code> do?  I've done some simple tests and it seems to work as expected even without it.</p>