React Native 0.88 منتشر شد: رویدادها به سبک وب
خلاصهٔ کاملتر
React Native 0.88 منتشر شده و React رو به 19.3.0 و Metro رو به 0.87 میبره. تیم React Native میگه این سومین نسخه بعد از 0.83 و 0.86 هست که هیچ تغییر شکستنی برای کاربر نداره، یعنی اگه روی 0.87 هستی، بدون تغییر کد میتونی آپدیت کنی.
بزرگترین تغییر runtime اینه که رویدادها حالا بهطور پیشفرض از API استاندارد EventTarget (همون مدل رویداد DOM تو مرورگر) پخش میشن، نه از سیستم پلاگینی قدیمی. رویداد واقعاً از مسیر capture پایین میاد و دوباره bubble میکنه بالا، و stopPropagation() و preventDefault() دیگه یه شبیهسازی جدا نیستن. برای اپ تو چیزی عوض نمیشه؛ فقط کدی که مستقیم به internals رویداد دست میزنه باید تست بشه. روی کانال Canary هم addEventListener روی refها در دسترسه:
useEffect(() => {
const onClick = event => {};
ref.current?.addEventListener('click', onClick);
return () => ref.current?.removeEventListener('click', onClick);
}, []);حالا fontVariationSettings (یعنی تنظیم محورهای فونت متغیر مثل وزن و شیب) روی Text و TextInput تو اندروید و iOS کار میکنه و هم فرم رشتهای CSS و هم فرم آبجکتی مثل {wght: 700, slnt: -10} رو قبول میکنه. TurboModuleهای جاوا هم حالا مستقیم ArrayBuffer میگیرن و برمیگردونن، پس دیگه لازم نیست دادهٔ باینری رو مثلاً به Base64 تبدیل کنی. تو متدهای sync، بایتها فقط تا پایان متد معتبرن و اگه بعدش لازمشون داری باید کپیشون کنی.
اپل از iOS 27 SDK چرخهٔ عمر UIScene رو اجباری کرده و اپهایی که با Xcode 27 ساخته بشن بدون اون اصلاً اجرا نمیشن. 0.88 پشتیبانی از SceneDelegate رو بدون شکستن مسیر AppDelegate اضافه کرده، ولی فعلاً فقط یه scene؛ پس UIApplicationSupportsMultipleScenes باید false بمونه. برای مهاجرت باید entry point رو به SceneDelegate ببری، callbackهای URL رو به RCTLinkingManager بفرستی و کلید UIApplicationSceneManifest رو به Info.plist اضافه کنی.
پشتیبانی از Swift Package Manager هنوز آزمایشی و اختیاریه و CocoaPods کامل پشتیبانی میشه. برنامه اینه که 0.89 اونو پیشفرض کنه و CocoaPods بعداً حذف بشه. از موارد منسوخشده هم InitializeCore (بهجاش react-native/setup-env)، InputAccessoryView تو iOS و استایلهای بکگراند با پیشوند experimental_ هستن. تو اندروید هم User-Agent پیشفرض حالا اسم و نسخهٔ اپ رو داره، که سرورهایی که روی مقدار قدیمی حساب کرده بودن باید بهش دقت کنن.
نکات کلیدی:
- React 19.3.0، Metro 0.87 و Hermes 260318099.0.4
- رویدادها بهطور پیشفرض از EventTarget استاندارد وب رد میشن
- fontVariationSettings روی Text و TextInput در هر دو پلتفرم
- پشتیبانی SceneDelegate برای iOS 27، فعلاً فقط با یه scene
- Swift Package Manager تو 0.89 پیشفرض میشه
- 0.88 شامل 568 commit از 91 مشارکتکنندهست و 0.85 دیگه پشتیبانی نمیشه
- برای Expo، این نسخه با SDK 58 میاد




