关键设计决策与 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"