ExtendableCookieChangeEvent

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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 ExtendableCookieChangeEvent interface of the Cookie Store API is the event type passed to cookiechange event fired at the ServiceWorkerGlobalScope when any cookie changes occur which match the service worker's cookie change subscription list. A cookie change event consists of a cookie and a type. (either "changed" or "deleted")

Cookie changes that cause the ExtendableCookieChangeEvent to be dispatched are:

  • A cookie is newly created and not immediately removed. In this case type is "changed".
  • A cookie is newly created and immediately removed. In this case type is "deleted"
  • A cookie is removed. In this case type is "deleted".

Note: A cookie that is replaced due to the insertion of another cookie with the same name, domain, and path, is ignored and does not trigger a change event.

Event ExtendableEvent ExtendableCookieChangeEvent

Constructor

ExtendableCookieChangeEvent()

Creates a new ExtendableCookieChangeEvent.

Instance properties

This interface also inherits properties from ExtendableEvent.

ExtendableCookieChangeEvent.changed Read only

Returns an array containing the changed cookies.

ExtendableCookieChangeEvent.deleted Read only

Returns an array containing the deleted cookies.

Instance methods

This interface also inherits methods from ExtendableEvent.

Examples

In the below example, we use CookieStoreManager.getSubscriptions() to get a list of existing subscriptions. (In service workers, a subscription is required in order to listen for events.) We unsubscribe from existing subscriptions using CookieStoreManager.unsubscribe(), then subscribe to the cookie with a name of 'COOKIE_NAME' using CookieStoreManager.subscribe(). If that cookie is changed, the event listener logs the event to the console. This will be an ExtendableCookieChangeEvent object, with the changed or deleted property containing the modified cookie.

js
self.addEventListener("activate", (event) => {
  event.waitUntil(async () => {
    const subscriptions = await self.registration.cookies.getSubscriptions();

    await self.registration.cookies.unsubscribe(subscriptions);

    await self.registration.cookies.subscribe([
      {
        name: "COOKIE_NAME",
      },
    ]);
  });
});

self.addEventListener("cookiechange", (event) => {
  console.log(event);
});

Specifications

Specification
Cookie Store API
# ExtendableCookieChangeEvent

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
ExtendableCookieChangeEvent
ExtendableCookieChangeEvent() constructor
changed
partitioned property
Experimental
deleted
partitioned property
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.