Expo Application ID (iOS & Android)

My issue is that the applicationId/bundle identifier is not matching what I usually use. I have a numerical character in the title of my app (where I’m assuming it’s pulling the name from), so it’s building with a numerical character in the Android build, which results in it failing. iOS builds successfully but as you’d expect, it does not match the identifier that I used initially, so I’m unable to upload.

I’d like to know the new way to manually specify an applicationId/bundle identifier. I do still have them set in the app.config.js, but it doesn’t appear to be pointed towards that anymore.

I’m in a managed workflow and my eas-cli version is 2.1.0. So far, I have attempted to go into the build files (project.pbxproj and build.gradle) and manually changed the PRODUCT_BUNDLE_IDENTIFIER & applicationId, no luck.

can you share more information about your project? your app name should have no impact on bundle identifier or application id. my guess is that you have some environment variables set locally that you didn’t configure for eas build

Of course, thank you for your quick reply.

Here is the error I’m receiving from the Android build:

The iOS does build successfully, but it throws the error when uploading through transporter:

Verify your bundle identifier ‘org.name.(myapp)’ is correct…’
With myapp being the name of my app.

Could you point me in the direction to change these environmental variables for EAS? I’ve looked through all of the configuration files and the only single string I have that has my app name alone is in app.config.js under the “name” property.

I would also like to note that I’m pretty sure this started to mess up on a recent EAS-CLI update, not for sure on that though.

Let me know what other information you need, if you need any.

oh and if you can share a link to your build page that would be helpful!

Hi @channing

These two statements contradict each other. In a managed project there is no project.pbxproj or build.gradle.

Perhaps you ran npx expo prebuild or npx expo run:android/npx expo run:ios at some point? If so, that would have generated the native projects, effectively switching you to the bare workflow. At this point, most changes in app.config.js would not have any effect.

Have a look at this old post of mine which might help:

Hi @wodin,

I have been running expo prebuild for a few months now with no issues, really odd. I did recently do expo prebuild again so I suppose that could’ve been when things messed up.

I did know about the bare workflow option but didn’t think I was on it because I never ran expo eject, but I have definitely ran the expo prebuild command. I also never follow the bare workflow steps for packages that require the bare workflow, I just install the package, expo prebuild, and it works. I could very well be misunderstanding so I will read that forum post.

Can you guide me / link another post on how to change the applicationId/Bundle Identifier in a bare workflow?

Hi @channing

expo eject is no more and was replaced by expo prebuild, although they’re not quite the same. After expo eject you were on your own, while you can of course run expo prebuild multiple times.

Managed vs. bare is kind of a scale these days instead of binary.

OK, that should normally be OK, but maybe try running npx expo prebuild --clean, especially if you made some manual modifications to the native projects when you were trying to fix things and you want to start from a clean slate again.

If it’s correct in app.config.js and you run npx expo prebuild --clean, then it should regenerate the native projects with the correct android.package / ios.bundleIdentifier.

I understand now! Thank you for your explanation, I guess I just haven’t kept track with how everything works throughout Expos progression.

I was looking around last night and I found this: Unclear deprecation of ios.bundleIdentifier and android.package · Issue #1050 · expo/eas-cli · GitHub which matched my issue pretty well.

I just ran the expo prebuild --clean command and built it on both platforms with eas build. I believe this fixed the android.package / ios.bundleIdentifier issue, so thank you so much!

I got another error on my Android build, but I think it’s unrelated. Not sure if you know what would be causing this.

iOS appears to be working properly though, so thank you!

1 Like

What Expo SDK version are you on?

From a quick search it seems that if one of your dependencies uses the IStar attribute, you need to target Android SDK 31 (or downgrade the dependency to a version that does not use that attribute).

It looks like you might be on an Expo SDK version less than 46. e.g. Expo SDK 45 targets Android SDK 31 by default).

Maybe run expo-cli doctor to see if any of the Expo packages are on versions that are incompatible with your Expo SDK version and if that doesn’t fix it, check your other dependencies or upgrade to Expo SDK 46.

You were right! I was on SDK 44 and had to go through a whole process because of the react v18 upgrade, but it appears that everything is working correctly now.

Thank you so much for your help!

1 Like