[{"data":1,"prerenderedAt":256},["ShallowReactive",2],{"learn-\u002Flearn\u002Fmanifest-v3-your-adblocker":3,"learn-around-\u002Flearn\u002Fmanifest-v3-your-adblocker":247},{"id":4,"title":5,"body":6,"category":224,"description":225,"draft":226,"extension":227,"meta":228,"navigation":229,"path":230,"publishedAt":231,"readingTime":232,"seo":233,"sources":234,"stem":244,"updatedAt":245,"__hash__":246},"learn\u002Flearn\u002Fmanifest-v3-your-adblocker.md","Your ad blocker changed: the Manifest V3 story",{"type":7,"value":8,"toc":214},"minimark",[9,13,18,31,34,38,77,80,84,87,96,105,108,132,135,139,145,151,154,160,164,170,179,185,191,194,198,201,204,211],[10,11,12],"p",{},"If your ad blocker stopped working, or quietly got worse, you're not imagining it. The rules\nchanged underneath it.",[14,15,17],"h2",{"id":16},"what-a-manifest-is","What a manifest is",[10,19,20,21,25,26,30],{},"Every browser extension ships with a file called ",[22,23,24],"code",{},"manifest.json",". It's the extension's\ndeclaration of itself: its name, its version, what permissions it wants, and which browser\ncapabilities it uses. The manifest ",[27,28,29],"em",{},"version"," is which edition of the rulebook the extension is\nwritten against — what it's allowed to ask for, and how.",[10,32,33],{},"Manifest V2 was the rulebook for over a decade. Manifest V3 replaced it. The change matters\nbecause of one specific capability that went away.",[14,35,37],{"id":36},"the-timeline","The timeline",[39,40,41,53,59,65,71],"ul",{},[42,43,44,48,49,52],"li",{},[45,46,47],"strong",{},"2018–2019"," — Google publishes the first Manifest V3 proposals. Developers of content\nblockers immediately object to the removal of blocking ",[22,50,51],{},"webRequest",".",[42,54,55,58],{},[45,56,57],{},"2020–2024"," — Repeated delays. Manifest V3 becomes mandatory for new submissions, then for\nupdates, while existing V2 extensions keep working.",[42,60,61,64],{},[45,62,63],{},"2025"," — Chrome begins disabling Manifest V2 extensions. Users see their blocker switched\noff, often with a prompt suggesting a replacement.",[42,66,67,70],{},[45,68,69],{},"Chrome 139"," — Manifest V2 support is gone from the browser entirely. Extensions still\ninstalled on Chrome 138 or earlier survive, but stop receiving updates.",[42,72,73,76],{},[45,74,75],{},"31 August 2026"," — The remaining Manifest V2 extensions, including the full uBlock Origin,\nare removed from the Chrome Web Store. Version 1.74 was the last stable uBO release to reach\nit.",[10,78,79],{},"If you installed uBlock Origin before the cutoff and stayed on an old Chrome, you technically\nstill have it — unpatched, unupdatable, and unable to be reinstalled if it's ever removed. That\nis not a plan.",[14,81,83],{"id":82},"what-manifest-v3-actually-limits","What Manifest V3 actually limits",[10,85,86],{},"This is where the discussion usually goes wrong in both directions. MV3 is neither the end of ad\nblocking nor a harmless bit of housekeeping.",[10,88,89,90,95],{},"Under MV2, an extension could use ",[45,91,92,93],{},"blocking ",[22,94,51],{},": the browser handed it each network\nrequest before it happened, ran the extension's own code, and did whatever the extension decided.\nArbitrary logic, at the moment of the request.",[10,97,98,99,104],{},"Under MV3, that's replaced by ",[45,100,101],{},[22,102,103],{},"declarativeNetRequest",". The extension registers its rules in\nadvance and the browser does the matching. The extension never sees the individual request and\nnever makes the decision.",[10,106,107],{},"The practical consequences:",[39,109,110,116,126],{},[42,111,112,115],{},[45,113,114],{},"Rule caps."," An extension can only register so many rules, with a further cap on dynamic ones\nadded at runtime. Large community filter lists used to run to hundreds of thousands of entries.",[42,117,118,121,122,125],{},[45,119,120],{},"No decisions based on what's happening."," A rule can say \"block this URL pattern\". It cannot\nsay \"block this ",[27,123,124],{},"if"," the response looks like a tracker\" or \"if this script tries that\".",[42,127,128,131],{},[45,129,130],{},"Slower responses to new tricks."," Under MV2, a filter list update fixed things immediately.\nUnder MV3, some changes need an extension update and a store review.",[10,133,134],{},"What still works: blocking by URL pattern, hiding elements with CSS, and the large majority of\nordinary ad and tracker blocking. Most people's day-to-day experience of a good MV3 blocker is\nfine. It's the adversarial edge — sites that actively fight blockers, and newly-invented tracking\ntechniques — where the ceiling is real.",[14,136,138],{"id":137},"the-argument","The argument",[10,140,141,142,144],{},"Google's case: performance, security, and privacy. Extensions with blocking ",[22,143,51],{}," can read\nevery request you make, including sensitive ones, and a slow or malicious extension sits directly\nin the path of every page load. Declarative rules can't spy on traffic and can't stall it.",[10,146,147,148,150],{},"That case is not nonsense. A compromised extension with blocking ",[22,149,51],{}," is genuinely\ndangerous, and extensions do get sold to new owners who add surveillance to them.",[10,152,153],{},"The counter-argument: Google's revenue is overwhelmingly advertising, and it is writing the rules\nfor the software that removes advertising. Even if every engineering justification is offered in\ngood faith, the company deciding how capable ad blockers may be is the company that sells the\nads. Critics also note that the limits fall hardest on exactly the blocking that works best,\nwhile the stated security benefits could have been pursued with narrower permissions.",[10,155,156,157,159],{},"Both things are true at once: there were real problems with blocking ",[22,158,51],{},", and the\nsolution happened to constrain a category of software that costs Google money. You don't have to\npick a villain to notice the conflict of interest.",[14,161,163],{"id":162},"your-options-today","Your options today",[10,165,166,169],{},[45,167,168],{},"uBlock Origin Lite"," — the MV3 version from the same developer, still in the Chrome Web Store.\nDeliberately simpler: it does less per-site fiddling and has no dynamic filtering. For most\npeople, most of the time, it's good. It is not the same tool.",[10,171,172,175,176,178],{},[45,173,174],{},"Firefox"," — still supports the full uBlock Origin with blocking ",[22,177,51],{},". Mozilla\nimplemented MV3 while keeping the capability. If your blocking matters more than anything else,\nthis is the straightforward answer.",[10,180,181,184],{},[45,182,183],{},"Brave"," — Chromium-based, with blocking built into the browser rather than delegated to an\nextension, so it isn't bound by the extension rulebook in the same way.",[10,186,187,190],{},[45,188,189],{},"Safari"," — its own extension system and its own limits, which is a different article.",[10,192,193],{},"There is no option that is both \"stay in Chrome\" and \"keep exactly what you had\". That trade is\ngone.",[14,195,197],{"id":196},"why-were-building-for-manifest-v3-from-day-one","Why we're building for Manifest V3 from day one",[10,199,200],{},"We could have written an MV2 extension. It would have been more capable on paper and dead on\narrival.",[10,202,203],{},"Can I Throw This? is being built MV3-native: declarative rules where they fit, and effort spent\non the part MV3 doesn't restrict at all — reading the page in front of you.",[10,205,206,207,210],{},"That's worth being precise about, because it's the strategic bet behind this whole project. MV3\nlimits what an extension may do to ",[27,208,209],{},"network requests",". It does not limit an extension's ability\nto look at the page you're already on and tell you what it's doing to you. A countdown timer that\nresets on reload, a reject button buried a layer deeper than accept, a clipboard that filled\nitself — all of that is visible in the page, on your device, with no network interception\nrequired.",[10,212,213],{},"So the ceiling MV3 imposes on blocking doesn't apply to the thing we think matters most. We'd\nrather build the part that can't be legislated away by a rulebook change, and be honest that\nblocking under MV3 has limits nobody can engineer around.",{"title":215,"searchDepth":216,"depth":216,"links":217},"",2,[218,219,220,221,222,223],{"id":16,"depth":216,"text":17},{"id":36,"depth":216,"text":37},{"id":82,"depth":216,"text":83},{"id":137,"depth":216,"text":138},{"id":162,"depth":216,"text":163},{"id":196,"depth":216,"text":197},"browser-landscape","On 31 August 2026 Google removed the last Manifest V2 extensions, including the full uBlock Origin, from the Chrome Web Store. Here's what changed, what it limits, and what your options are.",false,"md",{},true,"\u002Flearn\u002Fmanifest-v3-your-adblocker","2026-09-19",7,{"title":5,"description":225},[235,238,241],{"label":236,"url":237},"Chrome for Developers: Manifest V2 support timeline","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fextensions\u002Fdevelop\u002Fmigrate\u002Fmv2-deprecation-timeline",{"label":239,"url":240},"uBlock Origin: Manifest V2 and the Chrome Web Store","https:\u002F\u002Fgithub.com\u002Fgorhill\u002FuBlock\u002Fwiki\u002FManifest-V2-and-the-Chrome-Web-Store",{"label":242,"url":243},"CyberInsider: Google removes uBlock Origin from Chrome Web Store in final Manifest V2 purge (September 2026)","https:\u002F\u002Fcyberinsider.com\u002Fgoogle-removes-ublock-origin-from-chrome-web-store-in-final-manifest-v2-purge\u002F","learn\u002Fmanifest-v3-your-adblocker",null,"0y2QJgmU4tNMn0Y01Wx2c2EPzLxQn0oNIbCzZ3LpYfI",[248,252],{"title":249,"path":250,"stem":251,"children":-1},"Cookie banners and how to actually say no","\u002Flearn\u002Fcookie-banners-real-rejection","learn\u002Fcookie-banners-real-rejection",{"title":253,"path":254,"stem":255,"children":-1},"What are dark patterns? A plain-language field guide","\u002Flearn\u002Fwhat-are-dark-patterns","learn\u002Fwhat-are-dark-patterns",1790177868640]