Create app after ejecting

This is potentially a stupid question, but is there an Expo guide on creating your own standalone release IPA file from Xcode after you have detached from CRNA to ExpoKit?

I can see various articles on how to detach and how to then run in sim, etc., but not the exact steps required to build a release version and upload to iTunes Connect/App Store. Just some hand-wavy sentences telling you to, when you’re ready to release, just create your IPA using Xcode using that method you so totally already know.

It’d be great to have a proper step-by-step guide following best practice for those of us who never “did it the old way” and have never actually created an App using Xcode proper (but needed to eject for IAPs or other stuff). It should include steps for one-time tasks after ejecting (things like ensuring the app icons were created properly (mine weren’t)), as well as things to do each time (set debug/release mode, publish to expo, bump Xcode build version number, etc., do we then set back to debug mode? I dunno, never done it before.)

Additionally, for me, I had troubles with the distribution stuff as I was previously building on Expo proper using exp build:ios, but then had to eject after that as I needed to include IAPs. This meant that I had an existing distribution certificate that I let Expo handle for me that I then needed to use. I used exp fetch:keys or whatever the command is, which gave me a couple of p12 files. That was fine, but they appeared to be protected by a passphrase that i wasn’t privy to. In the end I had to revoke and generate myself some new ones. If that’s the “official” way to do it then fine, but that should be documented too.

In summary it’d be great to have guides that:

  • Tell you what to do after ejecting to ensure that you can continue to work on a test your project in the smoothest way:
    • Any project config settings you might want to look at, and what effect they may have.
    • How to check and fix any issues with app icons (it turned out that at the time I ejected, my app.json’s expo.icon icon was used to generate the app’s icons, rather than expo.ios.icon as I expected. Also not all icons were generated.
    • Interestingly, when I ejected I had an issue with the “yoga” key in my Podfile. This is documented on the internet as an issue what appears to have been fixed, but again it was something I had to manually go and change (pod 'Yoga' to pod 'yoga' in the Podfile, FWIW to anyone).
    • What to do with the certificate and keys generated by a previous exp build:ios command if you elected to have Expo manage the certificate for you.
  • Tell you how to go about creating a release version
    • Whether you need to set the scheme’s build configuration to “Release”, and whether you ought to change it back afterwards. (I am doing this, but I am not sure it’s required as it’s only `Run" mode I am doing it for, and I imagine that the process for creating an IPA involves “Archive” mode, which is already set to “Release”, but being as I’ve never done this before…)
    • What to do with “version” and “build”. I know this is more a personal preference thing, and is an issue even when not ejected. But still, it’d be good to have standard best practice documented here. Reasons why choosing a given scheme over another might be useful (e.g. just incrementing build numbers versus semver-stylee for releases, or maybe both should be semver stylee and always match, I don’t know).

There’s certainly more that need to go into these guides, but this is the kind of thing an Xcode newbie requires to actually go about building an app for distribution. As it stands, you’re kinda left on your own after ejecting.

And, of course, the same goes for Android builds. I’m just using iOS as that’s my specific experience.

I’m sure there’s plenty of documentation about this from a “bare RN” perspective, and much of it will of course be appropriate for a newly-ejected CRNA app. However, it’d be great if, like using Expo and CRNA, where we don’t have to worry too much about the nuts and bolts of creating an app in Xcode, but instead get a “for dummies” step-by-step guide to just get cracking with after ejection. It’d be nice to continue the worry-free development process that CRNA+Expo gave us when we are forced to eject (but don’t want to!) by having these simple bare minimum (but best practices) steps.

2 Likes

@alexrussell I think it’d be really useful to have these guides but I’m not sure we’ll have enough time to maintain them internally in the near future. Are you interested in contributing them to our docs? They’re open source here: https://github.com/expo/expo-docs

The thing is, I have so far only winged it when creating my app. I want these guides so that I can be sure I’m doing it right - it’s quite likely I’ve either missed bits out (and it just about works, but may have subtle issues) or done too much (such as editing my “run” scheme to “release” mode).

As such, it’s not really something I feel I ought to write up in the first instance, as it needs someone with the actual expertise in going from CRNA to ejected-built-standalone-app. Also, I have zero experience/knowledge of the Android process.

But fair enough on your point of ongoing maintenance. I know that if left to go stale, it can produce even more work for you due to people following official-but-wrong instructions, and then flooding you with support requests.

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