Skip to content
雲里
里雾

Expo SDK 54 特性

expo 开发 更新于 2026/4/13

本页梳理 Expo SDK 54 的关键特性:默认开启新架构、极简配置文件策略、React Compiler 实验性支持、路由类型安全,以及 tsconfig.json 路径映射的重要细节。

版本定位

Expo SDK 54 于 2025 年初发布,内置:

它是”最新的稳定”基线——新架构默认开启,React 19 稳定集成,生态库跟进充分。


新架构默认开启

app.jsonnewArchEnabled 默认为 true,无需手动配置。这意味着:

对开发者最直接的影响:react-native-mmkv、Reanimated 4、Skia 等基于 JSI 的库开箱即用,不需要额外配置。


极简配置文件

SDK 54 模板默认不生成 babel.config.jsmetro.config.js。原因是 Expo CLI 内置了对应的默认配置(babel-preset-expoexpo/metro-config),只有需要自定义时才创建这两个文件。

这减少了”配置文件不一致”导致的构建问题,也降低了新手的认知负担。

当你安装 NativeWind v4 时,才需要创建 metro.config.jsbabel.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.jsbabel.config.js 里配置对应的 alias(Metro 的模块解析和 TS 的类型检查是独立的两套系统,两边都要配)。


模板自带依赖

npx create-expo-app 生成的模板包含:

不包含(需要手动安装):


面试视角

“Expo SDK 和裸 RN 有什么区别?”

Expo SDK 是在裸 RN 基础上的工程化封装:统一了 Metro/Babel/TypeScript 配置的默认值,提供 EAS 云构建,通过 Config Plugins 抽象原生配置,通过 Expo Router 提供文件路由。你仍然在写 RN 代码,只是省去了大量”配置原生构建环境”的工作。SDK 54 的”默认新架构”让教学示例可以直接面向 JSI/TurboModules 写代码,不用担心旧架构兼容问题。

参见

参考

版本说明