Skip to main content

Rules

A rule is a set of configurations that tell tweak how to intercept and modify a request. Every rule starts with the same two things (a url expression to match and an HTTP method) and then differs in what it does once a request matches.

There are four rule types, and the one you pick decides everything else about the rule: which fields you get, which requests it can reach, and whether it needs tweak to be running.

picking a rule type

When to use each rule type?​

Rule typeUse it when…Plan
MockThe endpoint does not exist yet, is broken, is slow, you want a fixed answer you fully control or you simply don't care about the real server responseFree
ModifyYou want the real response, or a slightly modified version of it, with a few things changed: one field, the status code, a header.Paid
Headers onlyIf only the headers matter for you.Free for response headers, paid for request headers
RedirectThe request should go somewhere else entirely: a local server, a different version of the API, a fixture.Free, unless you want to target specific assets (e.g. only images)

Capabilities break down​

Mock and Modify run inside the page: tweak wraps fetch and XMLHttpRequest, so they see exactly what your JavaScript asks for, and nothing else. Headers only and Redirect are applied by the browser itself, so they see every request, including ones your code never makes.

Mock Β· ModifyHeaders only Β· Redirect
Applied bytweak, inside the pagethe browser itself
Reaches Fetch / XHRβœ…βœ…
Reaches page navigations, scripts, images, stylesheets, fontsβŒβœ…
Can rewrite the response bodyβœ…βŒ
Can run hooks and debugging toolsβœ…βŒ
Works when tweak is stoppedβŒβœ…, with the Global scope
Available on Firefoxβœ…βŒ
Counts intercepted requestsβœ…βŒ
Known limitationsservice workers, document bodiesChrome only, no body rewriting

Common scenarios​

I want to…Rule type
Build a screen against an API that is not ready yetMock
Reproduce a 500, a timeout, or an empty listMock
Demo the app offlineMock
Change one field of a real response and keep the restModify
Keep the real response but override its status codeModify
Rewrite the outgoing request payload before it is sentModify
Add an auth or feature-flag header to every API callHeaders only
Strip Content-Security-Policy from a page so it loads in an iframeHeaders only
Set a cookie on the response, or append a second Set-CookieHeaders only
Point the production API at http://localhost:3000Redirect
Swap a bundled script or stylesheet for a local buildRedirect
Break an image on purpose, or swap it for a very large oneRedirect
Move /v1/ calls onto /v2/ without touching the appRedirect

The anatomy of a rule​

Below, a rule on the free plan.

tweak rule free

Below, a rule on a paid plan.

tweak rule premium

The fields shared by every rule type are covered in the introduction. What each type adds on top is covered in its own section:



Was this page helpful?

Need something else? Request a feature