新架构
新架构在 Expo SDK 53+ 中默认启用。它用更快的同步通信层取代了传统桥接,连接 JavaScript 与原生代码。
文档
完整指南:https://docs.expo.dev/guides/new-architecture/
变更内容
- JSI(JavaScript 接口)— JS 与原生之间直接同步调用
- Fabric— 支持并发特性的新渲染系统
- TurboModules— 带类型安全的懒加载原生模块
SDK 兼容性
| SDK 版本 | 新架构状态 |
|---|---|
| SDK 53+ | 默认启用 |
| SDK 52 | 通过 app.json 选择启用 |
| SDK 51- | 实验性 |
配置
新架构默认启用。要显式禁用(不推荐):
{"expo":{"newArchEnabled":false}}Expo Go
Expo Go 自 SDK 53 起仅支持新架构。使用旧架构的应用必须使用开发构建。
常见迁移问题
原生模块兼容性
一些较旧的原生模块可能不支持新架构。请检查:
- 模块文档中是否支持新架构
- GitHub issue 中的兼容性讨论
- 如果模块无人维护,考虑替代方案
Reanimated
React Native Reanimated 在 SDK 54+ 中需要react-native-worklets:
npx expoinstallreact-native-worklets布局动画
某些布局动画的行为有所不同。升级后请彻底测试。
验证新架构
检查新架构是否处于活动状态:
import { Platform } from "react-native"; // 如果 Fabric 已启用则返回 true const isNewArch = global._IS_FABRIC !== undefined;从命令行验证当前运行的应用是否使用新架构:bunx xcobra expo eval "_IS_FABRIC"->true
故障排除
- 清除缓存—
npx expo start --clear - 清理 prebuild—
npx expo prebuild --clean - 检查原生模块— 确保所有依赖都支持新架构
- 查看控制台警告— 旧模块会记录兼容性警告