本页梳理 Expo SDK 54 的关键特性:默认开启新架构、极简配置文件策略、React Compiler 实验性支持、路由类型安全,以及 tsconfig.json 路径映射的重要细节。
版本定位
Expo SDK 54 于 2025 年初发布,内置:
- React Native 0.81.5
- React 19.1.0
- Expo Router v6
- React Native Reanimated 4.x
它是”最新的稳定”基线——新架构默认开启,React 19 稳定集成,生态库跟进充分。
新架构默认开启
app.json 中 newArchEnabled 默认为 true,无需手动配置。这意味着:
- Fabric(新渲染器)替代旧的 Shadow Thread + UIManager
- TurboModules(新原生模块)替代 Bridge-based Native Modules
- JSI(JavaScript Interface)作为 JS↔原生通信的底层,消除 JSON 序列化开销
- Bridgeless 模式:不再初始化旧 Bridge,彻底移除旧架构残留
对开发者最直接的影响:react-native-mmkv、Reanimated 4、Skia 等基于 JSI 的库开箱即用,不需要额外配置。
极简配置文件
SDK 54 模板默认不生成 babel.config.js 和 metro.config.js。原因是 Expo CLI 内置了对应的默认配置(babel-preset-expo 和 expo/metro-config),只有需要自定义时才创建这两个文件。
这减少了”配置文件不一致”导致的构建问题,也降低了新手的认知负担。
当你安装 NativeWind v4 时,才需要创建 metro.config.js 和 babel.config.js 来接入 NativeWind 的 transformer。
React Compiler(自动 memo 化)
// app.json
{
"expo": {
"experiments": {
"reactCompiler": true
}
}
}
React Compiler(前身 React Forget)在编译时静态分析组件,自动插入 useMemo/useCallback/memo 等优化。
意味着什么:你不再需要手动写 useCallback 包裹事件处理器、useMemo 包裹计算结果。Compiler 比人更准确地判断什么时候需要 memo——它看的是变量的完整依赖链,人工审查往往遗漏。
注意:这是 experiments 下的特性,生产使用前建议验证关键路径行为正确。Compiler 对不符合 Rules of Hooks 的代码会跳过优化而不是报错,所以不会引入运行时错误,但可能静默跳过某些文件。
路由类型安全(typedRoutes)
// app.json
{
"expo": {
"experiments": {
"typedRoutes": true
}
}
}
开启后,Expo Router 会在 node_modules/.cache/expo-router/types/ 自动生成路由类型声明。router.push('/train/schulte') 中的字符串会有类型检查——输入不存在的路由会报 TS 错误。
这是文件路由系统的核心教学价值之一:路由本身就是类型,路径错误在编译时就能发现。
tsconfig.json 路径映射
SDK 54 生成的 tsconfig.json 默认包含:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./*"]
}
}
}
注意:@/* 映射到项目根目录(./*),而不是 src/。如果你的代码组织在 src/ 下,需要手动改为 "@/*": ["./src/*"],同时在 metro.config.js 和 babel.config.js 里配置对应的 alias(Metro 的模块解析和 TS 的类型检查是独立的两套系统,两边都要配)。
模板自带依赖
npx create-expo-app 生成的模板包含:
expo-routerv6react-native-reanimated4.xreact-native-safe-area-contextreact-native-screensexpo-constants、expo-linking、expo-status-bar
不包含(需要手动安装):
nativewind/tailwindcssreact-native-mmkvzustand@shopify/react-native-skia
面试视角
“Expo SDK 和裸 RN 有什么区别?”
Expo SDK 是在裸 RN 基础上的工程化封装:统一了 Metro/Babel/TypeScript 配置的默认值,提供 EAS 云构建,通过 Config Plugins 抽象原生配置,通过 Expo Router 提供文件路由。你仍然在写 RN 代码,只是省去了大量”配置原生构建环境”的工作。SDK 54 的”默认新架构”让教学示例可以直接面向 JSI/TurboModules 写代码,不用担心旧架构兼容问题。
参见
- Expo Config Plugins 系统
- RN 新架构组件详解
- NativeWind v4 Expo 配置指南
参考
版本说明
- 本页基于 2026-04-13 调研结果整理,适用范围以当前工具版本为准。