← notes

Manifest V3 never killed cosmetic filtering

Aug 10, 2026

Chrome's Manifest V2 removal killed uBlock Origin, and with it years of hand-written cosmetic filters people had tuned to their own annoyances. uBlock Origin Lite is declarative by design: no custom filters, no element picker. Get the custom filters back.

The premise is a correction. The widely repeated story is that MV3 killed content filtering. What MV3 removed is webRequestBlocking, the ability to intercept and cancel network requests. Cosmetic filtering was never network filtering, a host##selector rule is CSS injected by a content script, and MV3 still supports content scripts. So ohm parses uBO’s cosmetic syntax client-side and emits a real MV3 extension. No network access, no vendor, no account.

The permissions trade is not solvable, only choosable, so it ships both ways. The Web Store build requests all sites, because one shared install cannot know your hosts in advance. Building your own from a pasted list produces an extension naming only the hosts your rules cover. Procedural cosmetic filters are explicitly out of scope.

And on the Chrome Web Store.