AdGuard Browser Extension v4.2: Ready for MV3
The new version of AdGuard Browser Extension has undergone major changes that are not immediately noticeable. We’ve rewritten the whole filtering code in TypeScript and moved it into a new, separate library — this allows us to prepare the extension for a seamless transition to MV3.
Manifest V3 (MV3) is Chrome’s new extension API. Among other things, it will make it significantly harder for browser extensions to block ads by limiting the number of filtering rules they can apply. You can read more about Chrome’s limitations and how we tried to adapt to them in the world’s first ad blocker built on Manifest V3.
A bit of background
Some time ago, we moved the extension's URL filtering engine into a separate library called tsurlfilter
. The main purpose of the library is to reuse the filtering logic in our products (browser extensions for Chrome and Firefox, rule converter for Safari, linter, etc).
The tsurlfilter
had two main parts:
- A filtering engine that matches URLs against the rules loaded into it
- A Chrome- and Firefox-specific programming interface responsible for applying the rules found
With MV3, we need to maintain filtering code not only for different browsers, but also for different manifest versions, as well as provide a seamless transition from MV2 to MV3 as browsers remove the old API. We're in no hurry to move to MV3 right away as its API is very limited.
Adding new logic to solve this problem in tsurlfilter
would have made the library too heavy, so we decided to design a new software platform that would hide the logic specific to different browsers and manifests behind a single and simple API. The new library was named tswebextension
.
The new tswebextension
library
With tswebextension
, it will be easier to maintain and update our products.
In the new version of the Browser Extension for Chrome and Firefox, we’ve completely redesigned the background service using tswebextension
— this will allow us to seamlessly move to MV3 in Chrome in future major releases.
In addition, we’ve updated the AdGuard API that also uses tswebextension
under the hood.
The full changelog is available on GitHub. As always: we’ll be glad to hear what you think of our browser extension on social networks (search AdGuard in your favorite one) or via GitHub issues.