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