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.
Use the event name in methods like addEventListener(), or set an event handler property.
addEventListener("activate", (event) => { })
onactivate = (event) => { }
An ExtendableEvent. Inherits from Event.
Doesn't implement any specific properties, but inherits properties from its parent, Event.
The following snippet shows how you could use an activate event handler to upgrade a cache.
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:
self.onactivate = (event) => {
// …
};
| Specification |
|---|
| Service Workers> # service-worker-global-scope-activate-event> |
| Service Workers> # dom-serviceworkerglobalscope-onactivate> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
activate_event |
40 | 17 | 44 | 24 | 11.1 | 40 | 44 | 24 | 11.3 | 4.0 | 40 | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/activate_event