declarativeNetRequest.updateDynamicRules
Modifies the set of dynamic rules for the extension. The rules with IDs listed in options.removeRuleIds
are first removed, and then the rules given in options.addRules
are added. Note that:
- This update happens as an atomic operation: either all specified rules are added and removed, or an error is returned.
- These rules are persisted across browser sessions and across extension updates.
- Static rules specified as part of the extension package can not be removed using this function.
- The number of dynamic rules that can be added is limited:
- In Safari and up to Chrome 119, to the value of
MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES
for the combined total of dynamic and session-scoped rules. - Up to Firefox 127 to the value of
MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES
. - From Chrome 120 and Firefox 128, to the value of
MAX_NUMBER_OF_DYNAMIC_RULES
.
- In Safari and up to Chrome 119, to the value of
Note:
In Firefox 132 and earlier, dynamic rules are sometimes not applied after a browser restart, and calls to this API are rejected with an error (Firefox bug 1921353). A workaround is to specify an enabled static ruleset in the declarative_net_request
manifest key. The ruleset file can be an empty list.
Syntax
let updatedRules = browser.declarativeNetRequest.updateDynamicRules(
options // object
);
Parameters
options
-
An object containing details of the rules to add or delete from the dynamic rules.
addRules
Optional-
An array of
declarativeNetRequest.Rule
. Details of the rules to add. removeRuleIds
Optional-
An array of
number
. IDs of the rules to remove. Any invalid IDs are ignored.
Return value
A Promise
If the request was successful, the promise is fulfilled with no arguments. If the request fails, the promise is rejected with an error message.
Examples
Example extensions
Browser compatibility
BCD tables only load in the browser