App Router/Pages Router: `unstable_catchError` / `unstable_retry` boundary not implemented
#1 448 ouverte le 22 mai 2026
Métriques du dépôt
- Stars
- (8 563 étoiles)
- Métriques de merge PR
- (Merge moyen 1j 1h) (462 PRs mergées en 30 j)
Description
This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext
mainvs Next.jsv16.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_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.