-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate to non-persistent background pages as a first step towards Manifest v3.
- Loading branch information
Showing
4 changed files
with
43 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -93,5 +93,5 @@ | |
], | ||
"optional_permissions": ["browsingData"], | ||
"short_name": "JShelter", | ||
"version": "0.17" | ||
"version": "0.18" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
--- | ||
title: First step towards MV3 | ||
date: 2024-04-19 17:00 | ||
Series: Manifest v3 | ||
--- | ||
|
||
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](https://github.com/hackademix/nscl/tree/stateless). 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](/versions/) for more | ||
information about the changes in JShelter. |