{"record":{"id":"22491d510d2440f2","repo":"withastro/astro","slug":"unsupported-react-version-majorversion","errorCode":null,"errorMessage":"Unsupported React version: ${majorVersion}.","messagePattern":"Unsupported React version: (.+?)\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/integrations/react/src/container-renderer.ts","lineNumber":20,"sourceCode":"import {\n\tgetReactMajorVersion,\n\tisSupportedReactVersion,\n\ttype ReactVersionConfig,\n\tversionsConfig,\n} from './version.js';\n\nexport function getRenderer(reactConfig: ReactVersionConfig): AstroRenderer {\n\treturn {\n\t\tname: '@astrojs/react',\n\t\tclientEntrypoint: reactConfig.client,\n\t\tserverEntrypoint: reactConfig.server,\n\t};\n}\n\nexport function getContainerRenderer(): AstroRenderer {\n\tconst majorVersion = getReactMajorVersion();\n\tif (!isSupportedReactVersion(majorVersion)) {\n\t\tthrow new Error(`Unsupported React version: ${majorVersion}.`);\n\t}\n\treturn getRenderer(versionsConfig[majorVersion]);\n}\n","sourceCodeStart":2,"sourceCodeEnd":24,"githubUrl":"https://github.com/withastro/astro/blob/d081033d5fe8e8a68c4bbbad4af9d2deb9c74bca/packages/integrations/react/src/container-renderer.ts#L2-L24","documentation":"Thrown by `getContainerRenderer()` in @astrojs/react when the installed React major version is not in the supported set (17, 18, or 19 per `versionsConfig`). The container renderer needs version-specific server/client entrypoints that only exist for those majors.","triggerScenarios":"Calling `getContainerRenderer()` with React 16 or older, a pre-release/RC of an unreleased major (e.g. React 20 alpha), or when `react-dom`'s `version` export cannot be parsed (NaN major).","commonSituations":"Installing React 16 alongside @astrojs/react. A peer-dependency resolution that pulled in a mismatched React. Using a canary React build whose version string doesn't match `/\\d+\\./`.","solutions":["Pin React and React-DOM to a supported major: `pnpm add react@18 react-dom@18` (or 17/19).","Ensure both `react` and `react-dom` resolve to the same major; run `npm ls react react-dom` to check for duplicates.","If you need a newer React, upgrade @astrojs/react to a version that adds it to `versionsConfig`."],"exampleFix":"// before: react@16 installed\n// after\npnpm add react@18 react-dom@18","handlingStrategy":"type-guard","validationCode":"import { getReactMajorVersion, isSupportedReactVersion } from '@astrojs/react/version';\nconst major = getReactMajorVersion();\nif (!isSupportedReactVersion(major)) {\n  throw new Error(`Install React 17, 18, or 19 (got ${major}).`);\n}","typeGuard":"function isSupportedReact(major: number): major is 17 | 18 | 19 {\n  return major === 17 || major === 18 || major === 19;\n}","tryCatchPattern":null,"preventionTips":["Pin `react` and `react-dom` to the same supported major.","Add a postinstall check that verifies the resolved React major.","Run `npm ls react react-dom` in CI to catch version drift."],"tags":["react","container","version","peer-dependency"],"backgroundTag":null,"analyzedSha":"d081033d5fe8e8a68c4bbbad4af9d2deb9c74bca","analyzedAt":"2026-08-12T13:37:29.035Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}