Skip to content
目录

Hermes 与 JS 引擎策略

1. 现状结论

Hermes 是 RN 当前默认主路径引擎,JSC 已移到社区第三方支持路径。

证据:

  • Android 历史切换:PR #34049
  • iOS Pods 脚本:jsengine.rbreact_native_pods.rb(默认 Hermes)
  • iOS bundling 脚本:react-native-xcode.sh(Hermes 字节码编译分支)

2. Android 打包链路

BundleHermesCTask.kt

  • 先 Metro bundle
  • 若启用 Hermes,再调用 hermesc 生成字节码 .hbc
  • 合并 packager 与 compiler sourcemap

价值:

  • 运行时加载更直接
  • sourcemap 可追踪到 Hermes 编译后产物

3. iOS 打包链路

react-native-xcode.sh

  • Debug Simulator 默认跳过 bundling(靠 Metro)
  • Release/Device 执行 bundle
  • Hermes 开启时将 JS bundle 编译为字节码并处理 sourcemap

4. 为什么强调“Hermes 默认化”

这不是“性能参数默认值”这么简单,而是:

  • 构建链、调试链、sourcemap 链都围绕 Hermes 设计
  • 生态文档、模板与工具都假设 Hermes 路径
  • 关闭 Hermes 的代价已从“可选分支”变成“兼容分支”

5. 表述建议

“我会把 Hermes 看成 RN 的标准运行时,而不是优化插件。因为它已经深入到 Gradle/CocoaPods/Xcode 脚本和 sourcemap 管线里,架构层面与 New Architecture 是同方向演进的。”

MIT License.