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.
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.
| Milestone | Chrome version | Date | Months before June 2026 |
|---|---|---|---|
| MV3 required for new CWS submissions | — | January 2022 | ~53 |
| MV2 phase-out begins in pre-stable (Dev/Canary/Beta) | Chrome 127 | June 2024 | ~24 |
| MV2 disabling reaches stable Chrome | Chrome 127+ stable | October 10, 2024 | ~20 |
Enterprise ExtensionManifestV2Availability exemption ends | Chrome 139 | Mid-2025 | ~12 |
| Residual MV2 flag closing for normal users | Chrome 150–151 line | June 2026 | 0 |
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.
| Capability | Manifest V2 | Manifest V3 |
|---|---|---|
| Background execution | Persistent background page (always running) | Ephemeral service worker (Chrome can terminate it) |
| Network blocking | webRequest (blocking, runtime interception) | declarativeNetRequest (static rules, Chrome-evaluated) |
| Request/response inspection | Full read and modify in real time | URL-pattern matching; no response-body modification |
| Remote-hosted code | Allowed (fetch and run external JS) | Banned — all code ships inside the package |
| Host permissions | Broad, granted at install | More 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 model | Persistent page | Service worker |
| Network blocking | webRequest (dynamic) | declarativeNetRequest (186,645 static rules) |
| Status on current stable Chrome | Disabled since Oct 2024 rollout | Unaffected — runs normally |
| Per-request JS overhead | Yes (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?
Will my MV2 extension still work in Chrome?
What is the main difference between Manifest V2 and V3?
Is MV3 worse for ad blockers?
Why did uBlock Origin split into two versions?
Can I still install Manifest V2 extensions anywhere?
Don't miss the next release
Be first to know when we ship something new.
Related Articles
Does uBlock Origin Still Work on Chrome in 2026? Yes, Here's How
Yes. uBlock Origin v1.71.0 is live on the Chrome Web Store, still MV2, ~14M users, blocking YouTube ads in June 2026. Long-term MV2 support stays uncertain.
Is uBlock Origin Removed from Chrome? 2026 MV3 Truth
uBlock Origin was disabled by Chrome 138's MV2 sunset, not deleted. It returned (v1.70.0) on March 11, 2026 — still MV2. Status, what changed, what still works.
uBlock Origin vs Lite: Which Do You Actually Need? (2026)
Both uBlock Origin and uBlock Origin Lite work on Chrome 149. Full uBO blocks more; uBOL uses less CPU. Which fits your setup, and when neither is enough.
Which Chrome Ad Blocker Blocks YouTube? 5 TESTED (2026)
Most Chrome ad blockers miss YouTube and Twitch video ads — including uBlock Origin. We tested 5 on 14 features. One blocks video ads, popups, and cookies.