The first ad blocker extension for Chrome that is compatible with Google’s Manifest V3 is now available.
An extension manifest outlines the permissions and abilities a developer includes in an extension for Chrome browser.
In version 3 of the manifest, Google changes the webRequest API to block extensions from modifying the data before it’s shown to the user, which renders ad-blockers useless.
The new ad-blocking extension that complies with Manifest V3 requirements comes from AdGuard, a developer of ad-blocking software. The extension is in an experimental stage.
It was released to help identify margins for improvement and solutions to limitations. Even so, it highlights the restricting nature of Manifest V3.
In the release announcement, AdGuard analyzes the workarounds they had to implement to comply to the latest requirements, the problems that still exist, and ideas for making the final version as functional as possible.
Manifest V3 impact
Manifest V3 was first announced in 2020 and became available with the release of Chrome 88, which came out in January 2021.
The Chrome Web Store stopped accepting extensions built on Manifest V2 in January 2022. All extensions using the previous version will stop working by January 2023.
From Google’s perspective, Manifest V3 comes to enhance user privacy and security by:
Limiting extension access to user network requests.
Forcing authors to include all functionality within the extension, ending the practice of hosting code remotely.
Moving network request modifications from the extensions to the browser.
Replacing background pages with dedicated service workers to improve browser performance.
Inevitably, the above features introduce severe limitations to special-purpose extensions like ad-blockers.
Limited ad-blocking actions
The new AdGuard extension is technically weaker than its predecessor. According to the vendor, compliance to the new protocol is the only reason for this backward step.
First, the new extension has to abide by a limit of 30,000 filtering rules and 5,000 dynamic rules set by the users themselves.
If the user has installed multiple ad-blocking extensions on their browser, a global limit of 330,000 filtering rules is applied, so AdGuard might have even smaller leeway.
The second problem is the inability to load rules to the filtering engine from the extension’s server. AdGuard now has to define a set of declarative rules and let Chrome handle the network request filtering process.
Because the new syntax for the rules is very limiting, not all existing rules can be converted, including Cookie rules that block certain trackers.
“negative lookahead” is often used in filters. A quick search showed that there are currently 43 rules with this expression in AdGuard filters. At first glance, this is not many, but keep in mind that most of these rules are supposed to work on many different domains, so I’d say this limitation alone cripples ad blocking on 1000+ websites. – AdGuard
The inability to refresh rules directly from the server will also cause delays in updating them and responding to new blocking requirements from website changes. AdGuard estimates these rule updates will now be “several days” apart.
The third issue ad-blockers face with Manifest V3 is that users can no longer look at the filtering logs (present in manifest V2) because the browser is now blocking the ads.
The only workaround is to unpack and install the extension in Developer Mode, which gives the software access to debugging options required to accept statistical data from the browser.
Finally, replacing the background page with a service worker causes performance issues, as the latter goes dormant when there’s no browser activity.
Once a new page loads, the worker requires up to two seconds to wake up. While the declarative rules will still work to block the ads, there’s a delay in applying the cosmetic filter to make the ads disappear.
“Although the experimental extension is not as effective as its predecessor, most users won’t feel the difference,” says AdGuard.
“The only thing you might notice is ad flickering due to the lag in the application of cosmetic rules,” the developer adds.