facebook/react · error

329

329

Error message

Unknown root exit status.

What it means

The exit-status switch in finishConcurrentRender handles every defined RootExitStatus; falling into the default branch means the status variable held a value outside the known enum — an internal invariant failure (error code 329). It cannot be caused by application code directly.

Source

Thrown at packages/react-reconciler/src/ReactFiberWorkLoop.js:1479

        workInProgressDeferredLane,
        didAttemptEntireTree,
      );
      return;
    }
    case RootErrored: {
      // This render errored. Ignore any recoverable errors because we weren't actually
      // able to recover. Instead, whatever the final errors were is the ones we log.
      // This ensures that we only log the actual client side error if it's just a plain
      // error thrown from a component on the server and the client.
      workInProgressRootRecoverableErrors = null;
      break;
    }
    case RootSuspended:
    case RootCompleted: {
      break;
    }
    default: {
      throw new Error('Unknown root exit status.');
    }
  }

  if (shouldForceFlushFallbacksInDEV()) {
    // We're inside an `act` scope. Commit immediately.
    completeRoot(
      root,
      finishedWork,
      lanes,
      workInProgressRootRecoverableErrors,
      workInProgressTransitions,
      workInProgressRootDidIncludeRecursiveRenderUpdate,
      workInProgressDeferredLane,
      workInProgressRootInterleavedUpdatedLanes,
      workInProgressSuspendedRetryLanes,
      workInProgressRootDidSkipSuspendedSiblings,
      exitStatus,
      null,

View on GitHub (pinned to eafeac097b)

Solutions

  1. If you maintain a reconciler fork, update this switch to cover your added exit statuses
  2. Verify only one react-reconciler version is loaded (duplicates can mix code paths)
  3. Upgrade to the latest release; if it reproduces on stock React, file an issue with the status value and stack trace
Defensive patterns

Strategy: try-catch

Prevention

When it happens

Trigger: workInProgressRootExitStatus containing an unexpected numeric value when commit decisions are made, e.g. after memory corruption of module state, a renderer fork that extended the enum, or a reconciler bug that skips status assignment.

Common situations: Custom forks of react-reconciler that add exit statuses without updating this switch; two reconciler instances sharing module state; extremely rare upstream regressions in canary builds.

Related errors


AI-assisted analysis of facebook/react@eafeac097b (2026-08-21). Data as JSON: /api/errors/893534a2d2f6efd0. Report an issue: GitHub.