Change8

v19.2.0

Breaking Changes
📦 reactView on GitHub →
4 breaking9 features🐛 9 fixes1 deprecations🔧 14 symbols

Summary

React 19.2 introduces the <Activity> component, useEffectEvent hook, and new resume APIs for partial pre-rendering. It also includes significant updates to the ESLint plugin and changes the ID generation format for useId.

⚠️ Breaking Changes

  • eslint-plugin-react-hooks now requires Node.js 18 or newer.
  • eslint-plugin-react-hooks 'recommended' preset now uses Flat config. Legacy config users must switch to 'recommended-legacy'.
  • useId now generates IDs using underscores instead of colons, which may affect CSS selectors or tests relying on the specific ID format.
  • react-reconciler: createContainer and createHydrationContainer had their parameter order adjusted.

Migration Steps

  1. Update ESLint configuration to use 'recommended-legacy' if you are not yet using Flat config.
  2. Update CSS selectors or automation scripts that depend on useId generating colon-based IDs (e.g., :r0: to _r0_).
  3. Update custom reconcilers using createContainer or createHydrationContainer to match the new parameter order.

✨ New Features

  • <Activity>: New API to hide/restore UI and internal state of children.
  • useEffectEvent: New Hook to extract non-reactive logic into Effect Events.
  • cacheSignal: New RSC API to detect when cache() lifetime ends.
  • React Performance tracks: New timeline integration for browser developer tools.
  • Partial Pre-rendering (PPR) Resume APIs: Added resume, resumeAndPrerender (Web Streams) and resumeToPipeableStream, resumeAndPrerenderToNodeStream (Node Streams).
  • Node Web Streams support (prerender, renderToReadableStream) added to SSR APIs for Node.js.
  • React DOM now batches suspense boundary reveals to match client-side behavior.
  • Added support for .mjs file extension in Webpack for RSC.
  • Support for Async Modules in Turbopack Server References.

🐛 Bug Fixes

  • Fix infinite useDeferredValue loop in popstate event.
  • Fix crash when submitting forms with Client Actions.
  • Fix useDeferredValue bug when an initial value was passed.
  • Fix React.use inside React.lazy-ed components.
  • Fix hanging when suspending after aborting while rendering.
  • Fix bug when returning Client References from Server Functions.
  • Fix stack overflow on wide trees during Hot Reload.
  • Fix missing key warning in RSC.
  • Stop warning for ARIA 1.3 attributes.

🔧 Affected Symbols

ActivityuseEffectEventcacheSignalresumeresumeAndPrerenderresumeToPipeableStreamresumeAndPrerenderToNodeStreamprerenderuseIduseDeferredValuecreateContainercreateHydrationContainerrenderToReadableStreamuse

⚡ Deprecations

  • eslint-plugin-react-hooks version 6.0.0 was deprecated and replaced by 6.1.0.