The new version of AdGuard Browser Extension has undergone major changes that are not immediately noticeable. We've moved all the “filtering” code into a new, separate library — this allows us to prepare the extension for a seamless transition to MV3.
A bit of background
Some time ago we transferred the URL filtering engine from the extension to 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, rules converter for Safari, linter, etc.).
The `tsurlfilter' had two main parts:
- A filtering engine that matches URLs with the rules loaded into it
- A Chrome- and Firefox-specific programming interface responsible for applying the rules found
With MV3, we need to maintain filter 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.
The new version of the browser extension for Chrome and Firefox has 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 which also uses tswebextension
“under the hood”.