This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-22).
Problem
The experimental unstable_catchError boundary and unstable_retry API from Next.js are not wired up in vinext. Tests time out waiting for #error-boundary-message/#pages-error-message to become visible because either the boundary does not catch the suspended error or unstable_retry does not re-render the subtree after the user requests a reset. Affects App Router (with and without React Compiler) and the Pages Router equivalent.
waiting for locator('#error-boundary-message') to be visible
waiting for locator('#pages-error-message') to be visible
Estimated Impact
~6 test failures across the deploy suite.
Affected Test Suites
test/e2e/app-dir/catch-error/catch-error-react-compiler.test.ts (3 failures)
test/e2e/app-dir/catch-error/catch-error.test.ts (3 failures)
Recommendation
-
Reproduce first in vinext's own test suite. Add a test with a unstable_catchError boundary around a server component that throws, plus a button that calls unstable_retry. Confirm the boundary text appears and the retry re-runs the subtree.
-
Study the Next.js implementation. Search .nextjs-ref/packages/next/src/client/components/ for unstable_catchError/unstable_retry to understand the boundary semantics and the retry API contract.
-
Implement the boundary in App Router and Pages Router. Wire up the boundary component that catches suspended errors and exposes a retry() callback that re-renders the contained subtree.
-
Mirror behaviour in both routers. The Pages Router variant uses #pages-error-message; the App Router variant uses #error-boundary-message. Both should be covered by the same primitive.
Part of #1328.
Problem
The experimental
unstable_catchErrorboundary andunstable_retryAPI from Next.js are not wired up in vinext. Tests time out waiting for#error-boundary-message/#pages-error-messageto become visible because either the boundary does not catch the suspended error orunstable_retrydoes not re-render the subtree after the user requests a reset. Affects App Router (with and without React Compiler) and the Pages Router equivalent.Estimated Impact
~6 test failures across the deploy suite.
Affected Test Suites
test/e2e/app-dir/catch-error/catch-error-react-compiler.test.ts(3 failures)test/e2e/app-dir/catch-error/catch-error.test.ts(3 failures)Recommendation
Reproduce first in vinext's own test suite. Add a test with a
unstable_catchErrorboundary around a server component that throws, plus a button that callsunstable_retry. Confirm the boundary text appears and the retry re-runs the subtree.Study the Next.js implementation. Search
.nextjs-ref/packages/next/src/client/components/forunstable_catchError/unstable_retryto understand the boundary semantics and the retry API contract.Implement the boundary in App Router and Pages Router. Wire up the boundary component that catches suspended errors and exposes a
retry()callback that re-renders the contained subtree.Mirror behaviour in both routers. The Pages Router variant uses
#pages-error-message; the App Router variant uses#error-boundary-message. Both should be covered by the same primitive.Part of #1328.