React

Frameworks & LibrariesMIT

The library for web and native user interfaces.

Latest v19.3.0 · by MetaWritten in JavaScriptWebsitefacebook/reactRSS

Branches

19.3
v19.3.0
19.2
v19.2.8
19.1
v19.1.9
19.0
v19.0.8

Release activity

Release activity — 11 releases across 5 days since Apr 17, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Apr 17, 2026. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
MondayNo releases on May 25, 20263 releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 2026No releases on Sep 7, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 20263 releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026No releases on Aug 25, 2026No releases on Sep 1, 2026No releases on Sep 8, 2026
WednesdayNo releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026No releases on Aug 26, 2026No releases on Sep 2, 20261 release on Sep 9, 2026
ThursdayNo releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026No releases on Aug 20, 2026No releases on Aug 27, 2026No releases on Sep 3, 2026No releases on Sep 10, 2026
FridayNo releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026No releases on Sep 11, 2026
SaturdayNo releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026

11 releases since Apr 17, 2026, busiest day 3

Changelog

Filter releases by branch
11 of 11 releases
v19.3.0Latest

19.3.0 (September 9, 2026)

Added 1
  • Add <ViewTransition /> component and addTransitionType API to power View Transition animations in React

From React

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 I/O info (@unstubbable #35019)
  • Include all Node.js APIs in the Bun entrypoint for react-dom/server (@RiskyMH #34193)
  • Detach a Suspense boundary after flushing its segment (@gnoff #34694)
React Server Components
  • Keep an element pending while a referenced row is resolving (@unstubbable #37542)
  • Fix RangeError from exponential debug info growth (@unstubbable #37481)
  • Abort the cache signal when debug objects are retained (@unstubbable #37342)
  • Transfer key validation of lazy nodes when they are unwrapped (@unstubbable #37258)
  • Add pending_weak to the Flight thenable protocol (@acdlite #37154)
  • Outline and dedupe repeated strings (@gaearon #37147)
  • Port Reply Server traversal guards to the Flight Client (@eps1lon #37144)
  • Define Flight chunk .then with Object.defineProperty (@eps1lon #37109)
  • Support Turbopack's experimental array format for chunks (@sampoder #37095)
  • Limit fake JSX call site stacks to 10 frames (@timneutkens #37086)
  • Improve performance when decoding Flight replies (@gnoff #37090)
  • Recognize Node 22+ V8 frames for Promise statics in debug info (@gaearon #36969)
  • Tailor the warning for binary data serialized through toJSON (Node Buffer) (@unstubbable #36873)
  • Resolve models before JSON.stringify for faster serialization (@mhart #36795)
  • Prune debug info when chunks error (@gnoff #36782)
  • Avoid main-thread stalls from large debug strings (@unstubbable #36570)
  • Fix stranded row content under Node stream backpressure (@unstubbable #36516)
  • Fix dropped FormData entries in decodeReplyFromBusboy (@unstubbable #36468)
  • Harden types and improve performance of Flight replies (@eps1lon #36425)
  • Add more cycle protections to Flight replies (@eps1lon #36236)
  • Transport AggregateError.errors (@eps1lon #36156)
  • Bail out early when a backing entry for Blob deserialization is not a Blob (@eps1lon #36055)
  • Clear chunk reason after successful module initialization (@unstubbable #36024)
  • Add support for transporting Error.cause (@eps1lon #35810)
  • Walk parsed JSON instead of using a reviver for faster RSC payload parsing (@timneutkens #35776)
  • Skip transferReferencedDebugInfo during debug info resolution (@unstubbable #35795)
  • Add unstable_allowPartialStream option to Flight Client (@unstubbable #35731)
  • Fix encodeReply for JSX with temporary references (@unstubbable #35730)
  • Fix debug channel flag in Node.js renderToPipeableStream (@feedthejim #35724)
  • Fix stack overflow in visitAsyncNode with deep async chains (@unstubbable #35612)
  • Allow Server Components to render context providers from client modules (@rickhanlonii #35675)
  • Allow overriding request.timeOrigin via options.startTime (@lubieowoce #35598)
  • Warn once if eval is disabled in the dev environment (@eps1lon #35661)
  • Restore original function name in dev server callstacks served with unsafe-eval (@eps1lon #35650)
  • Fix react-markup types for server references (@eps1lon #35634)
  • Add more DoS mitigations to Flight replies and harden Flight (@unstubbable #35632)
  • Allow cyclic references to be serialized when unwrapping lazy elements (@unstubbable #35471)
  • Improve cyclic thenable detection in Flight reply server (@cvan20191 #35369)
  • Add extra loop protection to Flight reply server (@sebmarkbage #35351)
  • Patch Promise cycles and toString on Server Functions (@sebmarkbage #35345)
  • Move react-server-dom-webpack/*.unbundled to private react-server-dom-unbundled (@eps1lon #35290)
  • Never parse then functions in Flight replies (@sebmarkbage #35289)
  • Patch Flight reply server with fixes from Flight Client (@sebmarkbage #35277)
  • Complete the list of Node.js internal Promise awaits (@eps1lon #35161)
  • Reduce risk of maximum call stack exceeded when emitting async sequences (@eps1lon #35159)
  • Fix pending chunks count for streams and async iterables in DEV (@unstubbable #35143)
  • Fix broken byte stream parsing caused by buffer detachment (@unstubbable #35127)
  • Fix hasReadable flag in Node.js clients' debug channel (@unstubbable #35039)
  • Fix debug info filtering to include later resolved I/O (@unstubbable #35036)
  • Cache the value when visiting the same I/O or Promise along different paths (@sebmarkbage #35005)
  • Clone subsequent I/O nodes when resolved more than once (@sebmarkbage #35003)
  • Fix hang after resolving cyclic references (@unstubbable #34988)
  • Allow passing DEV-only startTime as an option (@sebmarkbage #34912)
  • Ignore bound-anonymous-fn resources as they're not considered I/O (@sebmarkbage #34911)
  • Fix detached ArrayBuffer error when streaming typed arrays (@unstubbable #34849)
  • Exclude RSC stream if the stream resolves in a task (@sebmarkbage #34838)
  • Forward the current environment when forwarding I/O entries (@sebmarkbage #34836)
  • Look for moved debug info when logging component performance track (@sebmarkbage #34839)
  • Respect displayName of Promise instances on the server (@sebmarkbage #34825)
  • Avoid unnecessary indirection when serializing debug info (@unstubbable #34797)
  • Fix preload as attribute for stylesheets (@unstubbable #34760)
  • Don't serialize toJSON in debug path and omit wide arrays (@sebmarkbage #34759)
  • Add support for <Activity> (@eps1lon #34697)
View originalPermalink
How v19.3.0 went
v19.2.8

19.2.8 (July 21st, 2026)

Changed 1
  • Improve performance when decoding React Server Components

From React

React Server Components
  • Performance improvements when decoding (#37087 by @eps1lon)
View originalPermalink
How v19.2.8 went
v19.1.9

19.1.9 (July 21st, 2026)

Changed 1
  • Improve performance when decoding React Server Components

From React

React Server Components
  • Performance improvements when decoding (#37088 by @eps1lon)
View originalPermalink
How v19.1.9 went
v19.0.8

19.0.8 (July 21st, 2026)

Changed 1
  • Improve performance when decoding React Server Components

From React

React Server Components
  • Performance improvements when decoding (#37089 by @eps1lon)
View originalPermalink
How v19.0.8 went
v19.2.7

19.2.7 (June 1st, 2026)

Fixed 1
  • Fixed missing FormData entries in Server Actions which regressed in 19.2.6

From React

React Server Components
  • Fixed missing FormData entries in Server Actions which regressed in 19.2.6 (#36566 by @unstubbable)
View originalPermalink
How v19.2.7 went
v19.1.8

19.1.8 (June 1st, 2026)

Fixed 1
  • Fixed missing FormData entries in Server Actions which regressed in 19.1.7

From React

React Server Components
  • Fixed missing FormData entries in Server Actions which regressed in 19.1.7 (#36567 by @unstubbable)
View originalPermalink
How v19.1.8 went
v19.0.7

19.0.7 (June 1st, 2026)

Fixed 1
  • Fixed missing FormData entries in Server Actions which regressed in 19.0.6

From React

React Server Components
  • Fixed missing FormData entries in Server Actions which regressed in 19.0.6 (#36568 by @unstubbable)
View originalPermalink
How v19.0.7 went
v19.2.6

19.2.6 (May 6th, 2026)

Changed 1
  • Type hardening and performance improvements for React Server Components

From React

React Server Components
  • Type hardening and performance improvements (#36425 by @eps1lon and @unstubbable)
View originalPermalink
How v19.2.6 went
v19.1.7

19.1.7 (May 6th, 2026)

Changed 1
  • Improve type hardening and performance in React Server Components

From React

React Server Components
  • Type hardening and performance improvements (#36425 by @eps1lon and @unstubbable)
View originalPermalink
How v19.1.7 went
v19.0.6

19.0.6 (May 6th, 2026)

Changed 1
  • Improve type hardening and performance for React Server Components

From React

React Server Components
  • Type hardening and performance improvements (#36425 by @eps1lon and @unstubbable)
View originalPermalink
How v19.0.6 went
eslint-plugin-react-hooks@7.1.1

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

Fixed 1
  • Add deprecated no-op component-hook-factories rule for backwards compatibility

From React

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)
View originalPermalink
How eslint-plugin-react-hooks@7.1.1 went
View all

Discussion

If you publish React, you can claim this product by proving you administer its repository.