5月22日,Expo SDK 56正式发布。我周末刚把手上一个项目迁过去,体感很明显——有些优化甚至不用看更新日志就能察觉到。
先说重点:这次直接跳了两版React Native,从0.83跃升到0.85,同时搭载React 19.2。如果你是从SDK 55升级上来的,相当于一次跨过了0.84。
![]()
构建速度:什么都没做,但就是快了
iOS端的变化最直观。最重的Expo模块现在以预构建框架形式分发,本地和EAS构建都自动生效,无需任何配置。Expo测得的中位数干净构建时间缩短了约1分钟,降幅16%。EAS还额外预编译了Reanimated、Screens等常用社区库,又能再省1分钟左右。
Android的架构改动更大。新的Kotlin编译器插件取代了旧的反射式模块初始化,改为构建时生成元数据。官方数据:冷启动快40%,可交互时间提升至1.5倍,onCreate执行速度1.7倍。同样零配置,升级即生效。
还有一个实验性选项:Android codegen支持预编译头文件。官方基准测试中,某项CMake任务从17分钟降至6分钟。需在expo-build-properties中手动开启,构建图复杂的项目可以试试。
Hermes v1成为默认引擎
启动更快、内存更低、运行时性能更好。如果出问题,可以在expo-build-properties里切回旧版,但建议先开着观察。
升级前务必检查Node版本:v20.19.4以下已不再支持。先看CI镜像,否则会在安装环节卡二十分钟却找不到原因。
Expo UI终于稳定
经过三个SDK周期的迭代,SwiftUI和Jetpack Compose接口现已稳定,并进入默认模板。提供了一套跨平台组件(Host、Row、Column、Text、TextInput、Button、Switch、Slider等),无需再拆成.ios.tsx和.android.tsx。Web端仍是实验性质,生产环境慎用。
更实用的是社区库平替方案。改个import就能迁移:
// 之前
import DateTimePicker from '@react-native-community/datetimepicker';
// 之后
import DateTimePicker from '@expo/ui/community/datetime-picker';
同样的替换逻辑适用于bottom sheet、picker、segmented control、masked view、slider。注意部分props有差异,因为底层换成了SwiftUI和Compose而非UIKit,批量替换前先看文档。
会咬人的那个:expo-router与react-navigation脱钩
Expo Router曾经借用React Navigation的导航原语,现在正式fork独立。这是架构层面的根本变化,意味着之前隐式依赖的导航行为可能不再一致。迁移文档里专门列了一节讲这个,建议优先核对。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.