Skip to content
目录

关键设计决策与 Issue/PR 依据

本章给出“决策 -> 依据 -> 影响”的结构化证据链。

1. 决策:明确 React Native Core 与 Framework 边界

依据:

  • RFC0759
  • packages/react-native/README.md(模板已迁移到 @react-native-community/template

原因:

  • Core 聚焦 runtime 与基础 API
  • 脚手架、发布、升级体验等更多交给 Framework 层

影响:

  • 减少“核心仓库承担所有 DX 责任”的复杂度
  • 生态定位更清晰,利于长期演进

2. 决策:新架构默认化(Fabric/Turbo/Bridgeless)

依据:

  • DefaultNewArchitectureEntryPoint.kt:默认全开并限制关闭
  • DefaultReactNativeHost.kt / RCTDefaultReactNativeFactoryDelegate.mm:关闭新架构路径弱化/报错

原因:

  • 统一运行时假设,避免组合爆炸
  • 让生态库在统一目标上迁移

影响:

  • 升级路径更陡但更稳定
  • 过渡期需要 interop 与 feature flag 缓冲

代码注释依据(Android 默认入口):

kotlin
/**
 * This will load the app with TurboModules, Fabric and Bridgeless by default.
 */
@JvmStatic
public fun load() {
  load(turboModulesEnabled = true, fabricEnabled = true, bridgelessEnabled = true)
}

3. 决策:修 Bridgeless 互操作缺口,而非回退架构

依据:

原因:

  • legacy 模块在 interop 层未正确附着 bridge/bridgeless 抽象
  • 问题应在 TurboModule 管理器侧补齐

影响:

  • 迁移兼容性提升
  • 架构方向保持不回头

4. 决策:事件循环语义 Web 对齐

依据:

  • RFC0744
  • runtimescheduler/__docs__/README.md

原因:

  • 修复 layout effect 与渲染时序语义偏差
  • 支撑 Web API 语义引入

影响:

  • 更可预测、可推理的 UI 原子更新边界
  • 更好地承载后续调度优化

5. 决策:Hermes 默认化

依据:

  • PR #34049
  • iOS/Android 打包脚本默认 Hermes 路径

原因:

  • 统一引擎路径降低维护复杂度
  • 优化冷启动/包体/运行时链路一致性

影响:

  • JSC 成为第三方兼容分支
  • 工程与调试工具围绕 Hermes 深化

6. 决策:对生态 breaking change 采取缓冲修复

依据:

原因:

  • Fabric API 调整(adopt 签名)影响已迁移库
  • 需要给库作者迁移窗口

影响:

  • 兼顾架构正确性与生态稳定性
  • 强化“先演进后回填兼容”的治理模式

7. 决策:新架构启用时强制安装 Fabric 依赖

依据:

原因:

  • 配置分叉可能导致 New Architecture 已开但依赖未装全

影响:

  • 构建失败从“运行期偶发”前移到“安装期可见”
  • 降低使用者误配成本

对应 iOS 侧当前默认行为(脚本):

ruby
fabric_enabled = true
ENV['RCT_FABRIC_ENABLED'] = "1"
ENV["RCT_NEW_ARCH_ENABLED"] = "1"

MIT License.