React Native 0.87 اومد؛ Strict TypeScript API پیشفرض شد
خلاصهٔ کاملتر
React Native 0.87 منتشر شد و بزرگترین تغییرش اینه که Strict TypeScript API دیگه API پیشفرض جاوااسکریپت این فریمورکه. این API از نسخهٔ 0.80 بهصورت پیشنمایش اختیاری در دسترس بود و حالا برای همهٔ پروژهها فعاله. تو اعلامیه اومده که این یه تغییر در سطح کل اکوسیستمه و عمداً چند شکستگی تو سطح API داره.
سودش دو چیزه: تایپها حالا مستقیم از سورس خود React Native تولید میشن و جای تعریفهای دستی قدیمی رو گرفتن، پس اون اختلاف همیشگی بین تایپ و کد از بین میره. دوم اینکه API فقط به چیزی محدود شده که پکیج react-native از ریشه export میکنه؛ یعنی تغییر فایلهای داخلی تیم، دیگه breaking change اپ شما نیست. در عوض ایمپورت عمیق به مسیرهایی مثل react-native/Libraries/* خطای تایپ میده و refها تایپ اختصاصی گرفتن، مثل ViewInstance و TextInputInstance.
اگه فرصت مهاجرت نداری، یه سوییچ خروج موقت گذاشتن: کافیه شرط سفارشی react-native-legacy-deep-imports رو به tsconfig.json اضافه کنی تا تایپهای قبلی برگردن.
"customConditions": ["react-native", "react-native-legacy-deep-imports"]این راه فرار فقط تا React Native 0.88 در دسترسه و قراره نسخهٔ بعدش تایپهای legacy کلاً حذف شن. خروج هم فقط روی تحلیل TypeScript پروژهٔ خودت اثر داره، پس اپها و کتابخونهها مستقل از هم مهاجرت میکنن.
سمت باندلر، Metro از 0.84 به 0.87 رفته: تولید source map دو برابر سریعتر شده و مصرف حافظه نصف شده، یعنی React Native DevTools سریعتر بالا میاد. پشتیبانی از فایلهای کانفیگ TypeScript و ESM مثل metro.config.mts پایدار شده و در مقابل، کانفیگهای YAML و پسوند .es6 حذف شدن. یه اضافهٔ آزمایشی هم داریم: پشتیبانی از Swift Package Manager روی iOS بهعنوان جایگزین CocoaPods. این مسیر opt-inه، فقط Xcode لازم داره (بدون Ruby و Bundler) و بعد از راهاندازی اولیه، خود پروژه با تغییر پکیجهای نیتیو autolinking رو دوباره اجرا میکنه — دیگه خبری از pod install بعد هر تغییر نیست.
سمت اندروید، این اولین نسخهایه که از Android Gradle Plugin 9 پشتیبانی میکنه و توصیه شده فعلاً با android.builtInKotlin=false و android.newDsl=false از Kotlin داخلی و DSL جدید AGP خارج شی. حداقلها هم بالا رفته: Node.js 22.13، Kotlin 2.0 به بالا (نسخهٔ همراه 2.2.0)، minCompileSdk برابر 34 و compileSdk روی 37. چند API هم حذف شدن، از جمله InteractionManager که جاش requestIdleCallback میاد و فلگ useTurboModules که دیگه TurboModules همیشه فعاله.
نکات کلیدی:
- Strict TypeScript API از 0.87 پیشفرضه؛ تایپها از سورس تولید میشن و ایمپورت عمیق به Libraries/ خطای تایپ میده.
- سوییچ خروج react-native-legacy-deep-imports فقط تا نسخهٔ 0.88 کار میکنه.
- Metro 0.87: تولید source map دو برابر سریعتر، نصف مصرف حافظه، بدون پشتیبانی از کانفیگ YAML و .es6.
- پشتیبانی آزمایشی SwiftPM روی iOS بدون نیاز به Ruby و CocoaPods، ولی تیم میگه هنوز برای production نیست.
- حداقل ابزارها: Node.js 22.13، Kotlin 2.0+، minCompileSdk 34، compileSdk 37 و پشتیبانی از AGP 9.
- این نسخه 265 کامیت از 74 مشارکتکننده داره و 0.84.x دیگه پشتیبانی نمیشه.




