یه Hermes جدا برای بخشهای سنگین ریاکتنیتیو
خلاصهٔ کاملتر
ریاکتنیتیو معمولاً همهچیز رو رو یه ترد جاوااسکریپت اجرا میکنه، برای همین وقتی یه صفحهی سنگین مثل فید یا چت میاد وسط، انیمیشن و لمس کاربر همه منتظر همون ترد میمونن. تیم Margelo با همکاری Callstack کتابخونهی react-native-runtimes رو ساخته که برای اپهای New Architecture یه لایهی چندتایی از runtime اضافه میکنه.
با کامپوننت OnRuntime میتونی هر بخشی از UI رو تو یه نمونهی جدای Hermes (یعنی موتور جاوااسکریپتی که ریاکتنیتیو باهاش کد رو اجرا میکنه) رندر کنی، بدون اینکه خودت چیزی رو دستی ثبت کنی؛ Metro خودش موقع build کد رو بازنویسی میکنه:
<OnRuntime name="chat-runtime">
<MessageList conversationId={conversationId} />
</OnRuntime>علاوه بر این، میشه یه runtime رو قبل از اینکه کاربر بهش نیاز پیدا کنه prewarm کرد تا صفحه بدون تاخیر باز شه، یا میشه رو یه runtime جدا، کارهای پسزمینهای مثل هیدریت کردن استور (یعنی بارگذاری اولیهی دیتاش) رو با یه headless task اجرا کرد. برای هماهنگی بین این runtimeها هم یه پکیج جدا به اسم state هست: یه استور شبیه Zustand که رو یه singleton نیتیو ساخته شده و خوندنش سینکرونه، بدون رفتوبرگشت از بریج.
این کتابخونه فقط رو ریاکتنیتیو 0.76 به بالا، با New Architecture و موتور Hermes کار میکنه، هم رو اندروید و هم iOS. برای پروژههای Expo هم یه config plugin آماده داره که نیازی به تغییر دستی کد نیتیو نداره.
نکات کلیدی:
- حداقل React Native 0.76 با New Architecture و Hermes لازمه
- کامپوننت OnRuntime بخشهای UI رو تو یه Hermes جدا رندر میکنه، بدون ثبت دستی
- ThreadedRuntime.prewarm میتونه runtime رو قبل از نیاز کاربر آماده کنه
- پکیج state یه استور مشترک سینکرون بین همهی runtimeها فراهم میکنه
- برای Expo یه config plugin آماده وجود داره




