React Native 0.79 已发布。此版本在多个方面进行了性能改进,并修复了一些漏洞。首先,得益于延迟哈希技术,Metro 的启动速度变快了,并且对包导出提供了稳定支持。由于 JS 包压缩方式的改变等原因,Android 的启动时间也将得到改善。
主要变化
新的 Metro 功能
JSC 转移到社区维护的包
iOS:与 Swift 兼容的原生模块注册
Android:更快的应用启动速度
移除远程 JS 调试功能
亮点功能
Metro 优化:Metro 0.82 利用延迟哈希技术,使启动速度提升 3 倍以上,还稳定支持
package.json
的exports
和imports
字段解析,增强与现代 npm 依赖的兼容性。JSC 迁移:JavaScriptCore(JSC)引擎转移至社区维护的
@react-native-community/javascriptcore
包,社区版 JSC 更新更频繁,React Native 核心提供的 JSC 版本后续将被移除,但不影响使用 Hermes 的用户。iOS 模块注册改进:在 iOS 中,可通过修改
package.json
的modulesProvider
字段注册原生模块,统一了开发者和库维护者的注册方式,解决了 0.77 版本中纯 C++ 原生模块与 SwiftAppDelegate
注册的限制。Android 启动加速:Android 默认不再压缩 JavaScript 包,提升了应用启动速度,如 Discord 应用测试时交互时间减少 400 毫秒,速度提升 12% 。若担心空间占用,可在
app/build.gradle
中通过enableBundleCompression
属性切换。
重大变更
调试方式变更:移除通过 Chrome 的远程 JS 调试功能,推荐使用 React Native DevTools,且不再兼容 react-native-debugger 社区项目,开发者可用 Expo DevTools 插件或集成独立工具进行第三方调试扩展。
语法更新:约 46 个内部模块从
module.exports
更新为export
语法,对导入有细微影响,推荐从根路径'react-native'
导入以避免后续问题,未来版本将弃用深度导入。其他变更:为符合 CSS/Web 规范,不再支持
box-shadow
和filter
中的无单位长度、hwb()
的部分旧语法;ExceptionsManager
导出更新,默认导出ExceptionsManager
对象,SyntheticError
作为次要导出。
详情:https://reactnative.dev/blog/2025/04/08/react-native-0.79