16

I'm currently working on an app that is soon to be released. This would tend to push me to wait before upgrading to Xcode 9 beta just to make sure my environment is stable but ARKit is making me really curious and I'm thinking about updating asap :).

For those of you who are already the Xcode 9 Beta, are you experiencing any difficulties working on your previous projects?

That might be a trivial questions but I had issues in the past when updating Xcode, hence why I ask this time.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Edouard Barbier
  • 1,815
  • 2
  • 19
  • 32
  • 10
    You can run both Xcode 8.3 and Xcode 9 beta on the same Mac. Continue to open and work on your real projects with Xcode 8.3. You won't be able to release a project with Xcode 9 until it is final (approximately mid Sept if history serves). – vacawama Jun 09 '17 at 00:00
  • Thanks @Vacawama – Edouard Barbier Jun 09 '17 at 08:12

1 Answers1

25

[edit]: it is now safe to upgrade to Xcode 9 (and Swift 3.2 or Swift 4) for releasing on iTunesConnect.


[original message follows (when Xcode 9 was only a beta)]

iTunes Connect requires AppStore submissions to be done with a stable release of Xcode, so no, you can't upgrade safely yet for a release.

Currently, for the period June, July, August, early September 2017, you can use most (but not all) versions of Xcode between 6.0.1 and 8.3.3 for a submission to AppStore.

Likely, early-September 2017 will be opened to submissions from Xcode 9. And I bet that around January 2018 support for Xcode 6 will be dropped, keeping only the range Xcode7-Xcode9.

This does not impact TestFlight: you can already submit test builds from Xcode 9 beta to TestFlight.

So just keep multiple installations of Xcode by renaming the app eventually, so that you always keep a stable version available.

And don't upgrade your code to Swift 4 using a custom toolchain for submission with Xcode 8: iTunes Connect only accepts for submission Swift toolchains natively bundled with the Xcode you're using. Yet, you can eventually write code like:

#if swift(>=3.2)
    // for Xcode 9 beta
#else
    // for Xcode 8 and release on AppStore
#endif
Cœur
  • 37,241
  • 25
  • 195
  • 267
  • Thanks for the quick answer @Coeur ! – Edouard Barbier Jun 09 '17 at 08:12
  • you can use `sudo xcode-select -s /PathToXcode.app` to switch between xcode versions. You can also accomplish this without sudo by setting `DEVELOPER_DIR=/PathToXcode.app/Contents/Developer` – ablarg Aug 25 '17 at 19:24
  • @Cœur Does anyone know what to do if you have a pod that is Swift 3.1 and Xcode 9 only takes 3.2? I cant get it to convert to 3.2 in Xcode 8 – blue Sep 04 '17 at 12:39
  • @skyguy Swift 3.2 is almost identical to Swift 3.1: so in 99% cases it will work. If any rare issue, open an issue on github's source of the pod to ask for a fix. – Cœur Sep 04 '17 at 12:43