remotion-dev/remotion · critical · Error
Version ${reactDomVersion} of "react-dom" is not supported b
Error message
Version ${reactDomVersion} of "react-dom" is not supported by Remotion What it means
After confirming react-dom has a version, the bundler parses the major version (first dot-segment). If it equals the string '0', it is rejected as unsupported, because no real react-dom release has a 0.x version. This fires when react-dom resolves to a stub, mock, or alien module that reports a bogus version like '0.0.0'.
Source
Thrown at packages/bundler/src/shared-bundler-config.ts:14
import {createHash} from 'node:crypto';
import path from 'node:path';
import ReactDOM from 'react-dom';
import {NoReactInternals} from 'remotion/no-react';
import {jsonStringifyWithCircularReferences} from './stringify-with-circular-references';
import {getWebpackCacheName} from './webpack-cache';
if (!ReactDOM?.version) {
throw new Error('Could not find "react-dom" package. Did you install it?');
}
const reactDomVersion = ReactDOM.version.split('.')[0];
if (reactDomVersion === '0') {
throw new Error(
`Version ${reactDomVersion} of "react-dom" is not supported by Remotion`,
);
}
export const shouldUseReactDomClient =
NoReactInternals.ENABLE_V5_BREAKING_CHANGES
? true
: parseInt(reactDomVersion, 10) >= 18;
export const getResolveConfig = () => ({
extensions: ['.ts', '.tsx', '.web.js', '.js', '.jsx', '.mjs', '.cjs'],
alias: {
// Only one version of react
'react/jsx-runtime': require.resolve('react/jsx-runtime'),
'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),
react: require.resolve('react'),
// Needed to not fail on this: https://github.com/remotion-dev/remotion/issues/5045
'remotion/no-react': path.resolve(View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Reinstall a real, supported react-dom (18 or 19) and remove any stub/mock/alias.
- Run npm ls react-dom (or bun pm ls) to confirm which package and version actually resolves.
- Delete node_modules and the lockfile entries for react-dom and reinstall if the install is corrupted.
- Check package.json overrides/resolutions for react-dom and remove stubs.
Example fix
// before: overrides force react-dom to a stub
// "overrides": { "react-dom": "file:./stubs/react-dom-stub" }
// after
// "dependencies": { "react-dom": "^19.0.0" } // and remove the override Defensive patterns
Strategy: validation
Validate before calling
import {createRequire} from 'node:module';
const require = createRequire(import.meta.url);
const assertReactDomVersion = () => {
const v = require('react-dom/package.json').version as string;
const major = v.split('.')[0];
if (major === '0') {
throw new Error(`react-dom resolves to version ${v}; install a real react-dom (18 or 19)`);
}
}; Prevention
- Do not alias or stub react-dom in production builds.
- Run npm ls react-dom (or bun pm ls react-dom) to confirm the resolved package and version.
- After removing overrides/stubs, delete node_modules and reinstall.
- Treat any react-dom version starting with '0' as a misconfiguration.
When it happens
Trigger: react-dom resolves to a module whose version string starts with '0' — a test mock, an empty stub, a placeholder package, or a corrupted/partial install reporting an invalid version.
Common situations: Module aliases mapping react-dom to a stub for tests; a corrupted node_modules; an override forcing a wrong package; a hand-rolled shim that hardcodes version '0.0.0'.
Related errors
- Could not find "react-dom" package. Did you install it?
- bundle() was called without arguments
- bundle() no longer supports the legacy positional arguments.
- bundle() was called without the `entryPoint` option
- You passed ${entryPoint} as your entry point, but this file
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/ce4830c646540cbb.
Report an issue: GitHub.