vercel/next.js · error · Error
The router state header was too large.
Error message
The router state header was too large.
What it means
parseAndValidateFlightRouterState rejects router-state headers larger than ~40KB (20 bytes × ~2000 segment states) to prevent a malicious or buggy client from sending a gigantic header that would make resolving deeply nested parallel-route states slow.
Source
Thrown at packages/next/src/server/app-render/parse-and-validate-flight-router-state.tsx:32
export function parseAndValidateFlightRouterState(
stateHeader: string | string[] | undefined
): FlightRouterState | undefined {
if (typeof stateHeader === 'undefined') {
return undefined
}
if (Array.isArray(stateHeader)) {
throw new Error(
'Multiple router state headers were sent. This is not allowed.'
)
}
// We limit the size of the router state header to ~40kb. This is to prevent
// a malicious user from sending a very large header and slowing down the
// resolving of the router state.
// This is around 2,000 nested or parallel route segment states:
// '{"children":["",{}]}'.length === 20.
if (stateHeader.length > 20 * 2000) {
throw new Error('The router state header was too large.')
}
try {
const state = JSON.parse(decodeURIComponent(stateHeader))
assert(state, flightRouterStateSchema)
return state
} catch {
throw new Error('The router state header was sent but could not be parsed.')
}
}
View on GitHub (pinned to 0eb3775416)
Solutions
- The router state tree header exceeded the allowed size; reduce client state (e.g. fewer parallel routes / large search params) or avoid forwarding huge state headers.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/next/src/server/app-render/parse-and-validate-flight-router-state.tsx:32 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of vercel/next.js@0eb3775416 (2026-08-19).
Data as JSON: /api/errors/79aa7cb978ed1efe.
Report an issue: GitHub.