従来の JavaScript では Cookie の管理は document.cookie
を使用して文字列で行われていました。しかし、文字列での Cookie 管理は面倒で間違いやすいです。また document.cookie
は同期的に動作するため、Cookie の更新が完了するまでイベントループがブロックされてしまいます。さらに document
オブジェクトに依存しているため、Web Worker や Service Worker などの非同期環境では使用できません。
このような問題を解決するために、非同期 API CookieStore
が導入されました。CookieStore
は非同期的に Cookie の読み書きを行うことができ、さらに Cookie の属性をオブジェクトとして扱うことができます。
以下の例では、CookieStore
を使用して Cookie を設定します。
await cookieStore.set({
name: 'session',
value: 'abc123',
domain: 'example.com',
expires: new Date(Date.now() + 3600 * 1000),
});
cookieStore.get
もしくは cookieStore.getAll
を使用して Cookie を取得できます。cookieStore.delete
を使用して Cookie を削除することもできます。
const sessionCookie = await cookieStore.get('session');
const allCookies = await cookieStore.getAll();
await cookieStore.delete('session');
CookieStore
API は Baseline 2025 で導入されており、すべてのモダンなブラウザでサポートされています。