All Insights
technical

The React 19 Upgrade Experience

I migrated three production apps. Here's what to expect.

June 8, 20247 min read

React 19 brought useTransition improvements, the new use() hook, and the Activity component. The migration was smoother than I feared. Here's the breakdown.

React 19 shipped in late 2024 and I migrated three apps. The verdict: smoother than I expected.

What's new that I actually use

  • use() - replaces a lot of useEffect-for-data patterns. Cleaner, more composable.
  • Actions - server actions are now first-class. Good for forms.
  • <Activity> - control what's mounted vs hidden cleanly. Useful for tabbed UIs.
  • Improved hydration error messages - finally readable.

What broke in migration

  • A handful of third-party libraries that used React.forwardRef in the old style. Most patched within weeks of the release.
  • Some dev-only warnings became errors. Mostly correct ones.
  • A few PropTypes deprecations (long overdue).

What didn't break

  • Existing useState/useEffect/useReducer code. All works.
  • Most third-party libraries. The big ones were ready.
  • Build tooling. Vite and Next.js had React 19 paths within days of GA.

My migration checklist

  1. Read the release notes.
  2. Check your direct dependencies for React 19 compatibility (npm-compatibility-checker)
  3. Update React + ReactDOM together
  4. Run the codemod tools React provides
  5. Fix the one or two warnings that appear
  6. Run your test suite
  7. Deploy

For my three apps, the migration was 2-4 hours each.

When NOT to upgrade

  • If you're on a fork of React (uncommon)
  • If a critical dependency is stuck on 18 (check first)
  • If you have time-sensitive work in flight that the migration would block

For most teams: upgrade. The benefits compound.

References

reactfrontend

Want to discuss this topic?

I'm always happy to dive deeper. Reach out if you have questions or want to collaborate.

Get in Touch

Command Palette

Search for a command to run...