{"record":{"id":"ea2303b30fbe6af8","repo":"vercel/next.js","slug":"unstable-notfound-has-been-renamed-to-notfound-pl","errorCode":null,"errorMessage":"unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}","messagePattern":"unstable_notFound has been renamed to notFound, please update the field to continue\\. Page: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/next/src/server/render.tsx","lineNumber":1152,"sourceCode":"        delete serverSidePropsError.code\n      }\n      throw serverSidePropsError\n    }\n\n    if (data == null) {\n      throw new Error(GSSP_NO_RETURNED_VALUE)\n    }\n\n    if ((data as any).props instanceof Promise) {\n      deferredContent = true\n    }\n\n    const invalidKeys = Object.keys(data).filter(\n      (key) => key !== 'props' && key !== 'redirect' && key !== 'notFound'\n    )\n\n    if ((data as any).unstable_notFound) {\n      throw new Error(\n        `unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}`\n      )\n    }\n    if ((data as any).unstable_redirect) {\n      throw new Error(\n        `unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${pathname}`\n      )\n    }\n\n    if (invalidKeys.length) {\n      throw new Error(invalidKeysMsg('getServerSideProps', invalidKeys))\n    }\n\n    if ('notFound' in data && data.notFound) {\n      if (pathname === '/404') {\n        throw new Error(\n          `The /404 page can not return notFound in \"getStaticProps\", please remove it to continue!`\n        )","sourceCodeStart":1134,"sourceCodeEnd":1170,"githubUrl":"https://github.com/vercel/next.js/blob/89d017eac43ebf4742ed2b58d3c1373b70283b69/packages/next/src/server/render.tsx#L1134-L1170","documentation":"Migration guard in renderToHTMLImpl's getServerSideProps result validation: the returned object contains the legacy unstable_notFound key, which was renamed to notFound. The response-shape validator rejects the old key so the renamed API is used instead.","triggerScenarios":"Thrown at packages/next/src/server/render.tsx:1154 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the returned field `unstable_notFound` to `notFound` in the data function for the page."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"89d017eac43ebf4742ed2b58d3c1373b70283b69","analyzedAt":"2026-08-19T02:10:13.922Z","contentChangedAt":"2026-08-19T02:10:13.922Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}