React 19.3 is out: stable View Transitions, Fragment Refs and a few more useful features ⚛️⚡️
React 19.3 stabilizes View Transitions and Fragment Refs, with browser-only components, Trusted Types and context in RSC.

The React team has shipped a fresh React 19.3 release. The main event: experimental features we’ve been watching in Canary builds have finally reached official stable status.
The important additions:
-
The
<ViewTransition>API is now stable Transition animations when components mount, unmount or change state now work natively through the browser’s View Transitions API.- Animations can be customized through CSS classes (
:active-view-transition-type) or controlled throughaddTransitionTypedirectly in JS code. - A particularly nice touch is the deep integration with
<Suspense>: placeholders (fallbacks) appear instantly, while the actual content smoothly animates into view without flickering or delays.
- Animations can be customized through CSS classes (
-
Fragment Refs Previously, attaching a global event listener or
IntersectionObserver, or managing focus for a group of neighboring elements, required wrapping them in a technical<div>. Now you can pass arefdirectly to<React.Fragment>/<>, with no extra DOM nodes. -
use(browser()): native opt-out from SSR for components There’s now an elegant way to mark a component as browser-only withoutuseEffectworkarounds or checkingtypeof window !== 'undefined'. -
Trusted Types support (XSS protection) React DOM no longer forcibly converts values to strings when passing them to DOM APIs. Trusted Types objects (
TrustedHTML,TrustedScript) now pass through validation natively, making strictContent-Security-Policypolicies easy to comply with. -
Context directly in Server Components Previously, reading client context inside RSC required building client wrappers (
Provider). In 19.3, content from'use client'modules can be passed through and rendered directly on the server.
Read the detailed blog announcement
Have you tried native View Transitions yet, or are you still animating the old-fashioned way with Framer Motion / CSS classes?