React 19.3 ships View Transitions and Fragment Refs
React 19.3 shipped on September 9, 2026. View Transitions and Fragment Refs are now stable, and the release carries no breaking changes.
3 min read

By the numbers
- pull requests behind the View Transitions work
- 47
- pull requests behind Fragment Refs
- 26
- contributors to the release
- 52
React 19.3 is out. The React team published the release on September 9, 2026, promoting two long-experimental features to stable: View Transitions and Fragment Refs. The release notes on GitHub credit 52 contributors, with 47 pull requests behind View Transitions alone and 26 behind Fragment Refs.
There are no breaking changes. Every feature here is something you opt into.
View Transitions, and when they actually fire
The new <ViewTransition> component animates elements as they enter, exit, move or resize. It does this through the browser's View Transition API rather than by animating in JavaScript.
The rule that catches people is which updates animate. React's documentation is explicit: "Updates not marked as Transitions don't trigger animations, as those are meant to be urgent and reflected immediately in the UI." Three things do cause an animation. A state update inside startTransition, a Suspense reveal, or an update from useDeferredValue.
So wrapping a component in <ViewTransition> and then calling setState normally produces no animation at all. That is the intended behavior, not a bug, and it is the first thing to check when nothing moves.
This Week In React notes a companion API, addTransitionType, which lets you "customize the animation directly from the code triggering it." That matters because the same component often needs to animate differently depending on what caused the change.
One platform limit is stated plainly by the React team: "Currently, <ViewTransition> only works in the DOM. We're working on support for React Native and other platforms."
Fragment Refs remove the wrapper div
Fragment Refs let you attach a ref to a <Fragment> and operate on the group of DOM nodes inside it as a unit.
The problem this solves is familiar. When you need a handle on several sibling elements, you normally add a wrapping <div> to hang the ref on. That wrapper then interferes with the styling and layout around it. Grid and flex children are the usual casualties.
The GitHub release notes describe the change as adding "Refs to <Fragment /> to support composable platform behavior." This Week In React frames the payoff as unlocking "new composition patterns that were previously difficult." The practical uses are event listening across a group and focus management.
The smaller changes
| Change | What it does |
|---|---|
| Independent Transitions | Transitions "render independently instead of being entangled into a single render, so a slow transition no longer holds up unrelated ones" |
browser() from react-dom | Returns "a usable which errors during server rendering and resolves in the browser," opting a subtree out of server rendering by triggering Suspense |
| Trusted Types support | Lets React cooperate with a Content-Security-Policy that requires trusted types, to prevent DOM-based XSS |
| Context in Server Components | <Context> can be rendered directly from a 'use client' module, with no separate provider wrapper component |
use(browser()) follows the normal rules for use. The React docs say it "can be called inside a conditional statement or after an early return," which is unusual and deliberate.
What this means for developers
Upgrade on its own merits, not for the animations. With no breaking changes, 19.3 is a routine version bump, and the two headline features are additive.
If you are adopting View Transitions, budget time for the Transition rule rather than for the CSS. Most of the confusion in early adoption will come from updates that quietly do not animate because they were never marked as Transitions. Audit where your state updates actually live before wrapping anything.
Check your browser support assumptions too. This leans on a browser API, not a React-only implementation, so your floor is whatever your users' browsers ship. That floor is moving faster than it used to, now that Chrome has gone to a two-week release cadence, but it still rules out animation as a guarantee. Treat it as an enhancement that degrades to no animation.
Fragment Refs are the change most likely to pay off quietly. If your codebase carries wrapper <div>s that exist only to hold a ref, each one is a candidate for deletion. Removing them also clears layout workarounds that were never about layout.
React Native teams get nothing from the headline feature this release. View Transitions are DOM-only today, and the React team has committed to other platforms without giving a date.
Sources
- React 19.3 - React
- Release 19.3.0 - GitHub
- This Week In React #296 - This Week In React
Related articles

JPEG XL critique says AVIF now beats it on compression
A new benchmark puts AVIF ahead of JPEG XL across the fidelity range, and clocks a 1,918-byte JPEG XL file at 17.43 seconds to decode.

TryNix runs any Nix package in a browser tab
TryNix boots a Linux kernel compiled to WebAssembly and runs any of 310,083 nixpkgs versions in a tab. Python 3 takes 7.5 seconds on a first visit.

Rustls 0.23.45 fixes a TLS 1.3 flaw open since 2024
Versions 0.23.13 through 0.23.44 accepted TLS 1.3 handshake messages at the wrong encryption level, a bug introduced in September 2024.
The daily brief
Three to five stories a day, and what each one means for the people who build software. Free, no spam.