EAS Update - "Font asset not found" error

Hi

We are trying to integrate EAS Update, but we are hitting an issue with Material Community Icons. When we build our app using EAS Build, it works flawless. Creating an update works as well and it’s published and then picked up by the app. The problem is, no icons are displayed and an exception is thrown, which in turn marks the update as invalid (I assume as on the next reload, it’s back to the previous version).

This is what I get after running eas update:

[expo-cli] Starting Metro Bundler
[expo-cli]
[expo-cli] iOS Bundling complete 122442ms
[expo-cli]
[expo-cli] Android Bundling complete 122453ms
[expo-cli] iOS Building Hermes bytecode for the bundle
[expo-cli] Android Building Hermes bytecode for the bundle
[expo-cli]
[expo-cli] Bundle                              Size
[expo-cli] ┌ index.ios.js (Hermes)          3.16 MB
[expo-cli] ├ index.android.js (Hermes)      3.16 MB
[expo-cli] ├ index.ios.js.map (Hermes)       9.4 MB
[expo-cli] └ index.android.js.map (Hermes)  9.41 MB
[expo-cli]
[expo-cli] 💡 JavaScript bundle sizes affect startup time. Learn more: https://expo.fyi/javascript-bundle-sizes
[expo-cli]
[expo-cli] Finished saving JS Bundles
[expo-cli] Saving assets
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf
[expo-cli] saving /node_modules/react-native-paper/src/assets/back-chevron.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@1x.ios.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@1.5x.ios.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@2x.ios.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@3x.ios.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@4x.ios.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon-mask.png
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/AntDesign.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Entypo.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/EvilIcons.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Feather.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Fontisto.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Foundation.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Ionicons.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/MaterialIcons.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Octicons.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/SimpleLineIcons.ttf
[expo-cli] saving /node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Zocial.ttf
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@1x.android.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@1.5x.android.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@2x.android.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@3x.android.png
[expo-cli] saving /node_modules/@react-navigation/elements/src/assets/back-icon@4x.android.png
[expo-cli] Files successfully saved.
[expo-cli] Dumping asset map
[expo-cli] Dumping source maps
[expo-cli] Preparing additional debugging files
[expo-cli] Export was successful. Your exported files can be found in dist
✔ Exported bundle(s)
✔ Uploaded 2 app bundles
✔ Uploading assets skipped - no new assets found
✔ Channel: develop pointed at branch: develop
✔ Published!

Branch             develop
Runtime version    exposdk:48.0.0
Platform           android, ios
Update group ID    XXX
Android update ID  XXX
iOS update ID      XXX
Message            Test No. 5
Commit             XXX
Website link       https://expo.dev/accounts/XXX/projects/XXX/updates/XXX

This makes me believe, the assets are bundled in the update (although not sure why they need to be since it’s already bundled in the APK). Looks like the paths are somehow incompatible between the initial APK and the update file.

And here is an error we get in Bugsnag:

Error Font.loadAsync unexpected exception: Font asset not found /data/user/0/XXX/files/.expo-internal/raw/node_modules_expo_vectoricons_build_vendor_reactnativevectoricons_fonts_materialcommunityicons.ttf 
    (native) construct
    (native) apply
    address at /data/user/0/XXX/files/.expo-internal/209f381b392936ee7d948a509f8c81dc:1:90853 _construct
    address at /data/user/0/XXX/files/.expo-internal/209f381b392936ee7d948a509f8c81dc:1:90498 Wrapper
    (native) construct
    address at /data/user/0/XXX/files/.expo-internal/209f381b392936ee7d948a509f8c81dc:1:677268 _createSuperInternal
    (native) call
    address at /data/user/0/XXX/files/.expo-internal/209f381b392936ee7d948a509f8c81dc:1:677553 CodedError

I tried upgrading all libs and dependencies to their latest versions so we are running Expo SDK 48 and the latest version of expo-updates. We are also using react-native-paper (the only one I could not upgrade - v4), so we don’t actually import any of the icon font files directly - it’s proxied through that I think.

Has anyone encountered a similar issue? If so, how did you solve it?

Thank you all for your time!

Regards,
Vladimir