You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/blog/2024/04/25/react-19-upgrade-guide.md
+68-2Lines changed: 68 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,7 @@ For a list of changes in 18.3 see the [Release Notes](https://github.com/faceboo
39
39
In this post, we will guide you through the steps for upgrading libraries to React 19 beta:
40
40
41
41
-[Installing](#installing)
42
+
-[Codemods](#codemods)
42
43
-[Breaking changes](#breaking-changes)
43
44
-[New deprecations](#new-deprecations)
44
45
-[Notable changes](#notable-changes)
@@ -97,6 +98,37 @@ If you're using TypeScript, you also need to update the types. Once React 19 is
97
98
98
99
We're also including a codemod for the most common replacements. See [TypeScript changes](#typescript-changes) below.
99
100
101
+
## Codemods {/*codemods*/}
102
+
103
+
To help with the upgrade, we've worked with the team at [codemod.com](https://codemod.com) to publish codemods that will automatically update your code to many of the new APIs and patterns in React 19.
104
+
105
+
All codemods are available in the [`react-codemod` repo](https://github.com/reactjs/react-codemod) and the Codemod team have joined in helping maintain the codemods. To run these codemods, we recommend using the `codemod` command instead of the `react-codemod` because it runs faster, handles more complex code migrations, and provides better support for TypeScript.
106
+
107
+
108
+
<Note>
109
+
110
+
#### Run all React 19 codemods {/*run-all-react-19-codemods*/}
111
+
112
+
Run all codemods listed in this guide with the React 19 `codemod` recipe:
113
+
114
+
```bash
115
+
npx codemod@latest react/19/migration-recipe
116
+
```
117
+
118
+
This will run the following codemods from `react-codemod`:
#### Removed: `propTypes` and `defaultProps` for functions {/*removed-proptypes-and-defaultprops*/}
131
-
`PropTypes` were deprecated in [April 2017 (v15.5.0)](https://legacy.reactjs.org/blog/2017/04/07/react-v15.5.0.html#new-deprecation-warnings).
163
+
`PropTypes` were deprecated in [April 2017 (v15.5.0)](https://legacy.reactjs.org/blog/2017/04/07/react-v15.5.0.html#new-deprecation-warnings).
132
164
133
165
In React 19, we're removing the `propType` checks from the React package, and using them will be silently ignored. If you're using `propTypes`, we recommend migrating to TypeScript or another type-checking solution.
#### Removed: Legacy Context using `contextTypes` and `getChildContext` {/*removed-removing-legacy-context*/}
162
204
163
205
Legacy Context was deprecated in [October 2018 (v16.6.0)](https://legacy.reactjs.org/blog/2018/10/23/react-v-16-6.html).
@@ -253,7 +295,11 @@ class MyComponent extends React.Component {
253
295
254
296
<Note>
255
297
256
-
To help with the migration, we will be publishing a [react-codemod](https://github.com/reactjs/react-codemod/#string-refs) to automatically replace string refs with `ref` callbacks. Follow [this PR](https://github.com/reactjs/react-codemod/pull/309) for updates and to try it out.
298
+
Codemod string refs with `ref` callbacks:
299
+
300
+
```bash
301
+
npx codemod@latest react/19/replace-string-ref
302
+
```
257
303
258
304
</Note>
259
305
@@ -340,6 +386,16 @@ All other `test-utils` functions have been removed. These utilities were uncommo
340
386
341
387
See the [warning page](https://react.dev/warnings/react-dom-test-utils) for alternatives.
`ReactDOM.render` was deprecated in [March 2022 (v18.0.0)](https://react.dev/blog/2022/03/08/react-18-upgrade-guide). In React 19, we're removing `ReactDOM.render` and you'll need to migrate to using [`ReactDOM.createRoot`](https://react.dev/reference/react-dom/client/createRoot):
`ReactDOM.hydrate` was deprecated in [March 2022 (v18.0.0)](https://react.dev/blog/2022/03/08/react-18-upgrade-guide). In React 19, we're removing `ReactDOM.hydrate` you'll need to migrate to using [`ReactDOM.hydrateRoot`](https://react.dev/reference/react-dom/client/hydrateRoot),
0 commit comments