React Native 0.83 - React 19.2,新 DevTools 功能,无破坏性变更
今天我们很高兴发布 React Native 0.83!
该版本包含 React 19.2,为 React Native DevTools 带来了显著的新功能,并支持 Web Performance 和 Intersection Observer API(Canary)。这也是首个没有用户可感知破坏性变更的 React Native 版本。
亮点
React 19.2
本次发布包含 React 19.2,为 React Native 带来了新的 <Activity> 组件和 useEffectEvent API。
发布时,react-native@0.83.0 依赖于 react@19.2.0,你可能也注意到了最近关于 React 服务器组件的严重安全漏洞 的通告。
我们要强调的是,React Native 不直接受此漏洞影响,因为它不依赖受影响的包:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
但是,如果你是在包含这些包的monorepo中使用 React Native,请务必立刻检查并升级它们。
我们将在下一个补丁版本中更新所有 React 依赖到 19.2.1。
<Activity>
<Activity> 允许你将应用划分成可以控制和优先处理的“活动”块。你可以用 Activity 替代条件渲染的方式,目前支持两种模式:'visible' 和 'hidden'。
hidden:隐藏子元素,卸载副作用,并推迟所有更新直到 React 没有工作要做。visible:显示子元素,激活副作用,允许正常处理更新。
用 <Activity mode='hidden'> 隐藏的树保持其状态。因此,当再次显示时,例如会保持之前用户的搜索状态和选中状态。
| React 19.1.1 | React 19.2.1 |
|---|---|
![]() | ![]() |
你可以在 React 文档 中查看更多关于 <Activity> 的内容。
useEffectEvent
一个常见的 useEffect 用法是向应用代码通知外部系统的“事件”。这个用法的问题是,任何依赖值变化都会导致相关 Effect 重新执行。
为了解决这个问题,大多数用户会禁用 lint 规则并排除依赖,但这可能导致错误,因为 lint 不再帮你维护正确的依赖。
使用 useEffectEvent,你可以将“事件”逻辑从发出事件的 Effect 中分离出来。
你可以在 React 文档 中了解更多关于 useEffectEvent 的内容。
新的 DevTools 功能
在 0.83 版本中,我们为 React Native DevTools 带来了一些期待已久的功能和体验提升。
网络和性能面板
网络检查和性能跟踪是 React Native DevTools 中两项强大的新能力,现已可用。

网络检查 现支持所有 React Native 应用,可以查看和理解应用发出的网络请求。请求日志包含详细元数据,如时间信息、请求/响应头及响应预览。此外——首次支持——你可以通过 Initiator 标签查看请求源自代码的具体位置。
💡 网络事件覆盖及 Expo 支持
捕获哪些网络事件?
目前,我们记录所有通过 fetch()、XMLHttpRequest 和 <Image> 发送的网络请求 —— 未来将支持 Expo Fetch 等自定义网络库。
Expo 网络差异
因此,使用 Expo 的应用仍会看到 “Expo 网络” 面板 —— 由 Expo 框架实现,记录额外请求源,但功能稍弱:
- 覆盖 Expo 特有的网络事件。
- 不支持请求发起者功能。
- 无法与性能面板整合。
我们正在与 Expo 合作,计划未来版本将 Expo Fetch 和第三方网络库接入我们的网络检查管线。

性能跟踪 允许你在应用内录制性能会话,了解 JavaScript 执行情况和耗时操作。React Native 中展示 JavaScript 执行、React 性能轨迹、网络事件和自定义的 User Timing,均在单一时间轴上呈现。
结合 0.83 中的 Web Performance API 支持,这是一套强大的功能,能细粒度洞察导致 React Native 应用卡顿的原因。我们鼓励大家尝试性能面板,将其作为日常工作的一部分。
了解更多关于最新 React Native DevTools 功能 和 React 性能轨迹。
新桌面应用
之前,React Native DevTools 在浏览器中启动,需要安装 Chrome 或 Edge。现在我们推出全新打包桌面应用,体验大幅改进,特点包括:
- 零安装设置同之前一样,且不再依赖网页浏览器。
- 启动更快,采用轻量且经过公证的桌面二进制文件。少数情况下(如公司防火墙)下载失败,会回退到浏览器启动方式。
- 更好的窗口管理:macOS 上支持更优多任务处理,断点自动激活窗口,应用重新连接时自动置顶,重启时保存窗口布局。
- 更高稳定性,DevTools 进程独立于个人浏览器配置,特别解决了某些预装 Chrome 扩展导致 DevTools 崩溃的问题。

Intersection Observer(Canary)
作为将 Web API 引入 React Native 的努力之一,我们在 0.83 的canary 版本中添加了对 IntersectionObserver 的支持。
IntersectionObserver 允许你异步监听目标元素与其祖先元素布局交叉情况。详情请参见我们的 API 和 实现文档。RNTester 中也包含了相关 示例。
其他变更
Web Performance API 正式稳定
自 0.82 起,React Native 实现了 Web 版中部分 Performance API,现已正式稳定发布:
- 高精度时间:定义了
performance.now()和performance.timeOrigin。 - 性能时间线:定义
PerformanceObserver及访问性能条目方法 (getEntries()、getEntriesByType()、getEntriesByName())。 - 用户计时:定义
performance.mark和performance.measure。 - 事件计时 API:定义上报给
PerformanceObserver的event条目类型。 - 长期任务 API:定义上报给
PerformanceObserver的longtask条目类型。
这些 API 允许你跟踪应用中的各种性能指标,可在 React Native DevTools 的性能面板中查看,也能通过 PerformanceObserver 在运行时使用。
PerformanceObserver 还支持生产环境构建,为捕获真实应用性能指标开启了新可能。
实验特性 - Hermes V1

Hermes V1 是 Hermes 的下一个演进版本,编译器和运行时均有显著改进,大幅提升 JavaScript 性能。
在 React Native 0.82 中,我们作为实验特性首次发布了 Hermes V1。0.83 中,Hermes V1 性能进一步增强。
💡 如何启用 Hermes V1
注意:Hermes V1 目前仍是实验版,需要从源码构建 React Native 以便尝试。
在项目中尝试 Hermes V1,步骤如下:
- 通过修改
package.json中相关部分,强制包管理器解析 Hermes V1 编译器的实验版本(版本号用于实验阶段):
- yarn
- npm
"resolutions": { "hermes-compiler": "250829098.0.4" }
"overrides": { "hermes-compiler": "250829098.0.4" }
-
安卓启用 Hermes V1,在
android/gradle.properties中添加:android/gradle.propertieshermesV1Enabled=true并通过编辑
android/settings.gradle配置 React Native 从源码构建:android/settings.gradleincludeBuild('../node_modules/react-native') {
dependencySubstitution {
substitute(module("com.facebook.react:react-android")).using(project(":packages:react-native:ReactAndroid"))
substitute(module("com.facebook.react:react-native")).using(project(":packages:react-native:ReactAndroid"))
substitute(project(":packages:react-native:ReactAndroid:hermes-engine")).using(module("com.facebook.hermes:hermes-android:250829098.0.1"))
}
} -
iOS 启用 Hermes V1,安装 CocoaPods 时传入环境变量:
RCT_HERMES_V1_ENABLED=1 bundle exec pod install注意 Hermes V1 与预编译 React Native 构建不兼容,安装 pods 时请勿使用
RCT_USE_PREBUILT_RNCORE标志。 -
在应用或 DevTools 控制台中运行以下代码确认 Hermes 版本,应与步骤 1 中指定的版本号匹配(250829098.0.1):
// Hermes V1 预期返回 "250829098.0.1"
HermesInternal.getRuntimeProperties()['OSS Release Version'];
实验特性 - iOS 上编译时剔除 Legacy Architecture
本次发布新增 iOS 标志,允许在编译时剔除 Legacy Architecture 代码。
如果你的应用已切换至 New Architecture,可以通过以下命令安装 pods 来尝试剔除旧架构代码:
RCT_REMOVE_LEGACY_ARCH=1 bundle exec pod install
这能缩短构建时间并减小应用体积,具体效果取决于你使用的第三方库数量。在我们测试的新项目(无依赖)中,构建时间从 73.0 秒降至 58.2 秒,应用大小从 51.2Mb 降至 48.2Mb。
RCT_REMOVE_LEGACY_ARCH 不兼容 React Native 预编译二进制。如果使用预编译二进制,需重新安装 pods 并从源码构建应用。
实验特性 - iOS 上调试预编译二进制
本版本新增调试自带预编译二进制中 React Native 代码的能力,主要面向库维护者或开发原生模块及组件的用户。
调试预编译二进制的步骤如下:
# 在项目 ios 目录下执行
bundle exec pod cache clean --all
bundle exec pod deintegrate
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1
RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS=1 bundle exec pod install
open <your-project>.xcworkspace
这里的关键是 RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS 标志,指示 CocoaPods 下载 React Native 的 dSYM 文件并展开到正确目录。
此时可在 Xcode 中 AppDelegate.swift 等处设置断点,构建并运行应用。
应用暂停时,在 Xcode 控制台运行 LLDB 命令:
# 模拟器运行时
add-dsym <your-app-path>/ios/Pods/React-Core-prebuilt/React.xcframework/ios-arm64_x86_64-simulator/React.framework/dSYMs/React.framework.dSYM
# 真机运行时
add-dsym <your-app-path>/ios/Pods/React-Core-prebuilt/React.xcframework/ios-arm64/React.framework/dSYMs/React.framework.dSYM
之后即可单步调试 React Native 代码。
破坏性变更
我们致力于让 React Native 版本发布更可预测、升级更简便。React Native 0.83 是第一个无用户感知破坏性变更的版本。
如果你当前使用 React Native 0.82,升级到 0.83 理应无需对应用代码做任何改动。
想了解哪些属于破坏性变更,请参见此文。
弃用
本次发布包含两个 Android 相关的弃用:
- 网络:
sendRequestInternal方法被淘汰,现已弃用。 - 动画:
startOperationBatch和finishOperationBatch被弃用。
鸣谢
React Native 0.83 版本包含来自 56 位贡献者的超过 594 次提交。感谢大家的辛勤工作!
特别感谢在此发布中推动重要贡献的社区成员:
- Ruslan Lesiutin、Moti Zilberman、Alex Hunt 贡献了 React Native DevTools 性能和网络功能。
- Moti Zilberman 贡献了 React Native DevTools 桌面应用。
- Luna Wei 贡献了 Intersection Observer。
- Rubén Norte 贡献了 Web Performance API。
- Dawid Małecki 和 Jakub Piasecki 负责 Hermes V1 推出。
- Ramanpreet Nara 贡献了
RCT_REMOVE_LEGACY_ARCH标志。 - Christian Falch 贡献了 iOS 预编译二进制调试。
升级至 0.83
请使用 React Native Upgrade Helper 查看现有项目各 React Native 版本间的代码变更,结合 升级文档 使用。
新建项目请执行:
npx @react-native-community/cli@latest init MyProject --version latest
如果你使用 Expo,React Native 0.83 将包含在 2026 年 1 月发布的 SDK 55 中。
支持版本
0.83 现为 React Native 最新稳定版本,0.80.x 版本转为不再支持。更多信息请参见 React Native 支持政策。





