In short

Browser extensions used to be able to inspect every network request your browser made and decide whether to block it in real time. That's how uBlock Origin, Privacy Badger, and quality content blockers worked. Chrome's Manifest V3 (2024) replaced that capability with a rule-list system that caps how many rules an extension can have and disables runtime decisions. Google's stated reason was security and performance. The practical effect was that Chrome's most-installed extension, uBlock Origin, couldn't keep working in its full form, and was eventually removed. The 'Lite' replacement blocks fewer things.

What changed

Manifest V2 (the old rules) gave extensions a powerful API called webRequest. Extensions could see every request the browser was about to make and decide, for each one, whether to block it. uBlock Origin used this to:

  • Block requests based on the content type (image, script, font, etc.)
  • Block based on the page that made the request (allow on the publisher, block on the third-party tracker)
  • Run regex and complex logic on URLs
  • Update its blocklist instantly without going through the Chrome Web Store review

Manifest V3 replaced webRequest with declarativeNetRequest. The new API takes a fixed list of rules that the browser interprets internally, the extension never gets to make decisions in real time. There's a hard cap on how many rules an extension can have. Updates to the rule list have to ship through Chrome Web Store updates.

Why it broke ad blocking

uBlock Origin's blocklists are large and updated frequently. Both of those broke under Manifest V3. The author documented the differences in detail; the short version is:

  • The full version of uBlock Origin couldn't keep working under V3, so it was pulled from Chrome.
  • uBlock Origin Lite was built specifically to fit V3's constraints. It does less.
  • Other quality blockers (Adguard, Ghostery) shipped V3-compatible versions with similar trade-offs.

Why Google did it

The official reason was security and performance, the old webRequest API gave extensions enormous reach, including the ability to read the entire HTTP traffic of every tab. There's a real argument that this was over-privileged.

The practical reason that lots of people noticed: Google's primary business is ads. The browser whose new rules limit ad blockers is owned by the largest ad company in the world. The two facts don't necessarily mean the change was malicious, but the optics are not great.

How browsers responded

Firefox kept Manifest V2 alongside V3, so the full uBlock Origin still works there. Brave, Vivaldi, Opera, and Edge all use Chromium and inherit V3. Most of them ship their own built-in ad blockers that aren't bound by extension rules, which is the long-term workaround. Dazr does the same: a built-in network-layer ad blocker, with the same blocklists uBlock Origin uses, that doesn't have to fit through Chrome's extension API at all.