This is a preview — how react's changelog would look hosted on Wakelog (100 entries found, first 15 shown). Nothing was saved. To make it real: sign up (30 seconds, no email), create a project, and paste the same URL in the Import box — you'll also get RSS, an embeddable widget, a README badge, and an API. Try another.

react

v19.3.0 (September 9, 2026)

Sep 9, 2026

Below is a list of all new features, APIs, and bug fixes.

Read the React 19.3 release post for more information.

New React Features
New React DOM Features
  • browser(): a new react-dom API that returns a usable which errors during server rendering and resolves in the browser. use(browser()) inside a <Suspense> boundary marks a subtree as browser-only without reporting a recoverable error (@gnoff: #37143, #37241)
  • Added an onBrowserBailout option to the react-dom/server APIs to observe when a subtree defers to the browser (@gnoff #37193)
Notable changes
  • Enable Trusted Types API integration (@rickhanlonii #35816)
  • Transitions now render independently instead of being entangled into a single render, so a slow transition no longer holds up unrelated ones (@acdlite #37290)
  • Added a DEV-only warning when a component appears to have been unblocked by calling use() conditionally (@hoxyq, @eps1lon: #37104, #37203, #37491)
All Changes
React
  • Fast Refresh Fixes
  • Fix Fast Refresh to find and remount edits to components wrapped behind lazy() (@sophiebits #36965)
  • Fix Fast Refresh so edits to a memo() comparison function take effect (@sophiebits #36964)
  • Fix Fast Refresh crash when an edit changes the kind of a component's type (@sophiebits #36963)
  • Unify hot reload type resolution for Fast Refresh (@sophiebits #36962)
  • Fix Fast Refresh to remount correctly when an edit changes the component kind (@sophiebits #36950)
  • Double invoke effects in StrictMode after Fast Refresh (@eps1lon #35962)
  • Performance Track Fixes
  • Prevent crash when accessing $$typeof in Performance Tracks (@eps1lon #35679)
  • Handle non-string function names in Performance Tracks (@eps1lon #35659)
  • Use minus (-) instead of en dash for removed props in Performance Tracks (@eps1lon #35649)
  • Handle arrays with bigints in deep objects in Performance Tracks (@eps1lon #35648)
  • Don't enumerate typed array props in Performance Tracks in DEV (@UditDewan #36913)
  • Bail out of diffing wide objects and arrays in Performance Tracks (@eps1lon #34742)
  • Clear potentially large performance measures in DEV (@hoxyq #34803)
  • Fix missing else branch for renders with no props change in Performance Tracks (@hoxyq #34837)
  • Activity Fixes
  • Fix useSyncExternalStore missing store mutations that happened while an Activity tree was hidden (@sophiebits #36947)
  • Hide portal contents when an Activity is hidden (@acdlite #35091)
  • Prevent metadata hoisting in hidden <Activity> trees (@ronnakamoto #34983)
  • Prevent errors thrown inside a hidden Activity from escaping to the visible UI (@acdlite #35074)
  • Don't unhide a node if a direct parent Offscreen is still hidden (@sebmarkbage #34821)
  • Don't show internal <Offscreen> component in error messages (@rickhanlonii #35763)
  • Warn in DEV when a component appears to have been unblocked by a conditional use() (@hoxyq, @eps1lon: #37104, #37203, #37491)
  • Render transitions independently instead of entangling them into a single render (@acdlite #37290)
  • Fix hang when updating a dehydrated boundary inside a hidden tree (@gaearon #37135)
  • Don't reacquire Host Singletons during dev effect validation (@gnoff #37113)
  • Only remove properties from Host Singletons on release (@gnoff #37112)
  • Don't invoke effects on moved children in StrictMode (@sophiebits #36948)
  • Throw a clearer error when a rejected Promise is incorrectly instrumented (@eps1lon #36328)
  • Fix context propagation into Suspense fallbacks (@acdlite #36160)
  • Fix context propagation through suspended Suspense boundaries (@acdlite #35839)
  • Fix useDeferredValue getting stuck (@gaearon #36134)
  • Update useActionState error message to say "action state" instead of "form state" (@rickhanlonii #35790)
  • Don't warn when rendering data block scripts (@eps1lon #35953)
  • Treat fibers with alternates as mounted in getNearestMountedFiber (@sebmarkbage #35578)
  • Always instrument the lazy initializer thenable (@gnoff #35521)
  • Annotate cascading updates for DevTools performance tracks in DEV (@huntie #34961)
  • Resolve the .default export of a React.lazy as the canonical value (@sebmarkbage #34906)
  • Limit owner stacks to 10 frames (@eps1lon #34864)
  • Ensure useEffectEvent reads latest values in forwardRef and memo() components (@eps1lon #34831)
React DOM
  • Copy source onto the synthetic toggle event (@lazerg #37389)
  • Update HTML parser rules for the new <select> parser (@josepharhar #34804)
  • Update defaultValue for type="number" inputs to match other input types (@sophiebits #36980)
  • Avoid setting innerHTML when it hasn't changed (@sophiebits #36949)
  • Forward the nonce option in ReactDOM.preloadModule() (@UditDewan #36851)
  • Support fetchPriority for module resources (@TheAlexLichter #36835)
  • Track stylesheet preloads when explicitly preloaded to avoid unnecessary suspension (@gnoff #36386)
  • Suggest correct casing for the misspelled credentialless iframe attribute (@vmx906 #36322)
  • Add credentialless as a recognized boolean attribute for iframes (@vmx906 #36148)
  • Prevent reentrant finishedTask from calling completeAll multiple times (@gnoff #36287)
  • Update the CSS shorthand property list (@kidonng #35636)
  • Support the maskType SVG prop (@sleitor #35921)
  • Add support for onFullscreenChange and onFullscreenError events (@chirokas #34621)
  • Include submitter in submit events (@eps1lon #35590)
  • Fire onReset when automatically resetting forms (@eps1lon #35176)
  • Use the FormData submitter parameter (@jenseng #29028)
  • Fix form status reset when component state is updated (@eps1lon #34075)
  • Batch updates from resize events until the next frame (@eps1lon #35117)
React Server
  • Add nonce to rendered import maps (@mattcosta7 #37339)
  • Add an onBrowserBailout option to observe subtrees that defer to the browser (@gnoff #37193)
  • Stop the caller's signal from retaining a finished render (@unstubbable #37315)
  • Construct the render lifetime controller only when it is needed (@unstubbable #37357)
  • Fix react-dom/server hanging on Deno (@fraidev #35235)
  • Extend stack overflow recovery to retries in SSR (@jackpope #36977)
  • Fix false-positive hydration mismatch on nonce attributes (@MaxwellCohen #37030)
  • Guard shell-error callbacks instead of nulling them out on the request (@eps1lon #36916)
  • Stop firing onAllReady after the shell errored (@eps1lon #36903)
  • Treat an incomplete tree as an error during error recovery (@acdlite #36911)
  • Fix non-script modulepreload tracking (@fallintoplace #36564)
  • Finalize postponed nextSegmentId after the prelude flush (@gaojude #36779)
  • Preserve referrerPolicy in image preload headers (@ulises-jeremias #36803)
  • Allow pending work to specialize abort reasons (@gnoff #36586)
  • Abort tasks that suspend after aborting during render (@gnoff #36585)
  • Finish abort in a scheduled task (@gnoff #36580)
  • Fix aborts during resumed rendering (@gnoff #36584)
  • Track abort state on the request (@gnoff #36583)
  • Model external work scheduling explicitly in the fb bundle (@gnoff #36576)
  • Continue reporting aborted task errors after a fatal abort (@gnoff #36575)
  • Disallow abort reentrancy (@gnoff #36574)
  • Stop transpiling computed property names (@eps1lon #36542)
  • Fix crash when capturing the callsite of a stalled use() of a rejected Flight chunk (@lubieowoce #36544)
  • Double invoke effects in Strict Mode during hydration (@eps1lon #35961)
  • Add additional task reentrancy protections in Fizz (@gnoff #36291)
  • Don't outline Suspense boundaries with suspensey CSS during shell flush (@gnoff #35824)
  • Push a stalled use() to the owner stack and debug task (@eps1lon #35226)
  • Fix useId tracking on replay (@gnoff #35518)
  • Correctly handle replaying when hydrating (@gnoff #35494)
  • Simplify the createSuspenseBoundary path (@sebmarkbage #35087)
  • Unify preamble-only fields to save a field on Suspense boundaries (@sebmarkbage #35068)
  • Unify prerender-only fields to save a field on Suspense boundaries (@sebmarkbage #35067)
  • Push halted awaits to the owner stack for late-arriving

v19.2.8 (July 21st, 2026)

Jul 21, 2026
React Server Components
  • Performance improvements when decoding (#37087 by @eps1lon)

v19.1.9 (July 21st, 2026)

Jul 21, 2026
React Server Components
  • Performance improvements when decoding (#37088 by @eps1lon)

v19.0.8 (July 21st, 2026)

Jul 21, 2026
React Server Components
  • Performance improvements when decoding (#37089 by @eps1lon)

v19.2.7 (June 1st, 2026)

Jun 1, 2026
React Server Components
  • Fixed missing FormData entries in Server Actions which regressed in 19.2.6 (#36566 by @unstubbable)

v19.1.8 (June 1st, 2026)

Jun 1, 2026
React Server Components
  • Fixed missing FormData entries in Server Actions which regressed in 19.1.7 (#36567 by @unstubbable)

v19.0.7 (June 1st, 2026)

Jun 1, 2026
React Server Components
  • Fixed missing FormData entries in Server Actions which regressed in 19.0.6 (#36568 by @unstubbable)

v19.2.6 (May 6th, 2026)

May 6, 2026
React Server Components
  • Type hardening and performance improvements (#36425 by @eps1lon and @unstubbable)

v19.1.7 (May 6th, 2026)

May 6, 2026
React Server Components
  • Type hardening and performance improvements (#36425 by @eps1lon and @unstubbable)

v19.0.6 (May 6th, 2026)

May 6, 2026
React Server Components
  • Type hardening and performance improvements (#36425 by @eps1lon and @unstubbable)

eslint-plugin-react-hooks@7.1.1 (April 17, 2026)

Apr 17, 2026

Note: 7.1.0 accidentally removed the component-hook-factories rule, causing errors for users who referenced it in their ESLint config. This is now fixed.

  • Add deprecated no-op component-hook-factories rule for backwards compatibility. (@mofeiZ in #36307)

eslint-plugin-react-hooks@7.1.0 (April 16, 2026)

Apr 17, 2026

This release adds ESLint v10 support, improves performance by skipping compilation for non-React files, and includes compiler lint improvements including better set-state-in-effect detection, improved ref validation, and more helpful error reporting.

v19.2.5 (April 8th, 2026)

Apr 8, 2026
React Server Components
  • Add more cycle protections (#36236 by @eps1lon and @unstubbable)

v19.1.6 (April 8th, 2026)

Apr 8, 2026
React Server Components
  • Add more cycle protections (#36236 by @eps1lon and @unstubbable)

v19.0.5 (April 8th, 2026)

Apr 8, 2026
React Server Components
  • Add more cycle protections (#36236 by @eps1lon and @unstubbable)

Claim your changelog — free