用途:面向现代、可扩展的 Expo 移动应用架构,强调以 Development Build 替代 Eject,在类托管工作流中集成原生能力。
主要能力:使用 expo-dev-client 在不脱离 Expo 生态的前提下加入自定义原生代码;用 Expo Modules SDK(Swift/Kotlin)编写原生模块与桥接;通过 EAS(Build、Submit、Update)编排 CI/CD 与 OTA 更新;使用 Expo SQLite 与文件系统实现本地持久化;使用 Expo Router 4+ 的文件式路由、静态类型与自动深度链接。资料提到 SDK 55 要求 React Native 新架构。
必要用法:原生模块以 Module 定义形式编写;路由基于文件系统自动生成,例如 app/user/[id].tsx 中可用 useLocalSearchParams 获取参数;OTA 更新命令为 eas update --branch production --message "Fix: Hydration error in Checkout"。
适用场景:开发构建、原生模块工程、EAS 构建与发布、本地数据与文件管理、按文件组织导航。
限制与反模式:不要执行 Eject;除非必要不要提交 ios/android 目录;适合场景下避免使用 react-native-navigation;不要用 AsyncStorage 存放大数据块,应改用 Expo SQLite 或文件系统;不要在 app.json 做繁重配置,复杂原生改动应使用 Config Plugin。排障方面资料建议:原生模块缺失时用 eas build --profile development 创建开发构建;EAS 构建失败时检查 app.json 插件并本地运行 npx expo prebuild 调试;OTA 更新陈旧时用 expo-updates API 强制重新检查;Android 边到边显示问题可用 expo-system-ui 统一状态栏行为。质量指标包括 EAS 构建成功率 >95%、OTA 成功率 >99%、原生崩溃率 <0.1%。SDK 48 到 55 的演进:SDK 50 默认引入 Dev Client,SDK 52 Expo Router 成为标准,SDK 54 iOS 预编译 RN 与 Liquid Glass 支持,SDK 55 强制新架构与预测性返回手势。