Preview vs Prod json

Hello everyone,

I’m creating an app.staging.json in parallel with app.json. This way i can create a new app on the stores just for testing (especially with testflight)

Now, my concerns are more about the keystore.

  • should i reuse the same as for the prod version?
  • if i generate a new one will expo know to switch between them depending on which app json it uses?
  • and if a new one is generated how to get it through expo expo fetch:android:keystore ?

Thank you

i wouldn’t recommend creating a separate app.json, you can use app.config.js instead: https://docs.expo.io/workflow/configuration/#dynamic-configuration-with-appconfigjs

you can keep the slug as the same and this will use the same keystore/credentials automatically then. use release channels to separate updates between staging and production: https://docs.expo.io/distribution/release-channels/

1 Like

Thank you for your response @notbrent.

The reason why we are trying a different app is mostly due to testflight which if i push a new version (even if it was intended only for production) will be pushed to the people on the testflight mode. We are already using the release-channels but unlike Android giving us the choice in which release goes to where, Apple and its testflight takes everything

Or did i miss something?

The reason why we are trying a different app is mostly due to testflight which if i push a new version (even if it was intended only for production) will be pushed to the people on the testflight mode

this is exactly what release channels solves, so i’m not sure i follow

@notbrent But ios won’t let you have the app testflight version and the prod version at the same time on your phone. So everytime i will push a new version to the store, TestFlight will automatically use it even if potentially it was only targeting the production

oh ok i did not understand that as being the problem. is it necessary to have both on your phone at the same time? this will likely lead to some additional work and i’d recommend avoiding it. eg: you will need to change your bundle identifier, if you use any services that depend on your bundle identifier you will need to add an additional config to that services for it (eg: google sign in and so on).

It is a nice to have when you want to offer some people the opportunity to be the first ones to review and give feedbacks but also being able to see the real live version

i don’t believe that apple will allow you to do this through testflight, but you could try! it’s definitely doable on the expo side. if you use app.config.js you can build with some env var like APP_ENV=staging expo build:ios and then have app.config.js provide a different bundleIdentifier, slug, and name when building in that context. expo-cli will prompt you for new credentials, you will need to generate an entirely different set for the staging app. then go ahead and submit. you may want to google examples of other people doing this with testflight and how they managed to get apple to approve it.