React Native 新架构与跨端性能实践
Fabric 渲染器、TurboModule、JSI 直连、Hermes 引擎与 RN 性能治理的系统化方法。
Flipper、Hermes、Systrace、列表优化、包体积与 New Architecture 下的性能排查路径。
前置阅读:React Native 架构实践 · 本专题第 2 篇
RN 性能问题往往不在 JS 语法,而在 Bridge 通信、列表重渲染、图片与启动路径。这篇是线上 App 常用的排查顺序与治理手段。
用户反馈「卡」
→ 1. 是 JS 线程还是 UI 线程?(Perf Monitor)
→ 2. 是否列表滚动掉帧?(FlashList + memo)
→ 3. 是否启动慢?(Hermes + 拆包 + 预加载)
→ 4. 是否 Bridge 大包?(New Arch / 减序列化)
// ❌ ScrollView 塞 500 个复杂卡片
// ✅ FlashList + estimatedItemSize + keyExtractor
<FlashList
data={items}
estimatedItemSize={72}
renderItem={renderRow}
keyExtractor={(item) => item.id}
/>
行组件用 React.memo,props 避免内联 {} / () =>。getItemType 区分多模板可再省 20% 测量。
useEffect 同步请求链,改为 skeleton + 并行useNativeDriver: true;Layout 动画慎用| 工具 | 用途 |
|---|---|
| Flipper / RN DevTools | 网络、布局、日志 |
| Performance Monitor | JS/UI FPS |
| Systrace / Android Profiler | 原生侧瓶颈 |
| why-did-you-render | 开发环境重渲染 |
生产包关闭 LogBox、strip console;Source Map 上传 Sentry 做符号化。
Fabric + TurboModule 减少异步桥接,但 第三方库未适配 时可能更慢。上线前对比:
npx react-native-bundle-visualizer系列回顾:第 1 篇 · RN 架构 · App 跨端专题