Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

expo-build-properties doesn't set iOS deployment target correctly. #28476

Closed
SophieJung7 opened this issue Apr 26, 2024 · 3 comments
Closed

expo-build-properties doesn't set iOS deployment target correctly. #28476

SophieJung7 opened this issue Apr 26, 2024 · 3 comments
Labels
CLI Versioned Expo CLI -- `npx expo start`

Comments

@SophieJung7
Copy link

Summary

Recently my iOS app got submitted and Apple sent me an email saying "ITMS-90725: SDK version issue - This app was built with the iOS 16.4 SDK. Starting April 29, 2024, all iOS and iPadOS apps must be built with the iOS 17 SDK or later, included in Xcode 15 or later, in order to be uploaded to App Store Connect or submitted for distribution." So I used expo-build-properties and set the rule at app.config.js. But EAS keeps building my app with iOS 16.4. Why?

What platform(s) does this occur on?

iOS

SDK Version

49

Environment

expo-env-info 1.2.0 environment info:
System:
OS: macOS 14.4.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.11.1 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 10.2.4 - /usr/local/bin/npm
Managers:
CocoaPods: 1.13.0 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 23.4, iOS 17.4, macOS 14.4, tvOS 17.4, visionOS 1.1, watchOS 10.4
Android SDK:
API Levels: 30, 33
Build Tools: 30.0.2, 30.0.3, 33.0.0, 33.0.2, 34.0.0
System Images: android-30 | Google APIs Intel x86 Atom, android-UpsideDownCake | Google Play Intel x86_64 Atom
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9619390
Xcode: 15.3/15E204a - /usr/bin/xcodebuild
npmPackages:
expo: ^49.0.21 => 49.0.21
expo-router: ^2.0.0 => 2.0.14
react: 18.2.0 => 18.2.0
react-dom: 18.2.0 => 18.2.0
react-native: 0.72.6 => 0.72.6
react-native-web: ~0.19.6 => 0.19.9
npmGlobalPackages:
eas-cli: 7.6.0
expo-cli: 6.3.10
Expo Workflow: bare

Minimal reproducible example

module.exports = { plugins: [ [ 'expo-build-properties', { ios: { useFrameworks: 'static', deploymentTarget: '17.0', }, }, ] ], };

@SophieJung7 SophieJung7 added CLI Versioned Expo CLI -- `npx expo start` needs validation Issue needs to be validated labels Apr 26, 2024
@expo-bot expo-bot removed the needs validation Issue needs to be validated label Apr 26, 2024
@ChrisBurgdorff
Copy link

I was wondering this too. I'm not sure that the "deploymentTarget" is the same as the iOS SDK version. I have my deploymentTaget in the expo-build-properties set to 13.4, and Apple emails me telling me that our app is build with SDK version 16.4.

So we need to change the SDK version to 17.0 as per Apple, but per the expo-build-properties docs here, there doesn't seem to be an option for SDK in the Apple settings...

@gorbypark
Copy link
Contributor

gorbypark commented Apr 27, 2024

The way I understand it is that deploymentTarget is effectively the minimum SDK version you plan on supporting. On the other hand, the build SDK is determined by which version of Xcode the app is built with.

At the end of the day, you need to build with SDK17+ (which is Xcode 15.0+) but that SDK17 supports versions further back than 17. I believe RN/expo set a deploymentTarget of 13.4 as default so building with SDK17 should work all the way back to SDK13.

If you are using EAS Build to build your project, check which version of Xcode is being used. I recently upgraded a project from Expo SDK49 to Expo SDK50 and with Expo SDK49 my last build was using Xcode 14.3.1 and after upgrading to Expo SDK50 it is now using Xcode 15.2. I am not sure if there is an option somewhere to set the Xcode version? It seems tied to the Expo SDK version by default but it might be configurable somewhere.

If Xcode 15.3 is giving you the error, go to settings - locations and see which version of Xcode command line tools is being used, it should also be set to 15.3 (I guess this is actually what determines the build SDK version when building from the command line).

edit
It seems like these are the option for a build environment https://docs.expo.dev/build-reference/infrastructure/ and you would set it in app.json using something like this with the image being whatever image you want to use from the above infrastructure page.

{
  "build": {
    "production": {
      "ios": {
       "image": "macos-ventura-13.6-xcode-15.1"
    }
  }
}

@Kudo
Copy link
Contributor

Kudo commented Apr 30, 2024

hi there! the deployment target means the minimal supported ios version for people to install your app. that is not the same as ios sdk version for building the source code. for ios sdk version, it is related to xcode version. according to the xcode doc the minimal xcode version to support ios sdk 17 is xcode 15.0.
as @gorbypark shared, please choose an eas image that at least with xcode 15, e.g. macos-ventura-13.6-xcode-15.0.

@Kudo Kudo closed this as completed Apr 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLI Versioned Expo CLI -- `npx expo start`
Projects
None yet
Development

No branches or pull requests

5 participants