آپ کو آئیکن لائبریریز کیوں تبدیل کرنی چاہئیں
@expo/vector-icons سے آفیشل @react-native-vector-icons پیکیجز پر منتقل ہونے سے آپ کے بنڈل کا سائز 4MB یا اس سے زیادہ کم ہو جاتا ہے۔ اب Expo اس تبدیلی کی سفارش کرتا ہے۔
پرانا @expo/vector-icons ایک ریپر (wrapper) تھا۔ اس نے آئیکنز کو Expo Go اور over-the-air اپ ڈیٹس کے ساتھ کام کرنے میں مدد دی۔ تاہم، اس ریپر نے پیچیدگیوں میں اضافہ کیا۔ اسے کام کرنے کے لیے Expo کو Babel transforms استعمال کرنے پڑتے تھے۔ اس سے دیکھ بھال (maintenance) کا اضافی کام پیدا ہوا۔
نئے پیکیجز مختلف طریقے سے کام کرتے ہیں۔ یہ براہ راست expo-font کے ساتھ انٹیگریٹ ہوتے ہیں۔ یہ native font loading APIs استعمال کرتے ہیں۔ اس کا مطلب ہے کہ یہ Expo Go، development builds، اور production apps میں کام کرتے ہیں۔
تبدیلی کے فوائد:
- چھوٹے بنڈلز: امپورٹس تبدیل کرنے کے بعد ہماری ٹیسٹ ایپ کا سائز 4MB کم ہو گیا۔
- نئے آئیکن سیٹس: آپ کو Lucide جیسے سیٹس تک رسائی حاصل ہوتی ہے۔
- بہتر ٹولز: آپ آئیکن کے ناموں کی type-check کر سکتے ہیں۔
- صاف ستھرا سیٹ اپ: اب آپ کو پیچیدہ aliasing configurations کی ضرورت نہیں ہے۔
مائیگریٹ کیسے کریں:
- codemod چلائیں: اپنے پروجیکٹ روٹ میں
npx @react-native-vector-icons/codemodاستعمال کریں۔ - تبدیلی کی تصدیق کریں: پرانے پیکیجز تلاش کرنے کے لیے
npx expo doctorچلائیں۔ - expo-font چیک کریں: یقینی بنائیں کہ یہ انسٹال اور کنفیگر ہے۔ node_modules سے فونٹ کے راستے (paths) براہ راست config plugin میں شامل نہ کریں۔
ان مسائل سے ہوشیار رہیں:
- فونٹ کے تصادم (conflicts): پرانے اور نئے پیکیجز کو مکس کرنے سے خالی مربع یا سوالیہ نشانات نظر آتے ہیں۔
- ڈیپینڈینسی کے مسائل: کچھ لائبریریز پرانے ناموں کی توقع کرتی ہیں۔ اگر آپ کو غلطیاں (errors) نظر آئیں تو اپنی ڈیپینڈینسیز چیک کریں۔
Expo مستقبل کے ریلیز میں @expo/vector-icons کو ختم (deprecate) کر دے گا۔ ابھی یہ تبدیلی کرنے سے آپ کا پروجیکٹ سادہ ہو جائے گا اور کارکردگی (performance) میں بہتری آئے گی۔
ماخذ: https://dev.to/expo/why-you-should-drop-expovector-icons-for-react-native-vector-icons-3m1n