v150 · removal · privacy sandbox

Storage Access Migration Guide

A step-by-step migration wizard from document.requestStorageAccessFor() to its recommended replacements. Identify your use case, compare old vs. new code, and run live tests to see what Chrome 150 actually returns.

Chrome 150: document.requestStorageAccessFor() is removed. Calls throw a TypeError. Migrate to document.requestStorageAccess() called from inside the embedded iframe, or use CHIPS for partitioned cookie storage.

Which use cases apply to you?

Check every pattern your site currently relies on. Step 2 will show the replacement for each one.

Code replacements

Select a scenario to see the old pattern next to its replacement.

Before — Chrome <150 (removed)
// Top-level page context
// Requests access on behalf
// of embedded.example

await document.requestStorageAccessFor(
  "https://embedded.example"
);
// Grants unpartitioned cookie
// access to embedded.example
After — Chrome 150+ (recommended)
// Inside the iframe at
// embedded.example, after a
// user gesture:

const granted =
  await document.requestStorageAccess({
    all: true
  });

// Or check first:
const has =
  await document.hasStorageAccess();
if (!has) {
  await document.requestStorageAccess();
}
The key architectural change: the embedded context must request access, not the top-level page. This requires a user gesture inside the iframe and restructuring any logic that previously ran at the top level.

Live test

Run the old and new API shapes in this browser and see what each returns. Results reflect your actual Chrome version.

Test A — requestStorageAccessFor (removed in Chrome 150)

Calls document.requestStorageAccessFor("https://example.com") from a top-level context. Chrome 150 removes this method entirely.

not run — click the button above.
Test B — hasStorageAccess (still present)

Calls document.hasStorageAccess() — the probe that replaces the old check. Available in Chrome, Firefox, and Safari.

not run — click the button above.
Test C — requestStorageAccess (replacement)

Calls document.requestStorageAccess() from the top-level page context. Note: this normally requires an iframe context — this test shows the rejection message you will see from the top-level context.

not run — click the button above.

Deprecation timeline

How the requestStorageAccessFor API evolved and where Chrome stands today.

Chrome 119
document.requestStorageAccessFor() ships as an origin trial alongside Related Website Sets as part of the Privacy Sandbox initiative.
Chrome 128
API becomes generally available. RWS grants automatic storage access to member sites. requestStorageAccessFor allows top-level pages to trigger access on behalf of embedded origins.
Chrome 136
Google announces reversal of third-party cookie deprecation. The Privacy Sandbox infrastructure that requestStorageAccessFor and RWS were built to support is no longer necessary.
Chrome 148
Deprecation warnings begin appearing in DevTools console for any call to document.requestStorageAccessFor(). document.requestStorageAccess() continues to work.
Chrome 150 — current
document.requestStorageAccessFor is removed from the Document prototype. Calls throw TypeError: document.requestStorageAccessFor is not a function. RWS membership no longer grants automatic storage access. Migrate to requestStorageAccess() inside embedded iframes or use CHIPS.
Future
document.requestStorageAccess(), document.hasStorageAccess(), and the Partitioned cookie attribute (CHIPS) remain supported. These are the cross-browser standard path for cross-site storage use cases.

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗