facebook/react · error · Error
156
156
Error message
Unknown unit of work tag (${workInProgress.tag}). This error is likely caused by a bug in React. Please file an issue. What it means
beginWork() dispatches on fiber.tag for every unit-of-work type it knows and falls through to this throw for any unrecognized numeric tag. Fiber tags are private to one copy of the reconciler, so an unmatched tag means the fiber tree was produced by different React internals than the code walking it, or the tree was corrupted.
Source
Thrown at packages/react-reconciler/src/ReactFiberBeginWork.js:4508
renderLanes,
);
}
break;
}
case ViewTransitionComponent: {
if (enableViewTransition) {
return updateViewTransition(current, workInProgress, renderLanes);
}
break;
}
case Throw: {
// This represents a Component that threw in the reconciliation phase.
// So we'll rethrow here. This might be a Thenable.
throw workInProgress.pendingProps;
}
}
throw new Error(
`Unknown unit of work tag (${workInProgress.tag}). This error is likely caused by a bug in ` +
'React. Please file an issue.',
);
}
export {beginWork};
View on GitHub (pinned to eafeac097b)
Solutions
- Run npm ls react react-dom (or the yarn/pnpm equivalent) and dedupe to exactly one copy of each at one version
- Upgrade custom-renderer packages so their react-reconciler matches your react version
- Clear node_modules, the bundler cache, and hard-reload to drop stale HMR modules
- If versions are aligned, file an issue including the tag number from the message
Example fix
// before - transitive dep hoists a second react-dom 18
// after - force one resolution in package.json
"overrides": {
"react": "19.2.0",
"react-dom": "19.2.0"
} Defensive patterns
Strategy: validation
Validate before calling
import {version} from 'react';
import * as reconciler from 'react-reconciler';
if (reconciler.version && reconciler.version.split('.')[0] !== version.split('.')[0]) {
throw new Error(`react ${version} + react-reconciler ${reconciler.version}: dedupe required`);
} Try / catch
If it still throws at runtime, capture via onUncaughtError with the tag number from the message - that number identifies which fiber type the mismatched copy emitted.
Prevention
- Set npm overrides or yarn resolutions so only one react version resolves
- Upgrade custom-renderer libraries together with react
- Purge node_modules and bundler caches after React upgrades to drop stale modules
When it happens
Trigger: Two copies of react/react-reconciler in one bundle where one writes fibers and the other renders them (react 19 with react-dom 18, stable mixed with canary); a custom renderer (react-three-fiber, ink, react-pdf) whose pinned react-reconciler emits or consumes tags the paired build does not know; external code mutating fiber internals.
Common situations: Incremental React upgrades in monorepos; lockfiles hoisting multiple reconciler versions; libraries with narrow react-reconciler peer ranges; stale bundler/HMR module instances kept alive after an upgrade.
Related errors
- 156
- Invalid reference.
- Failed to read a RSC payload created by a development versio
- This module must be shimmed by a specific renderer.
- Unknown Fiber. Needs to be a function component to inspect h
AI-assisted analysis of facebook/react@eafeac097b (2026-08-21).
Data as JSON: /api/errors/61a67959e65c85f9.
Report an issue: GitHub.