Cookie Store API
================

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

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

The **Cookie Store API** is an asynchronous API for managing cookies, available in windows and also service workers.

**Note:** This feature is available in Web Workers

Concepts and Usage
------------------

The existing method of getting and setting cookies involves working with `document.cookie` as a string of key/value pairs. In addition to this being cumbersome and error prone, it also has a host of issues in the context of modern web development.

The `document.cookie` interface is synchronous, single-threaded, and blocking. When writing a cookie you must wait for the browser to update the string of all cookies. In addition, the reliance on `document` means that cookies cannot be accessed by service workers which cannot access the `document` object.

The *Cookie Store API* provides an updated method of managing cookies. It is asynchronous and promise-based, therefore does not block the event loop. It does not rely on `document` and so is available to service workers. The methods for getting and setting cookies also provide more feedback by way of error messages. This means that web developers do not have to set then immediately read back a cookie to check that setting was successful.

Interfaces
----------

`CookieStore` 
Experimental

The `CookieStore` interface enables getting and setting cookies.

`CookieStoreManager` 
Experimental

The `CookieStoreManager` interface provides a service worker registration to enable service workers to subscribe to cookie change events.

`CookieChangeEvent` 
Experimental

A `CookieChangeEvent` named `change` is dispatched against `CookieStore` objects in `Window` contexts when any script-visible cookies changes occur.

`ExtendableCookieChangeEvent`

An `ExtendableCookieChangeEvent` named `cookiechange` is dispatched in `ServiceWorkerGlobalScope` contexts when any script-visible cookie changes occur that match the service worker's cookie change subscription list.

### Extensions to other interfaces

`ServiceWorkerGlobalScope.cookieStore` Read only  
Experimental

Returns a reference to the `CookieStore` object associated with the service worker.

`ServiceWorkerRegistration.cookies` Read only  
Experimental

Returns a reference to the `CookieStoreManager` interface, which enables a web app to subscribe to and unsubscribe from cookie change events.

`Window.cookieStore` Read only  
Experimental

Returns a reference to the `CookieStore` object for the current document context.

`cookiechange` event 
Experimental

Fired when any cookie changes have occurred which match the service worker's cookie change subscription list.

Specifications
--------------

| Specification |
| --- |
| Cookie Store API  |

Browser compatibility
---------------------

### api.CookieStore

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.CookieStoreManager

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* Service Worker API