Expo Icon's are showing up as [ ? ] only in standalone iOS and published iOS (SDK37)

Please provide the following:

  1. SDK Version: 37
  2. Platforms(Android/iOS/web/all): standalone iOS, published iOS in expo

Recently upgraded to SDK 37 from 35 by using expo cli (expo upgrade 36, then expo upgrade 37). Fixed breaking changes. Checked how the apps looked in the simulators for both iOS and android. Both looked great. Did a build with expo cli for both platforms. Android in production (from play store) looks fine. For iOS in production (app store), all icons are undefined/ boxed out with a question mark. Checked out the published version of the iOS app within the expo client app, same undefined icons throughout the application. Not entirely sure whats wrong here. Any help?

How the icons are being imported/used:
import { MaterialIcons } from '@expo/vector-icons'

<MaterialIcons name={'close'} size={35} color={colors.blue} />

Noticed in the app.json file that the “sdkVersion” key was missing in the expo object. Would this be an issue even if I upgraded from SDK 35 to 37 with the cli?

Update. Did more digging around. Last time this happened for other users due to them upgrading from 33 -> 34 and there was an error in expo-font which required an update to expo itself. Could this be a similar issue???

Found out the issue. I jumped into this app midway and recently found out that the previous devs ejected out of expo and decided to undo that ejection. I came along and updated expo to 37 and started having this icon issue only on ios builds. We still had the iOS and Android directories within our app directory. Brent Vatne over at expo’s github page helped me solve this issue by deleting these directories and rebuild, which worked for me. His response was…

some context on why this is happening with ios and android directories present:

  • we recently released support for expo-updates in bare react-native apps
  • expo-cli needs some way to know if it should publish for a bare app or for usage in expo client / a standalone app built by expo build service
  • so we look for ios and android directories to guess that
  • then we set the target flag accordingly, so expo publish --target bare is the default if you have ios and android directories, otherwise it’s expo publish --target managed

we should let people know what target is being used explicitly in the publish output to be more clear about this

Hope this help anyone with similar issues with SDK37!

6 Likes

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.