vercel/next.js · error
unstable_notFound has been renamed to notFound, please updat
Error message
unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname} What it means
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.
Source
Thrown at packages/next/src/server/render.tsx:1152
delete serverSidePropsError.code
}
throw serverSidePropsError
}
if (data == null) {
throw new Error(GSSP_NO_RETURNED_VALUE)
}
if ((data as any).props instanceof Promise) {
deferredContent = true
}
const invalidKeys = Object.keys(data).filter(
(key) => key !== 'props' && key !== 'redirect' && key !== 'notFound'
)
if ((data as any).unstable_notFound) {
throw new Error(
`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}`
)
}
if ((data as any).unstable_redirect) {
throw new Error(
`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${pathname}`
)
}
if (invalidKeys.length) {
throw new Error(invalidKeysMsg('getServerSideProps', invalidKeys))
}
if ('notFound' in data && data.notFound) {
if (pathname === '/404') {
throw new Error(
`The /404 page can not return notFound in "getStaticProps", please remove it to continue!`
)View on GitHub (pinned to 89d017eac4)
Solutions
- Rename the returned field `unstable_notFound` to `notFound` in the data function for the page.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/next/src/server/render.tsx:1154 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of vercel/next.js@89d017eac4 (2026-08-19).
Data as JSON: /api/errors/ea2303b30fbe6af8.
Report an issue: GitHub.