Switching from @expo/vector-icons to React Native's official icon packages can cut your bundle size by 4MB or more. Here's how to make the change and why Expo now recommends it.

If you've built React Native apps with Expo, you've probably used @expo/vector-icons. It's been the go-to solution for icons, but that's changing. Expo now recommends switching to the official @react-native-vector-icons packages, and for good reason.

The Problem with @expo/vector-icons

When Expo first created @expo/vector-icons, it solved a real problem. The original react-native-vector-icons didn't work well with Expo projects, especially in Expo Go or with over-the-air updates. So Expo built a wrapper that used expo-font to load icon fonts dynamically.

But this solution came with baggage. To support libraries that expected react-native-vector-icons, Expo had to alias it to @expo/vector-icons using Babel transforms. This created complexity and maintenance overhead.