۵ عادت تیمهای حرفهای برای آپدیت OTA
خلاصهٔ کاملتر
آپدیت Over-The-Air (OTA) تو Expo یعنی میتونی کد جاوااسکریپت و assetهای اپت رو مستقیم به گوشی کاربر بفرستی، بدون build جدید و بدون تایید استور. این آپدیتها با channel (اینکه هر build کدوم نسخه رو میگیره) و runtime version (اینکه JS با کد native سازگاره یا نه) مدیریت میشن. نویسنده تو این پست پنج تا عادتی که تیمهای حرفهای برای فرستادن OTA بدون ریسک استفاده میکنن رو جمع کرده.
عادت اول: قبل از production، آپدیت رو رو یه channel جدا به اسم preview تست کن (که معمولا به API استیجینگ وصله)، بعد بفرستش production. تیمهایی که سختگیرتر هستن یه لایهی اضافه هم دارن: یه channel استیجینگ با کانفیگ دقیقا مثل production، که اول آپدیت اونجا تست میشه و بعد همون build دقیق (نه یه build جدید از همون کامیت) با این دستور به production پروموت میشه:
eas update:republish --channel staging --destination-channel production
عادت دوم به تغییرات native مربوطه: نه هر آپدیت وابستگی، فقط جاوااسکریپته؛ اگه یه پکیج کد native هم عوض کرده باشه و رو باینری قدیمی OTA بفرستیش، اپ کرش میکنه. ابزار fingerprint اکسپو، سطح native پروژه (وابستگیها، کانفیگ، کد native) رو با build فعلی مقایسه میکنه؛ اگه فرق داشته باشن یعنی باید یه build جدید بگیری، وگرنه OTA امنه. این چک رو میشه تو CI/CD (مثلا EAS Workflows) خودکار کرد تا هر push بهطور خودکار مسیرشو (build یا آپدیت) پیدا کنه.
عادت سوم اینه که بدونی چی OTA-پذیره: کد جاوااسکریپت، UI، استایل، عکس و فونت و رفع باگ همه از راه OTA میرن؛ ولی نصب یا آپگرید ماژول native، آپگرید Expo SDK، تغییر آیکون یا splash screen، اضافهشدن دسترسی جدید (دوربین، لوکیشن) یا تغییر فایلهای ios/ و android/ همه نیاز به یه build جدید دارن.
عادت چهارم استفاده از API خود expo-updates برای دانلود و اعمال آپدیت زودتر از سشن بعدیه؛ مثلا تیم موبایل MTA که برای ۳۵۰ هزار کاربر روزانه کار میکنه، میگه میتونه ظرف کمتر از ۹۰ ثانیه بعد گزارش اولین کاربر، فیکس رو منتشر کنه. عادت پنجم: هیچوقت آپدیت رو یهو به همه نفرست. با --rollout-percentage 10 شروع کن، متریکها رو نگاه کن، بعد درصدشو ببر بالا. اگه چیزی خراب شد، rollback هم باید از قبل تمرینشده باشه، چون سرعت رولبک همیشه از فهمیدن علت اصلی مشکل بیشتره.
نکات کلیدی:
- همیشه آپدیت رو اول رو channel جدا (preview) تست کن، بعد production
- با ابزار fingerprint اکسپو تشخیص بده تغییرات نیاز به build جدید دارن یا نه
- ماژول native، آپگرید SDK و تغییر پرمیشنها نیاز به build جدید دارن، نه OTA
- تیم MTA با ۳۵۰ هزار کاربر روزانه، فیکس رو ظرف کمتر از ۹۰ ثانیه با expo-updates میفرسته
- rollout رو تدریجی (مثلا از ۱۰٪) شروع کن و مسیر rollback رو از قبل آماده داشته باش




