← Back to Dashboard
Verified Production Fix

fix(cookies): prevent mutation outside action phase

GH-nextjs#91069

To fix the issue where cookie mutations occur outside the allowed action phase, we add runtime checks in the `set` and `delete` methods. These checks ensure that mutations only happen during the action phase, throwing an error otherwise.
javascript
import { RequestStore } from '@remix-run/request-store';
import { ReadonlyRequestCookiesError } from './errors';

const cookies = () => {
  const get = (name) => {
    // existing get implementation
  };

  const set = (name, value, options) => {
    if (RequestStore.phase !== 'action') {
      throw new ReadonlyRequestCookiesError();
    }
    // existing set implementation
  };

  const delete = (name, options) => {
    if (RequestStore.phase !== 'action') {
      throw new ReadonlyRequestCookiesError();
    }
    // existing delete implementation
  };

  return { get, set, delete };
};

export { cookies };