ServiceWorkerGlobalScope: activate event

Baseline
Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

>

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is only available in Service Workers.

The activate event of the ServiceWorkerGlobalScope interface is fired when a ServiceWorkerRegistration acquires a new ServiceWorkerRegistration.active worker.

This event is not cancelable and does not bubble.

Syntax

Use the event name in addEventListener():

js
addEventListener("activate", (event) => { })

Alternatively, assign to the event handler property of the interface:

js
onactivate = (event) => { }

Event type

An ExtendableEvent. Inherits from Event.

Event ExtendableEvent

Examples

The following snippet shows how you could use an activate event handler to upgrade a cache.

js
self.addEventListener("activate", (event) => {
  const cacheAllowlist = ["v2"];

  event.waitUntil(
    caches.keys().then((cacheNames) =>
      Promise.all(
        cacheNames.map((cacheName) => {
          if (!cacheAllowlist.includes(cacheName)) {
            return caches.delete(cacheName);
          }
          return undefined;
        }),
      ),
    ),
  );
});

You can also set up the event handler using the onactivate property (but note that this replaces other event listeners added using onactivate, if any):

js
self.onactivate = (event) => {
  // …
};

Specifications

Specification
Service Workers Nightly>
# service-worker-global-scope-activate-event>
Service Workers Nightly>
# dom-serviceworkerglobalscope-onactivate>

Browser compatibility

See also