ทำไมคุณควรเปลี่ยนไลบรารีไอคอน

การเปลี่ยนจาก @expo/vector-icons ไปใช้แพ็กเกจ @react-native-vector-icons อย่างเป็นทางการ จะช่วยลดขนาด bundle ของคุณลงได้ตั้งแต่ 4MB หรือมากกว่านั้น ซึ่งตอนนี้ Expo แนะนำให้ทำการเปลี่ยนแปลงนี้

@expo/vector-icons แบบเดิมนั้นเป็น wrapper ซึ่งช่วยให้ไอคอนทำงานร่วมกับ Expo Go และการอัปเดตแบบ over-the-air ได้ อย่างไรก็ตาม wrapper นี้เพิ่มความซับซ้อน โดย Expo ต้องใช้ Babel transforms เพื่อให้มันทำงานได้ ซึ่งทำให้เกิดภาระในการดูแลรักษาเพิ่มเติม

แพ็กเกจใหม่ทำงานแตกต่างออกไป โดยจะรวมเข้ากับ expo-font โดยตรง และใช้ native font loading APIs ซึ่งหมายความว่าจะสามารถใช้งานได้ทั้งใน Expo Go, development builds และแอปพลิเคชันบน production

ประโยชน์ของการเปลี่ยน:

วิธีเปลี่ยน:

  1. รัน codemod: ใช้ npx @react-native-vector-icons/codemod ใน root ของโปรเจกต์
  2. ตรวจสอบการเปลี่ยนแปลง: รัน npx expo doctor เพื่อค้นหาแพ็กเกจเก่า
  3. ตรวจสอบ expo-font: ตรวจสอบให้แน่ใจว่ามีการติดตั้งและตั้งค่าเรียบร้อยแล้ว ห้ามเพิ่ม font paths จาก node_modules ลงใน config plugin โดยตรง

สิ่งที่ควรระวัง:

Expo จะยกเลิกการใช้งาน (deprecate) @expo/vector-icons ในเวอร์ชันในอนาคต การเปลี่ยนตอนนี้จะช่วยให้โปรเจกต์ของคุณจัดการได้ง่ายขึ้นและเพิ่มประสิทธิภาพการทำงาน

ที่มา: https://dev.to/expo/why-you-should-drop-expovector-icons-for-react-native-vector-icons-3m1n