Request Rules
JSON files inside app/request-rules can modify or block the network request. The below rule block the network request if the URL contains developer.mozilla.org.
app/request-rules/block-mozilla.json
{ "$schema": "https://supex.dev/schemas/request-rules/0.0.1.json", "rules": [ { "action": { "type": "block" }, "condition": { "urlFilter": "developer.mozilla.org" } } ], "enabled": true }
Note: To block or modify network request, we need declarativeNetRequest or declarativeNetRequestWithHostAccess permission. Please learn more here.
supex.json
{ "permissions": { "required": ["declarativeNetRequest"] }, }
Now, if you try to visit https://developer.mozilla.org, it will fail.
rules
Each network rules is defined by three fields:
action: The action to take when the rule is matched.condition: The condition under which this rule is triggered.priority: The priority of the rule which should be >= 1. Learn more about matching precedents here.
enabled
A boolean value indicates whether the rule should be enabled by default.
Enable or disable rules on runtime
Network rules can be enabled or disabled at runtime. From the above block-mozilla code, we change the enabled to false.
app/request-rules/block-mozilla.json
{ "$schema": "https://supex.dev/schemas/request-rules/0.0.1.json", "rules": [ { "action": { "type": "block" }, "condition": { "urlFilter": "developer.mozilla.org" } } ], "enabled": false }
If you visit https://developer.mozilla.org, it will work since the rule is disabled. We can enable the rule by using declarativeNetRequest.updateEnabledRulesets.
app/action.js
... const enableMozillaRule = () => { declarativeNetRequest.updateEnabledRulesets({ enableRulesetIds: ['block-mozilla'] }); }; function Action() { return <div onClick={enableMozillaRule}>Enable Network Rule</div> } ...
After you click the Enable Network Rule from action popup, the https://developer.mozilla.org will be blocked.
Note: For enableRulesetIds & disableRulesetIds of updateEnabledRulesets method, please use the filename of the request rules. In the above example, we used block-mozilla which is the filename of the network rule.