Problem to solve
Dependabot split the React 19 upgrade into #175 (react, @types/react) and #179 (react-dom, @types/react-dom). Neither can pass alone: npm ci fails with ERESOLVE on the React 18/19 peer mismatch.
Impact
Medium
Proposed solution
Per ADR-004, one migration PR moving react, react-dom, @types/react, @types/react-dom to 19.x together, checking the React 19 breaking changes against the client code (ReactDOM.render, string refs, legacy context, propTypes/defaultProps on function components, act import location in tests), then close #175 and #179 as superseded. #184 adds a Dependabot react group so future bumps arrive together.
Constraints or notes
Client-only. Validation: npm ci, npm run lint, npm test, npm run build, smoke in CI.
Problem to solve
Dependabot split the React 19 upgrade into #175 (
react,@types/react) and #179 (react-dom,@types/react-dom). Neither can pass alone:npm cifails withERESOLVEon the React 18/19 peer mismatch.Impact
Medium
Proposed solution
Per ADR-004, one migration PR moving
react,react-dom,@types/react,@types/react-domto 19.x together, checking the React 19 breaking changes against the client code (ReactDOM.render, string refs, legacy context,propTypes/defaultPropson function components,actimport location in tests), then close #175 and #179 as superseded. #184 adds a Dependabotreactgroup so future bumps arrive together.Constraints or notes
Client-only. Validation:
npm ci,npm run lint,npm test,npm run build, smoke in CI.