Chrome extensions changed shape between 2021 and 2026, and most people only noticed when something they relied on stopped working or started doing less. The change has a name, Manifest V3, and it is smaller than the noise around it: three things changed, not a hundred. One of them is why the full uBlock Origin no longer runs on Chrome. One is why an extension sometimes acts as if it just woke up. The third you will probably never see.
Everything below comes from Google's and Mozilla's own developer documentation, Brave's and Microsoft's own announcements, and uBlock Origin's own FAQ, read on 30 August 2026.
Why does the full uBlock Origin not run on Chrome anymore?
Because Manifest V3 removed the API it was built on. The full uBlock Origin used the blocking webRequest API, which let an extension inspect every network request as it happened and decide, in that moment, whether to allow it, block it or redirect it. Manifest V3 deprecates that in favour of declarativeNetRequest, where the extension registers a list of rules ahead of time and the browser matches requests against them. [1] The extension writes the rules; it never sees the traffic.
Google frames this as a privacy and performance gain, and half of that is genuinely true. Its documentation describes declarativeNetRequest as letting an extension "modify network requests without intercepting them and viewing their content". [2] A blocker on the old API could read the URL and the body of every request the browser made. A blocker on the new one cannot, and a content blocker is one of the most privileged things most people ever install, so that is not a small thing.
The other half is capability. declarativeNetRequest caps how many rules an extension can use: Chrome guarantees a static ruleset of "at least 30,000 rules", plus a comparable dynamic allowance, and past that floor the number available "depends on how many rules are enabled by all the extensions installed on a user's browser". [2] The old API had no such ceiling. The new API also cannot enforce a rule based on "the top context, i.e. the URL in the address bar", in uBlock Origin's own words, [6] which is what breaks per-site toggling and dynamic filtering.
What Chrome users get instead is uBlock Origin Lite, a separate extension by the same author, written to fit the new API. It is a good blocker. It is also, by design, a narrower one. Its own FAQ says it has "no filter lists proper" and instead ships compiled rulesets that update only when the extension itself updates, does no generic cosmetic filtering unless you raise its blocking mode to Complete, and drops the per-site dynamic controls the full version was built around. [6] The author calls it "suitable for those who used uBO in an install-and-forget manner" rather than a replacement. [6]
If you block ads on Chrome, you are almost certainly on Lite already, because uBlock Origin's own site now lists only the Lite build for Chrome. [7] The roundup of productivity extensions that still work goes through which blocker to install on which browser.
What actually changed: three things
Manifest V3 is three platform changes. Almost everything else people attribute to it is downstream of these.
| Change | Manifest V2 | Manifest V3 |
|---|---|---|
| Background code | A page that stayed loaded for the life of the browser | A service worker that starts on an event and stops when idle |
| Network blocking | webRequest: inspect each request and decide | declarativeNetRequest: register rules, the browser enforces them |
| Where code runs from | Could load and run script from a remote URL | All executable code ships inside the extension |
The ad-blocker story is the second row. The next two sections are the first and third.

Why does an extension act like it just woke up?
Because its background is now a service worker, and service workers stop running when nothing is happening. In Manifest V2 an extension had a background page that stayed in memory from the moment the browser started. In Manifest V3 that is a service worker, which Google describes as running "only when needed": [1] it starts when an event it registered for fires, and Chrome shuts it down "after 30 seconds of inactivity". [3]
When it shuts down, its memory goes with it. Google's documentation is blunt about this: "any global variables you set will be lost if the service worker shuts down". [3] An extension that kept a running total, a cache or a "you are signed in" flag in a variable now has to write all of it to chrome.storage or IndexedDB and read it back every time the worker wakes.
For a well-written extension you never notice. For others the seams show: a first click after a quiet period that takes a beat while the worker spins back up, a counter that resets, a background sync that silently stops until something pokes it. None of that is a bug in the ordinary sense. It is the cost of a background context that is no longer always there.
TheTab went through exactly this. Its background is a service worker, so it holds nothing in memory between events: every saved-tab group, every setting and every counter is written to storage as it changes, because the code cannot assume it will still be running a minute later. That is more defensive than a Manifest V2 extension had to be, and it is now the default shape of the platform.
What does "no remotely hosted code" mean?
An extension can no longer download and run code from a web server. All of its executable code has to ship in the package you install. Under Manifest V2 an extension could add a <script> tag pointing at a remote URL, or fetch a script and run it. Manifest V3 forbids that. Google's definition is anything "executed by the browser that is loaded from someplace other than the extension's own files", and it notes this "does not include data or things like JSON or CSS", [4] so configuration and content pulled from a server are still fine. Only code is blocked.
This is the change with the fewest visible symptoms and the clearest security case. Remote code meant the version of an extension a store reviewer approved was not necessarily the version running on your machine a week later. Closing that gap also means feature changes now wait for a store review instead of being pushed from a server, which is slower for the developer and, on balance, safer for you.
Which of your other extensions are affected?
Anything that blocked or rewrote network requests is affected in what it can do. Everything else is affected only in plumbing. A content blocker, a tracker blocker or a privacy extension on Chrome now works through declarativeNetRequest and its limits. A password manager, a grammar checker, a screenshot tool or a tab manager kept its abilities; what changed underneath is the background context, which is why some of them had a rough run of updates through 2024 and 2025.
One case catches people out: an extension that has not been updated in years. Chrome disabled every Manifest V2 extension with Chrome 138, and users "can no longer turn them back on". [5] If an extension you depend on shows a "last updated" date somewhere in 2023 and no newer version, it may simply be gone on a current Chrome, with nothing in its place. The store listing date is the fastest thing to check.
If you want to see exactly what an extension is asking the browser for, what a Chrome permission prompt leaves out covers how to read the list and why it is shorter than the manifest behind it.
Is Manifest V3 actually more private?
For the specific risk of a blocker silently reading your traffic, yes. On the broader question of who you are trusting, Manifest V3 moves the trust rather than removing it. An extension on declarativeNetRequest genuinely cannot see the requests it is filtering, [2] which is a real reduction in what a compromised or malicious blocker could do.
What it does not do is make the decision go away. A declarative blocker still ships a ruleset, and that ruleset decides what you see. You are trusting the person who compiled it just as much as before; you are only trusting them with less standing access. Whether that is the right trade depends on whether you were worried about the blocker's live access to your browsing or about the blocker's judgement, and Manifest V3 addresses the first and not the second.
What did each browser decide to do?
Chrome went furthest. Manifest V2 extensions were disabled for all users with Chrome 138, the enterprise policy that held them open ends with Chrome 139, and the last of them left the Chrome Web Store in August 2026. [5] There is no route back to Manifest V2 on Chrome.
Firefox took the opposite position and has put it in writing. Mozilla supports Manifest V3, but it has "no plans to deprecate" Manifest V2, it still supports the blocking webRequest API alongside declarativeNetRequest, and it never adopted Chrome's service-worker background model, keeping event pages instead. [8] If it ever changes its mind, it has committed to "at least 12 months" of notice. [8] The full uBlock Origin runs on Firefox because of that.
Brave sidestepped the question. Its ad and tracker blocking, Shields, is part of the browser rather than an extension, so it does not "rely on MV2 or MV3" either way. [9] Brave additionally hosts four Manifest V2 extensions on its own servers, the full uBlock Origin among them, installed from brave://settings/extensions/v2. [9]
Edge is a step behind Chrome. Microsoft began retiring Manifest V2 in August 2026, wants consumers done by the end of the year and managed devices done in early 2027, and says "95% of the top MV2 extensions on the Edge Add-ons website already moved to MV3". [10]
If a browser change is on the table for other reasons too, the browser tab-management comparison and what Firefox already ships in the box both go through what each browser includes without an extension.
The short version

- If you block ads on Chrome or Edge, you are on a Manifest V3 blocker like uBlock Origin Lite, and it does less than the full version by design. That is the trade, and it is not reversible on those browsers.
- An extension with a "last updated" date in 2023 and no newer release may already be dead on a current Chrome. Check the store listing before you rely on it.
- The occasional slow first click or reset counter is the service worker model, not a fault. The background is allowed to stop now.
- Firefox and Brave kept the older capabilities. If a full-strength blocker matters to you, that is a real reason to run one of them for it.
The honest version sits between the two loud ones. Manifest V3 made running an extension a little safer and writing a powerful one a good deal harder, and both of those are true at once.
SOURCES
Every factual claim in this article traces to a source below. Where we could not source a claim, we removed it rather than softening it.
Google's own summary of what Manifest V3 changes. It states that the background context moved "to service workers, which run only when needed", that "Manifest V3 removes the ability for an extension to use remotely hosted code, which presents security risks by allowing unreviewed code to be executed in extensions", and that the blocking webRequest API is deprecated in favour of declarativeNetRequest as "a safer alternative for many use cases".
States that declarativeNetRequest lets an extension "modify network requests without intercepting them and viewing their content, thus providing more privacy". Defines GUARANTEED_MINIMUM_STATIC_RULES as 30,000 and MAX_NUMBER_OF_DYNAMIC_RULES as 30,000, and states that beyond the guaranteed static floor the number of available rules "depends on how many rules are enabled by all the extensions installed on a user's browser". Page last updated 5 May 2026.
States that Chrome terminates an extension service worker "after 30 seconds of inactivity" and that "receiving an event or calling an extension API resets this timer", and that "any global variables you set will be lost if the service worker shuts down", so state must be held in chrome.storage or IndexedDB.
Defines remotely hosted code as "anything that is executed by the browser that is loaded from someplace other than the extension's own files. Things like JavaScript and WASM", and states that it "does not include data or things like JSON or CSS". States that under Manifest V3 "extensions now need to bundle all code they are using inside the extension itself".
States that "with Chrome 138 all users on all channels of Chrome have now Manifest V2 extensions disabled. Users can no longer turn them back on", that "the ExtensionManifestV2Availability policy will be removed with Chrome 139" and that this "will affect all users on Chrome 139 simultaneously", and that as of August 2026 "all remaining Manifest V2 extensions are removed from the Chrome Web Store". Page last updated 8 July 2026.
uBlock Origin's author on how uBlock Origin Lite differs from uBlock Origin under Manifest V3. States that declarativeNetRequest lacks "the ability to enforce rules according to the top context, i.e. the URL in the address bar", which is why dynamic filtering and per-site switches cannot work; that uBOL has "no filter lists proper" and instead uses compiled declarative rulesets packaged at build time, so it "never makes network requests to any remote servers" and updates only when the extension itself updates; that generic cosmetic filtering is off unless the blocking mode is raised to Complete; and that uBOL is "suitable for those who used uBO in an install-and-forget manner" rather than a full replacement.
uBlock Origin's own site lists full support for Firefox (recommended) and Brave, and lists only uBlock Origin Lite for Chrome and Chromium. Edge and Opera are listed as currently supporting the full extension.
States that "Firefox, however, has no plans to deprecate MV2 and will continue to support MV2 extensions for the foreseeable future", that Mozilla "continue to support DOM-based background scripts in the form of Event pages, and the blocking webRequest feature", that Chrome's service-worker background model is one "we do not support yet", and that "if we re-evaluate this decision at some point down the road, we anticipate providing a notice of at least 12 months for developers to adjust accordingly".
States that "Manifest V3 will not weaken Brave Shields in any way" and that "since Shields are patched directly onto the open-source Chromium codebase, they don't rely on MV2 or MV3". States that Brave hosts four Manifest V2 extensions - AdGuard, NoScript, uBlock Origin and uMatrix - installable from brave://settings/extensions/v2, as independent builds separate from the Chrome Web Store versions. Published 27 June 2024, last updated 11 July 2025.
States that "starting in August 2026, a subset of users with MV2 extensions installed will begin to see notices on the Manage Extensions page", that "over the next few months, MV2 extensions will be gradually turned off by default" beginning on Canary, Dev and Beta before Stable, that "the goal is to complete the consumer transition by the end of 2026, with enterprise deprecation following in early 2027", and that "95% of the top MV2 extensions on the Edge Add-ons website already moved to MV3". Published 7 August 2026.
