چرا باید کتابخانه‌های آیکون را تغییر دهید

تغییر از @expo/vector-icons به بسته‌های رسمی @react-native-vector-icons حجم باندل شما را ۴ مگابایت یا بیشتر کاهش می‌دهد. اکنون Expo این تغییر را توصیه می‌کند.

نسخه قدیمی @expo/vector-icons یک wrapper بود. این بسته کمک می‌کرد تا آیکون‌ها با Expo Go و به‌روزرسانی‌های over-the-air کار کنند. با این حال، این wrapper باعث پیچیدگی می‌شد. Expo مجبور بود برای کارکرد آن از Babel transforms استفاده کند که این امر باعث ایجاد کارهای نگهداری اضافی می‌شد.

بسته‌های جدید به گونه‌ای متفاوت عمل می‌کنند. آن‌ها مستقیماً با expo-font ادغام می‌شوند و از APIهای بومی (native) بارگذاری فونت استفاده می‌کنند. این یعنی آن‌ها در Expo Go، نسخه‌های توسعه (development builds) و اپلیکیشن‌های تولید (production) به درستی کار می‌کنند.

مزایای تغییر:

نحوه مهاجرت:

  1. اجرای codemod: از npx @react-native-vector-icons/codemod در ریشه پروژه خود استفاده کنید.
  2. تأیید تغییرات: دستور npx expo doctor را اجرا کنید تا بسته‌های قدیمی را پیدا کنید.
  3. بررسی expo-font: مطمئن شوید که نصب و پیکربندی شده است. مسیرهای فونت را مستقیماً از node_modules به config plugin اضافه نکنید.

مراقب این موارد باشید:

Expo در نسخه‌های آینده @expo/vector-icons را منسوخ (deprecate) خواهد کرد. انجام این تغییر در حال حاضر، پروژه شما را ساده‌تر کرده و عملکرد آن را بهبود می‌بخشد.

منبع: https://dev.to/expo/why-you-should-drop-expovector-icons-for-react-native-vector-icons-3m1n