EAS build error: Authentication with Apple Developer Portal failed! iTunes service key is empty
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 236
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 91
Description
### Build/Submit details page URL
_No response_
### Summary
EAS is returning an error when I attempt to login with my Apple Developer account
`eas build` fails at the Apple Developer login step with the following error
```
Authentication with Apple Developer Portal failed!
iTunes service key is empty
```
### Managed or bare?
Managed
### Environment
expo-env-info 2.1.0 environment info:
System:
OS: macOS 26.6.2
Shell: 5.9 - /bin/zsh
Binaries:
Node: 24.12.0 - /Users/cameronchisholm/.nvm/versions/node/v24.12.0/bin/node
Yarn: 1.22.22 - /Users/cameronchisholm/.nvm/versions/node/v24.12.0/bin/yarn
npm: 11.6.2 - /Users/cameronchisholm/.nvm/versions/node/v24.12.0/bin/npm
Managers:
CocoaPods: 1.16.2 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 25.5, iOS 26.5, macOS 26.5, tvOS 26.5, visionOS 26.5, watchOS 26.5
IDEs:
Android Studio: 2025.2 AI-252.25557.131.2521.14432022
Xcode: 26.6/17F113 - /usr/bin/xcodebuild
npmPackages:
expo: ~57.0.20 => 57.0.20
react: 19.2.3 => 19.2.3
react-dom: 19.2.3 => 19.2.3
react-native: 0.86.3 => 0.86.3
react-native-web: ^0.21.2 => 0.21.2
npmGlobalPackages:
eas-cli: 23.2.0
Expo Workflow: bare
### Error output
```
EXPO_DEBUG=true eas build --profile development
★ eas-cli@24.3.0 is now available.
To upgrade, run npm install -g eas-cli.
Proceeding with outdated version.
✔ Select platform › iOS
The EAS build profile does not specify a Node.js version. Using the version specified in .nvmrc: 24.12.0
Loaded "env" configuration for the "development" profile: no environment variables specified. Learn more: https://docs.expo.dev/build-reference/variables/
ios.podfileProperties: withIntrospectionBaseMods ➜ withIosBaseMods ➜ withGeneratedBaseMods ➜ withIosPodfilePropertiesBaseMod
ios.podfileProperties: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withJsEnginePodfileProps ➜ withPodfileProperties
ios.podfileProperties: withStaticPlugin ➜ withRunOnce ➜ withExpoImage ➜ withPodfileProperties
ios.infoPlist: withIntrospectionBaseMods ➜ withIosBaseMods ➜ withGeneratedBaseMods ➜ withIosInfoPlistBaseMod
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withVersion ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withBuildNumber ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withUsesNonExemptEncryption ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withScheme ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withRequiresFullScreen ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withOrientation ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withDisplayName ➜ withInfoPlist
ios.infoPlist: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withGoogle ➜ withInfoPlist
ios.infoPlist: withStaticPlugin ➜ withRunOnce ➜ withFileSystem ➜ withInfoPlist
ios.infoPlist: withStaticPlugin ➜ withRunOnce ➜ withDevClient ➜ withGeneratedIosScheme ➜ withInfoPlist
ios.infoPlist: withDevClient ➜ withRunOnce ➜ withLocalNetworkPermission ➜ withInfoPlist
ios.infoPlist: withRunOnce ➜ withDevClient ➜ withRunOnce ➜ withInfoPlist
ios.infoPlist: withStaticPlugin ➜ withIosSplashScreen ➜ withPlugins ➜ withStaticPlugin ➜ withIosSplashInfoPlist ➜ withInfoPlist
ios.infoPlist: withSystemUI ➜ withPlugins ➜ withStaticPlugin ➜ withIosUserInterfaceStyle ➜ withInfoPlist
ios.infoPlist: withSystemUI ➜ withPlugins ➜ withStaticPlugin ➜ withIosRootViewBackgroundColor ➜ withInfoPlist
ios.infoPlist: withFallback ➜ withPlugins ➜ withStaticPlugin ➜ withIosAdMob ➜ withInfoPlist
ios.infoPlist: withFallback ➜ withPlugins ➜ withStaticPlugin ➜ withMaps ➜ withGoogleMapsKey ➜ withInfoPlist
ios.entitlements: withIntrospectionBaseMods ➜ withIosBaseMods ➜ withGeneratedBaseMods ➜ withIosEntitlementsBaseMod
ios.entitlements: withIosExpoPlugins ➜ withPlugins ➜ withStaticPlugin ➜ withAssociatedDomains ➜ withEntitlementsPlist
ios.entitlements: withFallback ➜ withPlugins ➜ withStaticPlugin ➜ withNotificationsEntitlement ➜ withEntitlementsPlist
ios.entitlements: withStaticPlugin ➜ withExpoContacts ➜ withRunOnce ➜ withAccessesContactNotes ➜ withEntitlementsPlist
ios.entitlements: withStaticPlugin ➜ withExpoAppleAuthentication ➜ withRunOnce ➜ withAppleSignInWarning ➜ withEntitlementsPlist
ios.expoPlist: withIntrospectionBaseMods ➜ withIosBaseMods ➜ withGeneratedBaseMods ➜ withIosExpoPlistBaseMod
ios.expoPlist: withStaticPlugin ➜ withRunOnce ➜ withUnversionedUpdates ➜ withUpdates ➜ withExpoPlist
ios.splashScreenStoryboard: withPlugins ➜ withStaticPlugin ➜ withIosSplashScreenStoryboardBaseMod ➜ withGeneratedBaseMods ➜ withIosSplashScreenStoryboardBaseMod
ios.splashScreenStoryboard: withStaticPlugin ➜ withIosSplashScreen ➜ withPlugins ➜ withStaticPlugin ➜ withIosSplashScreenImage ➜ withIosSplashScreenStoryboard
✔ Using remote iOS credentials (Expo server)
If you provide your Apple account credentials we will be able to generate all necessary build credentials and fully validate them.
This is optional, but without Apple account access you will need to provide all the missing values manually and we can only run minimal validation on them.
✔ Do you want to log in to your Apple account? … yes
› Log in to your Apple Developer account to continue
✔ Apple ID: … [redacted]
› Using password for [redacted] from your local Keychain
Learn more: https://docs.expo.dev/distribution/security#keychain
Authentication with Apple Developer Portal failed!
iTunes service key is empty
AssertionError [ERR_ASSERTION]: iTunes service key is empty
at t.getItunesConnectServiceKeyAsync (/Users/cameronchisholm/.bun/install/global/node_modules/@expo/apple-utils/build/index.js:1:715461)
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async Object.S [as loginWithUserCredentialsAsync] (/Users/cameronchisholm/.bun/install/global/node_modules/@expo/apple-utils/build/index.js:1:703305)
at async loginWithUserCredentialsAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/ios/appstore/authenticate.js:84:24)
at async loginAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/ios/appstore/authenticate.js:56:16)
at async authenticateAsUserAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/ios/appstore/authenticate.js:129:27)
at async authenticateAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/ios/appstore/authenticate.js:101:16)
at async AppStoreApi.ensureAuthenticatedAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/ios/appstore/AppStoreApi.js:35:28)
at async CredentialsContext.bestEffortAppStoreAuthenticateAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/context.js:67:13)
at async SetUpTargetBuildCredentials.runAsync (/Users/cameronchisholm/.bun/install/global/node_modules/eas-cli/build/credentials/ios/actions/SetUpTargetBuildCredentials.js:16:9) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: true,
operator: '==',
diff: 'simple'
}
Error: build command failed.
```
### Reproducible demo or steps to reproduce from a blank project
Must not be logged in to apple account with EAS
Run `eas build` -> platform iOS -> attempt to login with apple account
**Getting the same error on eas-cli/24.3.0 as well**
Contributor guide
Assessment
This issue has not been assessed yet.