Skip to main content
Use Mock route steps to intercept requests and return your own responses. Useful for testing frontends without a backend, overriding feature flags, or forcing error states.

Mocking a route

Example: capture GET /todos and return fake data. Set the URL matcher on a Mock route step to a regex matching GET /todos.
Request mocking editor
Define the response generator:
const url = new URL(mock.request.url);

const fakeTodo = {
  id: url.searchParams.get("id"),
  name: "My todo item",
  done: false,
  description: "An item that I need to do",
};

return new Response(JSON.stringify([fakeTodo]), {
  status: 200,
  headers: { "content-type": "application/json" },
});

Modifying the real response

To override part of the real response (e.g. a single feature flag), enable Fetch real response so mock.response is populated before your generator runs.
Fetch real response
Feature flag overrides
const originalJson = await mock.response.json();

return new Response(
  JSON.stringify({
    ...originalJson,
    flags: {
      ...originalJson.flags,
      momentic_test: true,
    },
  }),
  {
    status: mock.response.status,
    headers: mock.response.headers,
  },
);

Referencing a mock

Each mock has a key, either configured on the step or auto-generated. Save the step output to a variable to reference an auto-generated key later.

Removing a mock

Use a Remove route mock step with the key to remove a specific mock. Omit the key to remove all mocks.

Updating a mock

Register a new mock with the same key. A different key with the same URL matcher will not replace the existing mock.

Debugging

If a response generator throws, Momentic responds with status 500 and the error message in the body, visible in your app and in Momentic’s network viewer.
Network viewer