Features

Feature Guide

Apply timeouts, retries, normalized responses, hooks, and route overrides without rewriting proxy boilerplate.

Timeouts

ts
export default defineConfig({ baseUrl: "https://api.backend.com", timeout: 8000, });

Disable timeout for a specific route:

ts
return passIt({ path: "/heavy-report", req, timeout: false, });

Retries

Retries run on configured onStatus codes. Any status code is valid. Retries also run on network errors and adapter exceptions.

ts
retry: { times: 2, onStatus: [500, 502, 503], }

PassIt never guesses which status codes are retryable. Put every retryable status in onStatus.

Normalization

ts
normalize: true

Success shape:

ts
{ success: true, status: 200, data: { id: "user_123" } }

Error shape:

ts
{ success: false, status: 404, message: "not found" }

Hooks

ts
hooks: { dev: { onRequest: (req) => console.log(`--> ${req.method} ${req.path}`), onResponse: (res) => console.log(`<-- ${res.status} ${res.duration}ms`), onError: (err) => console.error(err.message), }, prod: { onError: (err) => Sentry.captureException(err), }, }

Content types

PassIt detects backend response content types:

  • JSON is parsed and returned as data.
  • Plain text is returned as text.
  • HTML is consumed and returned as null.

Use a route response transformer when your frontend needs a custom shape.