Expo SDK 56 بتا رسید: UI بومی پایدار، بیلد سریعتر و جداشدن از React Navigation
خلاصهٔ کاملتر
دوره بتای Expo SDK 56 امروز شروع شد و حدود دو هفته ادامه داره. این نسخه شامل React Native 0.85.2 و React 19.2.3 میشه. Expo Go برای SDK 56 روی شبیهساز iOS و Android هم تا آخر همین هفته یا اول هفته آینده در دسترس خواهد بود.
Expo UI به مرحله پایدار رسید. بعد از سه سیکل توسعه (SDK 53، 54 و 55)، کامپوننتهای بومی مبتنی بر SwiftUI (iOS) و Jetpack Compose (Android) حالا stable هستن. علاوه بر این، کامپوننتهای یونیورسال جدیدی مثل Host، Row، Column، Button، Switch، Slider، BottomSheet و غیره اضافه شدن که روی اندروید، iOS و وب کار میکنن و دیگه نیازی به فایلهای جداگانه .android.tsx و .ios.tsx نیست. همچنین جایگزینهای drop-in برای کتابخونههای محبوب کامیونیتی مثل @gorhom/bottom-sheet و @react-native-picker/picker معرفی شدن که اکثر مهاجرتها فقط با تغییر import انجام میشه.
بیلد سریعتر با ماژولهای پیشکامپایلشده. SDK 56 بهصورت پیشفرض از XCFramework از پیشساختهشده برای ماژولهای پیچیده iOS استفاده میکنه. این قابلیت هم برای بیلد محلی و هم برای EAS Build فعاله و هیچ تنظیم اضافهای لازم نیست. روی اندروید هم یه پلاگین کامپایلر Kotlin جدید جایگزین reflection شده که در بنچمارکها حدود ۴۰٪ کاهش زمان cold start و ۳۳٪ بهبود first render داده. روی iOS هم لایه میانی Objective-C++ حذف شده و ارتباط Swift با JSI مستقیم برقرار میشه.
Expo Router از React Navigation جدا شد. این احتمالاً بزرگترین تغییر breaking این نسخهست. Expo Router دیگه روی react-navigation سوار نیست و fork مستقل خودش رو داره. یعنی import مستقیم از پکیجهای @react-navigation/* کنار expo-router دیگه بهصورت پیشفرض کار نمیکنه. یه codemod برای مهاجرت خودکار در دسترسه. از قابلیتهای جدید Expo Router میشه به toolbar تجربی روی اندروید، پشتیبانی از streaming SSR برای وب، و تابع generateMetadata برای مدیریت متادیتا اشاره کرد.
Inline Modules و بهبود Expo CLI. حالا میشه ماژولهای بومی Expo رو مستقیم داخل پروژه (کنار کدهای JS/TS) تعریف کرد، بدون نیاز به ریپازیتوری جداگانه. ابزارهای تولید type خودکار هم اضافه شدن که interface تایپاسکریپت رو از روی فایل Swift یا Kotlin بهصورت خودکار میسازن. در CLI هم زمان شروع bundler کاهش پیدا کرده، Watchman جای خودش رو به watcher بومی Node.js داده، و TypeScript 6 بهصورت پیشفرض اضافه شده.
سایر تغییرات مهم: حداقل iOS از 15.1 به 16.4 افزایش پیدا کرده (یعنی iPhone 7، 6s و SE نسل اول دیگه پشتیبانی نمیشن)، حداقل Xcode هم 26.4 شد. موتور Hermes V1 حالا پیشفرضه و سرعت startup رو بهبود میده. APIهای expo-calendar، expo-contacts و expo-media-library بازطراحی شیءگرا شدن و به مرحله stable رسیدن. Widgets برای iOS هم از آلفا به stable ارتقاء پیدا کرد. @expo/vector-icons هم deprecated شده و باید به @react-native-vector-icons/* مهاجرت کنی.
نکات کلیدی:
- Expo UI با کامپوننتهای SwiftUI و Jetpack Compose حالا stable و داخل قالب پیشفرض پروژهست
- Expo Router دیگه به React Navigation وابسته نیست؛ مهاجرت با codemod امکانپذیره
- بیلد iOS با XCFramework پیشکامپایلشده سریعتر شد؛ بدون نیاز به تنظیم اضافه
- پلاگین کامپایلر Kotlin روی اندروید: ~۴۰٪ cold start سریعتر
- حداقل iOS 16.4 (iPhone 7 و قدیمیتر دیگه پشتیبانی نمیشن)
- Hermes V1 حالا موتور JS پیشفرضه
- TypeScript 6 بهصورت پیشفرض اضافه شد
@expo/vector-iconsdeprecated شد، باید به@react-native-vector-icons/*مهاجرت کنی




