diff --git a/packages/next/src/client/app-index.tsx b/packages/next/src/client/app-index.tsx index a582477530453..be6569079fcb5 100644 --- a/packages/next/src/client/app-index.tsx +++ b/packages/next/src/client/app-index.tsx @@ -27,6 +27,7 @@ import { MissingSlotContext } from '../shared/lib/app-router-context.shared-runt import { setAppBuildId } from './app-build-id' import { shouldRenderRootLevelErrorOverlay } from './lib/is-error-thrown-while-rendering-rsc' import { handleClientError } from './components/errors/use-error-handler' +import { isNextRouterError } from './components/is-next-router-error' /// @@ -304,7 +305,15 @@ function devQueueSsrError(): Error | undefined { 'data-next-error-message' )! const stack = ssrErrorTemplateTag.getAttribute('data-next-error-stack') + const digest = ssrErrorTemplateTag.getAttribute('data-next-error-digest') const error = new Error(message) + if (digest) { + ;(error as any).digest = digest + } + // Skip Next.js SSR'd internal errors that which will be handled by the error boundaries. + if (isNextRouterError(error)) { + return + } error.stack = stack || '' return error } diff --git a/packages/next/src/server/app-render/app-render.tsx b/packages/next/src/server/app-render/app-render.tsx index c2ced452b9814..8a55b2cfe01ca 100644 --- a/packages/next/src/server/app-render/app-render.tsx +++ b/packages/next/src/server/app-render/app-render.tsx @@ -994,6 +994,7 @@ async function getErrorRSCPayload( {process.env.NODE_ENV !== 'production' && err ? (