কেন আপনার আইকন লাইব্রেরি পরিবর্তন করা উচিত
@expo/vector-icons থেকে অফিসিয়াল @react-native-vector-icons প্যাকেজে পরিবর্তন করলে আপনার বান্ডেল সাইজ ৪ মেগাবাইট বা তার বেশি কমে যাবে। Expo এখন এই পরিবর্তনের পরামর্শ দিচ্ছে।
পুরনো @expo/vector-icons ছিল একটি র্যাপার (wrapper)। এটি আইকনগুলোকে Expo Go এবং over-the-air আপডেটের সাথে কাজ করতে সাহায্য করত। তবে, এই র্যাপারটি জটিলতা বাড়িয়ে দিয়েছিল। এটি কাজ করানোর জন্য Expo-কে Babel transforms ব্যবহার করতে হতো, যা অতিরিক্ত রক্ষণাবেক্ষণের (maintenance) কাজ তৈরি করত।
নতুন প্যাকেজগুলো ভিন্নভাবে কাজ করে। এগুলো সরাসরি expo-font-এর সাথে ইন্টিগ্রেট হয়। এগুলো নেটিভ ফন্ট লোডিং API ব্যবহার করে। এর মানে হলো এগুলো Expo Go, development builds এবং production অ্যাপগুলোতে কাজ করে।
পরিবর্তনের সুবিধাসমূহ:
- ছোট বান্ডেল: ইমপোর্ট পরিবর্তন করার পর আমাদের টেস্ট অ্যাপের সাইজ ৪ মেগাবাইট কমে গেছে।
- নতুন আইকন সেট: আপনি Lucide-এর মতো সেটগুলোতে অ্যাক্সেস পাবেন।
- উন্নত টুলস: আপনি আইকনের নাম টাইপ-চেক (type-check) করতে পারবেন।
- পরিচ্ছন্ন সেটআপ: আপনার আর জটিল aliasing কনফিগারেশনের প্রয়োজন নেই।
কিভাবে মাইগ্রেট করবেন:
- কোডমড (codemod) চালান: আপনার প্রজেক্ট রুট-এ
npx @react-native-vector-icons/codemodব্যবহার করুন। - পরিবর্তন যাচাই করুন: পুরনো প্যাকেজগুলো খুঁজে পেতে
npx expo doctorচালান। expo-fontচেক করুন: এটি ইনস্টল করা এবং কনফিগার করা আছে কিনা নিশ্চিত করুন।node_modulesথেকে সরাসরি ফন্ট পাথগুলো কনফিগ প্লাগিনে (config plugin) যোগ করবেন না।
এই সমস্যাগুলোর ব্যাপারে সতর্ক থাকুন:
- ফন্ট কনফ্লিক্ট: পুরনো এবং নতুন প্যাকেজ মিশ্রিত করলে খালি বর্গক্ষেত্র বা প্রশ্নবোধক চিহ্ন দেখা দিতে পারে।
- ডিপেন্ডেন্সি সমস্যা: কিছু লাইব্রেরি পুরনো নাম আশা করে। যদি কোনো এরর (error) দেখেন, তবে আপনার ডিপেন্ডেন্সিগুলো চেক করুন।
Expo ভবিষ্যতে একটি রিলিজে @expo/vector-icons-কে ডিপ্রেকেট (deprecate) করে দেবে। এখনই এই পরিবর্তনটি করলে আপনার প্রজেক্ট সহজ হবে এবং পারফরম্যান্স উন্নত হবে।
উৎস: https://dev.to/expo/why-you-should-drop-expovector-icons-for-react-native-vector-icons-3m1n