The official React 19 migration codemod is useful. It handles the mechanical

stuff: ReactDOM.render → createRoot, string refs, prop-types cleanup.

But it leaves three categories of silent breakage that don't surface until

something breaks in production.

1. Peer-dep conflicts the installer swallows