Skip to main content
Guide

Manifest V2 vs V3 Chrome Extensions: What Changed (2026)

Manifest V2 has been disabled in stable Chrome since October 2024. What MV3 changed, why uBlock Origin split, and what still works as of June 2026.

6 min read Verified Chrome 150

Manifest V2 has been disabled in stable Chrome since October 10, 2024, when Google began rolling the shutdown out to standard users. Manifest V3 replaced it with ephemeral service workers, the declarativeNetRequest (DNR) blocking API, and a ban on remote-hosted code. As of June 2026, MV2 is effectively dead on Chrome, with only a closing developer flag still remaining.

Key takeaways

  • MV2 is not “about to” be disabled — it already was, starting in stable Chrome from October 2024. The common “Chrome 149 is the last to support MV2” claim is wrong.
  • MV3’s four changes: service workers replace background pages, declarativeNetRequest replaces blocking webRequest, remote code is banned, host permissions tightened.
  • MV3-built extensions keep working. The disruption hit MV2-only tools like full uBlock Origin, not extensions that were MV3-native from the start.

If you searched “is Manifest V2 dead” or “Chrome Manifest V3 explained,” this page is the dated, self-contained answer. The short version: the migration is essentially over for normal users, and the confusion in most write-ups comes from treating a 2024 event as a future one.

The MV2-to-MV3 Timeline, Anchored to June 2026

Manifest V3 was introduced in 2019 and 2020 and became mandatory for new Chrome Web Store submissions in January 2022. The phase-out of MV2 then ran in stages over the following years. The verified sequence appears below, with each date anchored against this article’s June 2026 publication.

MilestoneChrome versionDateMonths before June 2026
MV3 required for new CWS submissionsJanuary 2022~53
MV2 phase-out begins in pre-stable (Dev/Canary/Beta)Chrome 127June 2024~24
MV2 disabling reaches stable ChromeChrome 127+ stableOctober 10, 2024~20
Enterprise ExtensionManifestV2Availability exemption endsChrome 139Mid-2025~12
Residual MV2 flag closing for normal usersChrome 150–151 lineJune 20260

The single most common error in articles on this topic is the claim that some recent Chrome version “is the last to support MV2.” That framing is roughly two years stale. MV2 has been disabled in the stable channel since the October 2024 rollout. The enterprise policy that let managed machines delay it was removed with Chrome 139 in mid-2025. By the Chrome 150 stable release (around June 30, 2026), even the developer flag workaround is closing.

The exact version where the last flag dies is contested — some analysis points to Chrome 150 still allowing it partially, other reports say Chrome 151 locks it down. Treat it as the “150–151 line,” not a single clean cutoff.

What Manifest V3 Actually Changed

MV3 is not a cosmetic version bump. It rewrote four parts of the extension model, and each one broke a category of older extension behavior.

CapabilityManifest V2Manifest V3
Background executionPersistent background page (always running)Ephemeral service worker (Chrome can terminate it)
Network blockingwebRequest (blocking, runtime interception)declarativeNetRequest (static rules, Chrome-evaluated)
Request/response inspectionFull read and modify in real timeURL-pattern matching; no response-body modification
Remote-hosted codeAllowed (fetch and run external JS)Banned — all code ships inside the package
Host permissionsBroad, granted at installMore granular, more user-controllable

The background-page change is the one most developers feel first. Under MV2, an extension’s background page stayed loaded for the whole session, holding state in memory. Under MV3, the service worker is ephemeral: Chrome spins it up to handle an event and shuts it down when idle. Any state that needs to survive has to be written to chrome.storage, because in-memory variables vanish when the worker stops.

The networking change is the one that made headlines. Blocking webRequest let an MV2 extension intercept every request, inspect it, and decide in JavaScript whether to block, redirect, or modify it. That is maximally flexible and maximally powerful. declarativeNetRequest flips the model: the extension hands Chrome a set of static rules ahead of time, and Chrome’s own engine does the matching without ever running extension code per request. That is faster and more privacy-preserving by design, since the extension never sees the request stream. It is also more constrained, because the extension cannot make per-request decisions in code.

Why This Broke uBlock Origin (and Not Everything Else)

The MV3 networking change hit one specific technique hardest: real-time dynamic filtering. Full uBlock Origin relies on blocking webRequest for dynamic per-site rules, cosmetic filtering, and its element picker. Those depend on running JavaScript against the live request stream, which MV3 does not allow.

Rather than strip those features to fit MV3, uBlock Origin’s author kept the full version on MV2 and shipped a separate MV3 build called uBlock Origin Lite. Lite uses only declarativeNetRequest. It blocks less, has no element picker, and drops cosmetic filtering, but it survives the Chrome MV2 phase-out. The result is the two-listing confusion that trips up most users: full uBO (MV2, now disabled on current Chrome) and uBO Lite (MV3, alive). For the full breakdown, see uBlock Origin vs Lite and does uBlock Origin still work on Chrome.

The key nuance that most coverage misses: MV3 limits one blocking technique, not ad blocking as a category. declarativeNetRequest supports large static rule sets evaluated natively by Chrome. An extension built MV3-first around DNR runs a high rule count with zero per-request JavaScript overhead. That is the opposite of the “MV3 kills ad blocking” headline.

What “MV3-Native” Means in Practice

Plenty of extensions were never affected by the phase-out, because they were built on Manifest V3 from the start. Their blocking runs through declarativeNetRequest, their background logic lives in a service worker that tolerates being shut down, and they ship no remote code. SuperchargePerformance is one example: it runs 186,645 DNR rules compiled from 22 curated filter sources, evaluated natively by Chrome’s engine, alongside tab suspension via chrome.tabs.discard(). Because that architecture is MV3-native, the October 2024 shutdown and the Chrome 139 enterprise-policy removal changed nothing about how it works.

MV2-only tool (e.g. full uBlock Origin)MV3-native tool (e.g. SuperchargePerformance)
Background modelPersistent pageService worker
Network blockingwebRequest (dynamic)declarativeNetRequest (186,645 static rules)
Status on current stable ChromeDisabled since Oct 2024 rolloutUnaffected — runs normally
Per-request JS overheadYes (runtime interception)None (Chrome evaluates rules)

This is the honest framing of the whole transition. MV3 was painful specifically for tools whose core feature depended on the MV2 webRequest API. For everything built on DNR and service workers, the version cutover was a non-event. If your extensions kept working through 2024 and 2025, that is why.

Whether You Need to Do Anything

  • Wondering if MV2 is dead → yes, on current stable Chrome, since the October 2024 rollout; only a closing developer flag remains as of June 2026.
  • An extension you relied on stopped working in 2024 or 2025 → it was MV2-only. Look for its MV3 replacement on the Chrome Web Store rather than trying to re-enable MV2.
  • You want full uBlock Origin’s dynamic filtering specifically → that capability lives on Firefox now, which kept MV2-style webRequest. On Chrome, uBlock Origin Lite is the MV3 substitute, with reduced coverage.
  • You just want ad and tracker blocking that works under MV3 → any DNR-based blocker, including uBlock Origin Lite or SuperchargePerformance, runs fine on current Chrome.
  • You are a developer maintaining an MV2 extension → the migration window is over for users; an MV3 rebuild is the only path that keeps your extension installable on Chrome.

Frequently Asked Questions

Is Manifest V2 dead?
As of June 2026, Manifest V2 is effectively dead for normal Chrome users. Google began disabling MV2 extensions in pre-stable Chrome 127 (June 2024) and rolled the shutdown into stable Chrome from October 10, 2024. The enterprise ExtensionManifestV2Availability policy, which let managed machines keep MV2 running, was removed with Chrome 139 in mid-2025. The only thing left is a residual ExtensionManifestV2Disabled developer flag, and that is being closed across the Chrome 150 to 151 line (Chrome 150 reached stable around June 30, 2026). Treat MV2 as gone unless you are running an old, frozen Chrome build.
Will my MV2 extension still work in Chrome?
As of June 2026, no — not on current stable Chrome. Any extension still built on Manifest V2 has been disabled in the standard channel since the October 2024 rollout, and the enterprise exemption that delayed this for managed devices ended with Chrome 139 in mid-2025. If an extension you rely on still works, it has almost certainly been rebuilt on Manifest V3, or you are on a Chrome version old enough to be a security risk. The fix is to find the MV3 version of that extension on the Chrome Web Store, not to keep the MV2 build alive.
What is the main difference between Manifest V2 and V3?
Manifest V3 made four structural changes. Persistent background pages became ephemeral service workers that Chrome can shut down at any time. The blocking webRequest API, which let extensions inspect and modify every network request in real time, was replaced by declarativeNetRequest (DNR), where the extension submits static rules and Chrome's own engine does the matching. Remote-hosted code is banned — all executable code must ship inside the extension package. And host permissions moved toward a more granular, user-controllable model. These four changes are why some MV2 extensions could not be ported one-to-one.
Is MV3 worse for ad blockers?
As of June 2026, it depends on the blocker's design. MV3's declarativeNetRequest caps how dynamic an ad blocker's network rules can be, which is why uBlock Origin's full dynamic filtering does not run unchanged under MV3. The author shipped uBlock Origin Lite as a separate MV3 build instead. But MV3 is not fatal to blocking in general — declarativeNetRequest supports large static rule sets, and extensions like SuperchargePerformance run 186,645 curated DNR rules natively with zero per-request JavaScript. MV3 limits one specific technique (real-time dynamic filtering), not ad blocking as a category.
Why did uBlock Origin split into two versions?
As of June 2026, uBlock Origin's full version depends on the MV2 webRequest API for dynamic filtering, cosmetic filtering, and per-site rules — capabilities that MV3's declarativeNetRequest cannot fully replicate. Rather than strip those features to fit MV3, the author kept full uBlock Origin on MV2 and built a separate, simpler MV3 extension called uBlock Origin Lite. Lite uses only declarativeNetRequest, blocks less, and has no element picker or cosmetic filtering, but it survives the MV2 phase-out on Chrome where the full version does not.
Can I still install Manifest V2 extensions anywhere?
As of June 2026, the Chrome Web Store stopped accepting new Manifest V2 submissions in January 2022, and current stable Chrome disables existing MV2 extensions. The only realistic place MV2 still runs is Firefox, which never adopted Chrome's MV3 phase-out and supports MV2-style webRequest blocking. On Chrome itself, a developer can briefly re-enable MV2 with the ExtensionManifestV2Disabled flag, but that workaround is closing across the Chrome 150 to 151 line and is not a stable long-term option for everyday browsing.

Don't miss the next release

Be first to know when we ship something new.

Related Articles