{"record":{"id":"79aa7cb978ed1efe","repo":"vercel/next.js","slug":"the-router-state-header-was-too-large","errorCode":null,"errorMessage":"The router state header was too large.","messagePattern":"The router state header was too large\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/next/src/server/app-render/parse-and-validate-flight-router-state.tsx","lineNumber":32,"sourceCode":"export function parseAndValidateFlightRouterState(\n  stateHeader: string | string[] | undefined\n): FlightRouterState | undefined {\n  if (typeof stateHeader === 'undefined') {\n    return undefined\n  }\n  if (Array.isArray(stateHeader)) {\n    throw new Error(\n      'Multiple router state headers were sent. This is not allowed.'\n    )\n  }\n\n  // We limit the size of the router state header to ~40kb. This is to prevent\n  // a malicious user from sending a very large header and slowing down the\n  // resolving of the router state.\n  // This is around 2,000 nested or parallel route segment states:\n  // '{\"children\":[\"\",{}]}'.length === 20.\n  if (stateHeader.length > 20 * 2000) {\n    throw new Error('The router state header was too large.')\n  }\n\n  try {\n    const state = JSON.parse(decodeURIComponent(stateHeader))\n    assert(state, flightRouterStateSchema)\n    return state\n  } catch {\n    throw new Error('The router state header was sent but could not be parsed.')\n  }\n}\n","sourceCodeStart":14,"sourceCodeEnd":43,"githubUrl":"https://github.com/vercel/next.js/blob/0eb377541648e63402a47b38fee00a8d0ce8f8f1/packages/next/src/server/app-render/parse-and-validate-flight-router-state.tsx#L14-L43","documentation":"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.","triggerScenarios":"Thrown at packages/next/src/server/app-render/parse-and-validate-flight-router-state.tsx:32 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0eb377541648e63402a47b38fee00a8d0ce8f8f1","analyzedAt":"2026-08-19T02:10:13.922Z","contentChangedAt":"2026-08-19T02:10:13.922Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}