4 ms·
I don't have a deep dive, but my understanding is that previous to Manifest V3 or Safari's content blocking extensions from years ago, it was a Javascript free-
by danpalmer 2y ago
I don't have a deep dive, but my understanding is that previous to Manifest V3 or Safari's content blocking extensions from years ago, it was a Javascript free-for-all. Extensions could run code on each network request, extensions could modify the DOM, they could do basically anything. This wasn't great for a number of reasons, including privacy, security, and energy performance on mobile devices.
Safari moved to a model for content blocking where the extensions could provide a list of domains, maybe regexes for elements or something, offline, then this would be "precompiled" in some way, and all rules from all extensions would be applied directly by the browser in a way that was faster and didn't disclose information about the things being blocked to the extensions.
My understanding of Manifest V3's controversial change is that is basically does this for Chrome.
Why is this a problem for uBlock? Because it does limit functionality a little more. You can't have the user directly pick apart the page in the same way, and blocking lists are of limited size. However Safari extensions have already worked around this by providing their own out-of-band user-defined blocking interfaces, and using multiple blocking lists, I'm not sure if that's possible with MV3. uBlock is one of the more feature-complete ad-blocking extensions, with a community of people who probably use those features more than average, so they're more impacted.
Whether it really ends up restricting the feature set that much I think remains to be seen. It might take more work to make those features work, but I expect the vast majority of users install adblockers and never think about them again, so perhaps that isn't necessary.
Disclaimer, I work at Google, but not on anything related to this. I use uBlock Origin on Chrome currently, and 1Blocker on iOS for Safari.