facebook/react · error
462
462
Error message
Unexpected SuspendedReason. This is a bug in React.
What it means
While the concurrent work loop decides whether to yield, it switches on the current suspension reason (SuspendedOnImmediate, SuspendedOnData, SuspendedOnHydration, and related values). Reaching the default branch means the reason variable held an unknown value — an invariant that guards the yield/interrupt machinery (error code 462) and indicates a reconciler bug, typically in the yielding/component-performance-track paths.
Source
Thrown at packages/react-reconciler/src/ReactFiberWorkLoop.js:3000
workInProgressThrownValue = null;
throwAndUnwindWorkLoop(
root,
unitOfWork,
thrownValue,
SuspendedOnDeprecatedThrowPromise,
);
break;
}
case SuspendedOnHydration: {
// Selective hydration. An update flowed into a dehydrated tree.
// Interrupt the current render so the work loop can switch to the
// hydration lane.
resetWorkInProgressStack();
workInProgressRootExitStatus = RootSuspendedAtTheShell;
break outer;
}
default: {
throw new Error(
'Unexpected SuspendedReason. This is a bug in React.',
);
}
}
}
if (__DEV__ && ReactSharedInternals.actQueue !== null) {
// `act` special case: If we're inside an `act` scope, don't consult
// `shouldYield`. Always keep working until the render is complete.
// This is not just an optimization: in a unit test environment, we
// can't trust the result of `shouldYield`, because the host I/O is
// likely mocked.
workLoopSync();
} else if (enableThrottledScheduling) {
workLoopConcurrent(includesNonIdleWork(lanes));
} else {
workLoopConcurrentByScheduler();
}View on GitHub (pinned to eafeac097b)
Solutions
- Switch from canary/experimental to the matching stable release to confirm it is an upstream regression
- Disable experimental features (component performance track, yielding flags) if you control the build
- File a React issue with the exact build version and a stack trace from the throw site
Defensive patterns
Strategy: try-catch
Prevention
- Prefer stable over canary/experimental builds in production
- Disable experimental yielding/performance-track flags when reproducing
- Capture the SuspendedReason value from the stack when reporting upstream
When it happens
Trigger: The work loop consults SuspendedReason (e.g. after a fiber suspended and time-slicing checks whether to interrupt) and encounters a value outside the enum — usually from a canary regression in the yield paths or corrupted module state.
Common situations: Experimental/canary React builds with enableComponentPerformanceTrack or yielding features enabled; reconciler forks that add suspension reasons; duplicated react-reconciler state.
Related errors
- 314
- react-cache: read and preload may only be called from within
- The should not be any remaining suspense node children if th
- There should always be an Offscreen Fiber child in a hydrate
- A dehydrated Suspense node should not have a content Fiber.
AI-assisted analysis of facebook/react@eafeac097b (2026-08-21).
Data as JSON: /api/errors/84502517e91b74b1.
Report an issue: GitHub.