You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#7753 and #7457 were closed by removing internal throw undefined sites (#7805), and #7910 tracks another one but the reason each of these was catastrophic (whole-app unmount, stackless Uncaught undefined) rather than a rendered errorComponent is still present: CatchBoundary stores the caught value and gates both reset and render on its truthiness:
A thrown falsy value (undefined, null, 0, "") is caught and stored, the gate is false, the boundary re-renders the same crashing children, and React promotes it to an uncaught root error — bypassing the route's errorComponent entirely.
Any userland falsy throw reproduces it on latest; fixing the gate also makes future internal regressions of the #7753/#7910 class degrade gracefully instead of unmounting the app.
Suggested fix: track hasError in state separately from the value so the gates don't depend on truthiness (the default ErrorComponent also needs an error?.message guard).
Activity