vercel/next.js · error
unstable_redirect has been renamed to redirect, please updat
Error message
unstable_redirect has been renamed to redirect, 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_redirect key, renamed to redirect. The validator rejects the old key so the renamed API is used instead.
Source
Thrown at packages/next/src/server/render.tsx:1157
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!`
)
}
metadata.isNotFound = true
return new RenderResult(null, {
metadata,View on GitHub (pinned to 89d017eac4)
Solutions
- Rename the returned field `unstable_redirect` to `redirect` in the data function for the page.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/next/src/server/render.tsx:1159 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/745f14427c4e5b7d.
Report an issue: GitHub.