编程 React 19.3.0 版本解读:ViewTransition 动画、Fragment Refs 与 browser() 新 API

2026-09-10 12:17:35

React 19.3.0 版本解读:ViewTransition 动画、Fragment Refs 与 browser() 新 API

React 于 2026-09-09 发布 19.3.0,这是一次以新 API 与渲染行为改进为主的 minor 版本:带来 View Transition 动画支持、Fragment Refs、服务端友好的 browser() API,并让 Transitions 独立渲染,不再互相阻塞。

新特性

  • <ViewTransition />addTransitionType:新增 ViewTransition 组件与配套 API,为 React 应用接入浏览器 View Transition 动画提供一等公民支持,可在状态更新时驱动平滑的视图过渡效果。
  • Fragment Refs<Fragment> 现在支持 ref,可在不引入额外 DOM 节点的前提下获得可组合的平台行为。
  • browser() 新 API:新增 react-dom API browser()——在服务端渲染时抛错、在浏览器中解析。在 <Suspense> 边界内使用 use(browser()) 可将子树标记为仅浏览器渲染,且不会上报可恢复错误。
  • onBrowserBailout 选项:react-dom/server API 新增该选项,用于观察哪些子树延迟到浏览器端渲染。
  • Transitions 独立渲染:Transitions 不再被纠缠进同一次渲染,慢的 transition 不再拖住无关的 transition。
  • Trusted Types API 集成:默认启用 Trusted Types 集成,增强 XSS 防护兼容性。
  • DEV-only 警告:组件看起来被条件式 use() 调用「解除阻塞」时给出开发警告。

其他值得关注的变更

  • 修复 Fast Refresh 在 lazy()memo() 比较函数等场景下的热更新问题(编辑 memo() 比较函数现在会生效);
  • Activity 相关修复:隐藏 Activity 时正确隐藏 portal 内容、防止隐藏树中错误逃逸到可见 UI、修复 useSyncExternalStore 在 Activity 隐藏期间丢失 store 变更等;
  • React DOM:submit 事件包含 submitter、自动重置表单时触发 onResettype="number" 输入的 defaultValue 行为与其他输入类型对齐、新增 onFullscreenChange/onFullscreenError 事件、支持 maskType SVG 属性与 iframe credentialless 布尔属性等;
  • 修复 useDeferredValue 卡住、Suspense fallback 的 context 传播等问题。

适用场景

  • 需要页面级/列表级过渡动画的 React 应用可优先评估 <ViewTransition />
  • 依赖 react-dom/server 做 SSR、且部分组件仅浏览器可用的场景,可用 browser() + onBrowserBailout 更优雅地处理降级;
  • 多 transition 并发场景(如表单提交与导航同时发生)受益于独立渲染行为;
  • 升级注意:本次为功能版本,建议升级后跑一遍 Fast Refresh 与 StrictMode 相关回归。

来源:facebook/react Release v19.3.0

推荐文章

程序员茄子在线接单