重磅!React Native 0.84 发布:默认开启 Hermes V1 与 iOS 预编译,构建速度起飞!

React Native 团队刚刚发布了 0.84 版本,这是新年后的首个重大更新,带来了多项激动人心的改进。本文将为你详细解读这次更新的核心亮点,以及升级时需要注意的事项。


🎯 四大核心亮点

1. Hermes V1 正式成为默认 JavaScript 引擎

这是本次更新最重磅的变化!Hermes V1 现在成为 iOS 和 Android 的默认 JavaScript 引擎,取代了之前的版本。

对你的应用意味着什么?

  • ✅ 性能自动提升:所有应用默认使用 Hermes V1,执行速度更快,内存占用更低
  • ✅ 零迁移成本:如果你已经在使用 Hermes(0.70 版本后的默认选项),无需任何配置更改,自动升级

💡 背景知识:Hermes V1 在 0.82 版本中首次作为实验性功能引入,现在经过充分验证后正式转正。

需要回退? 虽然不建议,但如果确实需要,可以通过 package.json 覆盖或使用环境变量禁用。


2. iOS 预编译二进制文件默认启用

构建时间大幅缩短!

React Native 0.84 默认启用 iOS 预编译二进制文件。这意味着:

  • 不再需要每次 clean build 都从源码编译 React Native 核心
  • 预编译的 .xcframework 会在 pod install 时自动下载使用

⚠️ 注意:如果需要从源码构建(例如禁用 Hermes V1),可设置 RCT_USE_PREBUILT_RNCORE=0


3. 旧架构组件持续移除

继 0.82 版本将新架构作为唯一运行时选项后,0.84 继续清理旧架构代码:

iOS 端:

  • 旧架构代码不再包含在构建中,减少构建时间和应用体积
  • 兼容层(Interop Layer)代码保留,确保现有应用正常运行

Android 端: 已移除以下旧架构类:

复制代码
LazyReactPackage、CxxModuleWrapper、CallbackImpl、
BridgeDevSupportManager、LayoutAnimationController 等

4. Node.js 22 成为最低要求

React Native 0.84 要求 Node.js v22.11 或更高版本。这次升级让整个 React Native 工具链能够使用更多现代 JavaScript 特性。

建议使用 nvm 或 fnm 等版本管理工具来管理 Node 版本。


📦 其他重要更新

🔹 React 19.2.3 同步更新

包含 React 团队的最新修复和改进。

🔹 ESLint v9 Flat Config 支持

React Native 的 ESLint 配置现在支持 ESLint v9 的新配置格式,更容易采用最新工具链。

🔹 平台支持增强

  • 新图片格式:支持 HEIC 和 HEIF 格式,方便处理现代相机输出
  • Android 键盘事件 :新增 onKeyDown / onKeyUp 支持,适用于硬件键盘和电视遥控器

🔹 无障碍功能改进

  • 带 onPress 的 Text 组件自动获得 accessibilityRole="link"
  • Android 修复了回收视图的无障碍状态问题,屏幕阅读器不再播报错误状态

🔹 URL API 完善

补齐了标准 URL 属性(hash、host、pathname 等)和 URLSearchParams 方法,更接近 Web 标准。


⚠️ 破坏性变更提醒

  1. iOS 图片组件 :修复了 ImageResponseObserverCoordinator 的崩溃问题,但改变了 RCTImage 观察者 API 的对象声明(可能影响 react-native-svg 等库)
  2. Android :移除了 BridgeDevSupportManager
  3. C++ :JSBigString 直接实现 jsi::Buffer,移除了 BigStringBuffer 中间层
  4. JS:应用内元素检查器的旧版 Perf 和 Network 标签页已移除(功能已迁移至 React Native DevTools)

🙏 致谢

本次发布包含 650+ 提交 ,来自 95 位贡献者。特别感谢:

  • Riccardo Cipolleschi:预编译 iOS 二进制文件和移除 iOS 旧架构
  • Rob Hogan:Node.js 22 版本升级
  • Fabrizio Cucci:Android 无障碍改进
  • @pipopotamasu:ESLint v9 Flat Config 支持

🚀 如何升级

现有项目: 使用 React Native Upgrade Helper 查看版本间的代码变更。

💡 新功能 :社区 CLI 项目可以尝试实验性的 upgrade-react-native AI 辅助升级工具。

新建项目:

bash 复制代码
npx @react-native-community/cli@latest init MyProject --version latest

Expo 用户: React Native 0.84 将在 expo@canary 版本中提供。下一个 SDK 56 将随 React Native 0.85 一起发布。


版本支持政策: 0.84 现在是最新稳定版本,0.81.x 已停止支持。


本文内容基于 React Native 官方博客整理,如有疑问请参考官方文档。

相关推荐
song5013 小时前
React Native for OpenHarmony 实战:三方库 react-native-ratings 的鸿蒙化适配指南
javascript·react native·react.js·分类·harmonyos
song5017 小时前
React Native for OpenHarmony 实战:三方库 react-native-popup-menu 的鸿蒙化适配指南
css·深度学习·react native·react.js·transformer·harmonyos
梦想的颜色1 天前
【编程实战】AI 时代 APP 开发全栈硬核指南:技术选型 + AI 架构 + 模型落地全维度决策
python·flutter·react native·react.js·ai·桌面应用·milvus
song5012 天前
React Native for OpenHarmony 实战:三方库 react-native-css-transformer 的鸿蒙化适配指南
css·人工智能·深度学习·react native·transformer
enjoywindstorm4 天前
移动端原生框架对比评测
react native
传奇开心果编程4 天前
【声明式UI开发实用技术学与练】第8课 状态提升与下放
学习·flutter·react native·ui·swiftui·composer
传奇开心果编程5 天前
【现代声明式UI学与练】第4课 列表渲染与 key——如何高效渲染列表、key 的作用、列表重排时的状态保持
学习·flutter·react native·ui·swiftui·android jetpack
传奇开心果编程6 天前
【现代声明式UI学与练】第7课 组件通信——父传子、子传父、跨层级通信、状态提升与 Context
学习·flutter·react native·ui·swiftui·android jetpack
500846 天前
React Native for OpenHarmony 实战:三方库 react-native-url-polyfill 的鸿蒙化适配指南
javascript·react native·react.js·性能优化·electron·harmonyos
传奇开心果编程6 天前
【现代声明式UI学与练】第9课 性能优化——渲染优化、列表优化、内存优化、启动优化
学习·flutter·react native·ui·性能优化·swiftui·android jetpack