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: trueSuccess 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.