We have been working on migration to Manifest v3 (MV3) for some time and today we are shipping a JShelter version 0.18 that implements stateless replacement for background pages which is a first step towards MV3.
MV2 extensions were allowed to create background pages. These pages allow running JavaScript code and keep state like variables for the whole browser session. Essentially, all background pages started with the browser and lasted until the user closed the browser. Hence, we could utilize background pages to safe all information needed to be kept in memory. For instance, JShelter needs to store:
- hashes used as a seed for JavaScript shield anti-fingerprinting protection,
- number of API calls needed for Fingerprint detector, which the user can see in the pop up and fingerprinting report,
- information needed to keep pop up icon dynamic,
- etc.
We needed to solve issues related to the migration of all these information from regular JavaScript variables to Web Storage. As we expect that other extensions need to solve the same problem, we created a stateless NSCL branch. Among others, we needed to solve the issue of writing to the storage too frequently. As the core of JShelter is heavily stateful, we needed to rewrite important parts that were in the code base for years and were proven to work.
JShelter has repeatable tests and we run additional testing, especially under circumstances like this change. Everything should run the same as it used to work in 0.17. However, please be cautious and report back any odd behavior that you encounter with 0.18 and later versions.
Migration to stateless or non-persistent background pages is needed for MV3 but it is still not a final step. Expect other major changes in JShelter core code including removal of Network Boundary Shield for Chromium-based browsers soon. Hence, keep cautious also in the following months and report back any issues that you encounter. Have a look at our Release page for more information about the changes in JShelter.