At eyeo, we have been preparing for this upcoming change particularly with our Web Extensions SDK. However, while all browser extensions risk reducing the quality of their product, ad-blocking extensions are particularly affected. Despite all this, it must be said clearly that Manifest V3 does not at all mean the end for ad-blocking browser extensions.
In this blog, we will dive deeper into some of the primary challenges our experts have seen for this use case and give our thoughts on Manifest V3.
Main challenges with Manifest V3
1. Replacement of background scripts with service workers
A service worker is a script that the browser runs in the background but separate from a web page, enabling features that do not need a web page or user interaction. Some examples are push notifications and background synchronization. They also apply to extensions.
Service workers completely change how an extension's lifecycle is handled, with the browser being able to suspend service workers at any time. Ensuring correct functioning when they are suspended requires a more complex implementation of mechanisms related to data synchronization.
Testing is also more challenging as compared to Manifest V2 at this present time. There is no API for tests to trigger the workflow to suspend and restart service workers, and these events do not always occur as expected under testing conditions. We had to build a testing mechanism that simulates the suspension of a service worker ourselves.
2. Restricted capabilities for filter lists and filtering rules
One of the main issues with Manifest V3 is its limitation to filter lists: an extension can only include up to 50 static lists, and only 10 of them can be active at the same time.
There are also limitations to the number of filter rules inside these lists: installed extensions cannot collectively exceed 300,000 static filters and it is no longer possible to update entire filter lists synchronously.
Manifest V3 introduces a new threat by removing our ability to update filters dynamically, therefore making it difficult for the community to quickly fix problematic filters that cause pages to malfunction. However, on the bright side, this pushes us at eyeo to develop more advanced tools to detect filter problems in advance and prevent them from reaching users in the first place.
3. Limited debugging and reporting capabilities
In Manifest V2, it was possible to detect which exact filter was used to block a request. This information was helpful for ad-filtering extension developers for different reasons; it enabled them to understand the importance of specific filter rules or how to debug issues with websites.
In Manifest V3, the matching of rules and requests is no longer handled by the developer's code, but by the browser itself, and the DNR API doesn't expose much information about rule matching. While it's still possible to detect which filters matched, the information on which request was blocked by a particular filter is unavailable. It’s a huge inconvenience for filter developers. Manifest V3 impacts users as it could lead to a decreased quality of ad filtering.
For Adblock Plus to remain available to those who use browsers with Manifest V3, Adblock Plus had to adapt to new requirements, particularly with eyeo’s Web Extension SDK.
This blogby Adblock Plus explores the changes that Google’s Manifest V3 will bring to Adblock Plus.
What the industry experts are saying about Manifest V3
Back in October 2022, eyeo hosted its fifth Ad-Filtering Dev Summit in Amsterdam, Netherlands and gathered industry experts in the field of ad blocking and ad filtering from Opera, Mozilla, Google, Avast, Igalia and more. A primary topic that was highly discussed at the summit was Manifest V3, with speakers and attendees sharing their thoughts, concerns and predictions for Manifest V3.
If you missed the session live or online, you can watch the replayhere.