React Native 0.83 为生产团队:更好的 DevTools、更好的 Tracing、更低的风险
Source: Dev.to
React Native 0.83 为生产团队:更好的开发工具、更好的追踪、更低的风险
React Native 0.83 带来了一系列改进,使其成为生产团队的可靠选择。本文将重点介绍最重要的更新:
更好的开发工具
- Flipper 集成 现在默认启用。你不再需要手动链接 Flipper 库。
- React DevTools 面板现在以更易读的格式显示组件的 props 和 state。
- 新的 Hermes 调试器 支持让你可以直接在 Chrome DevTools 中设置断点。
更好的追踪
- 全新的 React Native 性能监视器 为你提供帧率、JS 线程使用情况以及原生桥接流量的实时视图。
- Systrace 支持已得到改进,使捕获和分析性能数据更加简便。
- 现在可以通过一个标志启用 profiling:
react-native start --profile。
更低的风险
- 新架构(TurboModules 与 Fabric)现已稳定,可在无需实验性标志的情况下启用。
- 原生模块的 自动链接 已得到强化,降低了构建失败的概率。
- 升级助手 现在提供从 0.82 到 0.83 的逐步迁移指南。
迁移技巧
- 运行
npx react-native upgrade并按照提示操作。 - 打开 Flipper 桌面应用,确认 Flipper 正常工作。
- 在
android/app/build.gradle中启用新架构:android { ... defaultConfig { ... ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } } } - 在 iOS 与 Android 模拟器上测试你的应用。
结论
React Native 0.83 对于需要稳定性、性能和良好工具链的团队来说是一次重大进步。如果你还没有升级,现在是个绝佳时机。
祝编码愉快!
🚀 React Native 0.83:以稳定性为首 + 捆绑的原生 DevTools 桌面应用
React Native 0.83 是一次 以稳定性为核心 的发布,包含:
- React 19.2
- 对 React Native DevTools 的重要升级
- 对 Web Performance API(现已稳定)和
IntersectionObserver(Canary)的支持
它也是 首个没有面向用户的破坏性更改 的 React Native 发行版,对维护生产应用的团队尤为有吸引力。本文将介绍新特性、DevTools 工作流的变化,以及如何以最小风险完成 0.82 → 0.83 升级。
🧭 背景:0.83 对生产团队的重要性
React Native 0.83 被定位为更可预期的升级:如果你正在使用 0.82,应该能够在 不修改应用代码 的情况下迁移到 0.83。
- 降低升级成本 – 将时间花在验证(性能、崩溃率、网络)上,而不是被动的重构。
- DevTools 改进 – 新的 Network 与 Performance 面板以及捆绑的桌面应用,缩短大型应用的调试周期。
🆕 React Native 0.83 的新特性
⚛️ React 19.2(包括 “ 和 useEffectEvent)
- React 19.2 已随 RN 0.83 捆绑。
- 引入全新的 “ 组件和
useEffectEventHook。 - React Server Components 中的一个关键安全漏洞 不直接影响 React Native(因为它不依赖
react‑server‑dom-*)。 - 使用 monorepo 的用户应审计并升级这些包(如果存在)。
- 下一次补丁发布时,React 依赖将更新至 19.2.1。
🧩 “:在保留状态的同时优先级调度 UI 子树
“ 让你将应用拆分为“活动”,可以 受控且可优先级调度,作为条件渲染的替代方案。
| 模式 | 行为 |
|---|---|
visible | 显示子节点,挂载副作用,正常处理更新。 |
hidden | 隐藏子节点,卸载副作用,并 推迟更新,直到 React 没有其他工作可做。 |
关键点: 使用 “ 隐藏的树 会保留其状态,因此再次可见时仍保留搜索状态或先前的选中项等信息。
🧠 useEffectEvent:将“事件”逻辑从响应式副作用中分离
典型模式:useEffect 用来通知应用代码外部系统触发的“事件”。
如果事件内部使用的任意值发生变化,副作用会重新运行——往往是非预期的。
开发者有时会通过关闭 lint 规则或排除依赖来规避,但这可能引入 bug。
useEffectEvent 将触发事件的那部分从副作用中抽离出来,使副作用更正确、更易维护。
🛠️ 新的 DevTools 功能(Network + Performance)
React Native 0.83 为 React Native DevTools 带来了期待已久的功能和使用体验提升。
网络检查
- 显示带有元数据(时序、请求头)的网络请求。
- 包含响应预览。
- 新增 Initiator(发起者)标签页,查看请求在代码中的来源。
- 开箱即支持
fetch()、XMLHttpRequest和 “。 - 计划支持自定义网络库(例如 Expo Fetch)。
对于 Expo 应用,你仍会看到单独的 “Expo Network” 面板(覆盖范围更广,但没有请求发起者信息,也未与 Performance 面板集成)。
性能追踪
- 记录会话并在单一时间轴中展示 JavaScript 执行、React Performance 轨迹、网络事件以及自定义 User Timings。
- 直接利用 0.83 引入的 Web Performance API 支持。
建议团队将 Performance 面板纳入日常工作流,以更好地了解导致应用变慢的因素。
🖥️ DevTools 走向桌面:捆绑的原生应用
- 之前,DevTools 通过浏览器窗口启动,需要 Chrome/Edge。
- 0.83 将 DevTools 打包为本地桌面应用,省去浏览器依赖。
后续:在下一篇(本系列的第 2 部分)中,我们将深入探讨升级步骤、已知兼容性问题以及在 CI/CD 流水线中集成新的 DevTools。
Source: …
introduces a bundled desktop app** with the same “zero‑install” setup, but no web‑browser requirement.
Benefits
- 更快的启动速度,使用轻量级、已 notarized 的二进制文件。
- 更好的窗口行为(macOS 多任务改进、断点自动提升、窗口布局恢复)。
- 提高可靠性——独立于个人浏览器配置运行,避免 Chrome 扩展导致的问题。
如果二进制文件无法下载(例如公司防火墙),则会回退到之前的基于浏览器的流程。
🧭 IntersectionObserver (Canary)
- 在 canary 版本中加入,作为将 Web API 引入 React Native 的一部分。
- 允许异步观察目标元素与其祖先元素之间的布局交叉情况。
- 发布说明中提供了文档和 RNTester 示例。
⏱️ Web Performance APIs 已正式稳定
在 0.82 中引入的 Web Performance API 稳定子集现已全面支持:
| API 组别 | 关键成员 |
|---|---|
| 高分辨率时间 | performance.now(), performance.timeOrigin |
| Performance Timeline | PerformanceObserver, performance.getEntries* |
| 用户计时 | performance.mark, performance.measure |
| 事件计时 | 事件条目类型 |
| 长任务 | longtask 条目类型 |
- 在 DevTools Performance 面板中可见。
- 可在运行时通过
PerformanceObserver使用,即使在生产构建中也能收集真实的性能指标。
🧪 Hermes V1(实验性)
- Hermes V1 作为 实验性 的 JavaScript 引擎选项被引入。
- 它带来了全新的字节码格式和性能提升,但仍为可选项,需进一步测试和反馈。
📦 升级指南:0.82 → 0.83
- 在
package.json中 更新版本号(或使用npx react-native upgrade)。 - 运行升级向导——它会自动应用更改。