{"record":{"id":"d62a9048c6e9b55d","repo":"vercel/next.js","slug":"page-with-dynamic-error-encountered-dynamic-da","errorCode":null,"errorMessage":"Page with dynamic = \"error\" encountered dynamic data method on ${path}.","messagePattern":"Page with dynamic = \"error\" encountered dynamic data method on (.+?)\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/next/src/export/routes/app-page.ts","lineNumber":118,"sourceCode":"      flightData,\n      cacheControl = { revalidate: false, expire: undefined },\n      postponed,\n      fetchTags,\n      fetchMetrics,\n      segmentData,\n      prefetchHints,\n      renderResumeDataCache,\n      hasPendingUi,\n    } = metadata\n\n    // Ensure we don't postpone without having PPR enabled.\n    if (postponed && !renderOpts.experimental.isRoutePPREnabled) {\n      throw new Error('Invariant: page postponed without PPR being enabled')\n    }\n\n    if (cacheControl.revalidate === 0) {\n      if (isDynamicError) {\n        throw new Error(\n          `Page with dynamic = \"error\" encountered dynamic data method on ${path}.`\n        )\n      }\n      const { staticBailoutInfo = {} } = metadata\n\n      if (debugOutput && staticBailoutInfo?.description) {\n        logDynamicUsageWarning({\n          path,\n          description: staticBailoutInfo.description,\n          stack: staticBailoutInfo.stack,\n        })\n      }\n\n      return { cacheControl, fetchMetrics }\n    }\n\n    // If page data isn't available, it means that the page couldn't be rendered\n    // properly so long as we don't have unknown route params. When a route doesn't","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/vercel/next.js/blob/0eb377541648e63402a47b38fee00a8d0ce8f8f1/packages/next/src/export/routes/app-page.ts#L100-L136","documentation":"Static-export strictness failure: the page segment was configured with dynamic = \"error\" (fully static), but the render touched a dynamic data API, giving cacheControl.revalidate === 0 with the isDynamicError flag set. next build --output-export therefore aborts for this path instead of producing a non-deterministic static file.","triggerScenarios":"A route with dynamic = \"error\" uses dynamic data during prerender.","commonSituations":"cookies()/headers()/fetch-no-store is used in a route forced to static with export const dynamic = 'error'.","solutions":["Remove dynamic = \"error\" from the page, or remove the dynamic data usage (cookies, headers, etc.) on that path."],"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-23T08:17:48.524Z"}