TLDR: Starting in Chrome 130, we will enable support for the `use_dynamic_url` property on entries under the `
web_accessible_resources` key in the manifest.
Hi all,
If you’re not already familiar, `use_dynamic_url` is a feature we proposed early in the development of Manifest V3. This is an opt-in way to protect users from fingerprinting across the web.
This was mentioned in our documentation in the early stages of the Manifest V3 transition but support was not ready in Chrome, and the setting was gracefully ignored. We are now enabling support for that setting starting in Chrome 130.
How it works
Any content in an extension package can be made accessible to websites by using the `
web_accessible_resources` key. Resources are then accessible to the website at a known and predictable URL:
```
chrome-extension://<EXTENSION ID>/<PATH>
```
To avoid a website which never needs to load this resource from doing so, we added a `matches` key in Manifest V3 to restrict access to the resource to only certain websites.
However, this doesn’t help in all cases. If you have a resource that you may need to add to any website, you need to provide <all_urls> as the matches pattern. In turn, this means that even if you haven’t injected into a website, it can attempt to load a resource at the path to see if your extension is installed. This can be used to fingerprint users.
When `use_dynamic_url` is enabled, <EXTENSION ID> in the path is replaced with a random GUID. This means a site cannot check if your extension is installed in the same way.
When you do need to access the resource, you can use `
chrome.runtime.getURL` to get the correct URL to use.
Read more in our documentation.
As always, please do let us know if you have any questions or feedback.
Thanks,
Oliver on behalf of Chrome Extensions DevRel