Expo EAS Prepare Credentials Bug Report
- 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
### Summary
EAS iOS cloud builds consistently fail during the **Prepare credentials** phase with:
`Unknown error. See logs of the Prepare credentials build phase for more information.`
However, the Expo build page does not expose any Prepare credentials logs, so the underlying error cannot be inspected.
### Environment
* Expo SDK: 57.0.0
* Expo: 57.0.22
* React Native: 0.86.3
* EAS CLI: 24.4.0 / latest
* Platform: iOS
* Workflow: managed
* Distribution: internal / Ad Hoc
* Bundle Identifier: `com.movieapp.mobile`
* Apple Developer Program: Individual
* Physical iPhone registered in the provisioning profile
### Credentials
The credentials were manually created and independently validated:
* Apple Distribution certificate
* Private key matches the Distribution certificate
* Active Ad Hoc provisioning profile
* Provisioning profile contains the physical test device
* Provisioning profile contains the same Distribution certificate
* Bundle identifier matches
* Apple Team matches
* `aps-environment=production`
* APNs key configured
EAS Credentials also reports:
`All credentials are ready to build`
The Distribution Certificate and Provisioning Profile both show as active.
### Reproduction / isolation performed
The failure occurs with BOTH:
1. `credentialsSource: local`
2. `credentialsSource: remote`
For remote credentials, the existing certificate and provisioning profile were uploaded using `eas credentials`.
EAS successfully reports:
`Using remote iOS credentials (Expo server)`
Apple login was skipped.
EAS then confirms:
`All your registered devices are present in the Provisioning Profile.`
The same failure also occurs with:
* development build (`developmentClient: true`)
* normal internal preview build without `developmentClient`
* clean build cache
* `--verbose-logs`
* `--build-logger-level trace`
Therefore the issue does not appear specific to `credentials.json`, local Windows credential paths, or development-client signing.
### Latest reproduction
Build ID:
`0524979c-e9b4-4c7b-bdd1-17263b953d18`
Profile: `preview`
Distribution: `internal`
Credentials source: `remote`
Command:
`npx eas-cli@latest build --profile preview --platform ios --message "Prepare credentials trace diagnostic" --build-logger-level trace --verbose-logs --clear-cache`
Result:
`iOS build failed: Unknown error. See logs of the Prepare credentials build phase for more information.`
No Prepare credentials phase logs are visible on the Expo build page.
Previous remote credentials reproduction:
`38e3eabc-cc28-460f-9d4e-32d6d5eaabb4`
Local credentials reproductions:
`76c870cd-12da-438f-8d8e-2f797196d1c0`
`52a33be7-6308-4cd5-ae54-d5da61056671`
`408fa5e6-4e4b-45e7-864f-b0057a4a1e74`
### Additional context
There is currently a separate Apple authentication issue (#4392) producing:
`iTunes service key is empty`
I encountered that issue as well, which is why I switched to manually generated credentials and then uploaded those credentials to EAS.
The current problem is different: Apple authentication is skipped, EAS accepts the remote credentials, and the cloud build subsequently fails in Prepare credentials.
Could Expo staff inspect the internal Prepare credentials logs for build `0524979c-e9b4-4c7b-bdd1-17263b953d18` and provide the underlying error?
### Managed or bare?
Managed
### Environment
Expo SDK: 57.0.0
Expo package: 57.0.22
React Native: 0.86.3
EAS CLI: 24.4.0 / latest
Workflow: Managed
Platform: iOS
Distribution: Internal / Ad Hoc
Credentials source: Remote (also reproduced with Local)
Host OS: Windows 10, x64
Node.js: 24.19.0
npm: 11.17.0
EAS Project:
@emrepatan/movieapp-mobile
Bundle Identifier:
com.movieapp.mobile
Build profile:
preview
Physical iPhone is registered and included in the Ad Hoc provisioning profile.
EAS Credentials reports that the Distribution Certificate and Provisioning Profile are active and:
"All credentials are ready to build."
### Error output
√ Using remote iOS credentials (Expo server)
Skipping Distribution Certificate validation on Apple Servers because we aren't authenticated.
Skipping Provisioning Profile validation on Apple Servers because we aren't authenticated.
All registered devices are present in the Provisioning Profile.
The existing profile was reused.
√ Uploaded to EAS
√ Computed project fingerprint
Starting iOS build
Waiting for build to complete.
× Build failed
🍏 iOS build failed:
Unknown error. See logs of the Prepare credentials build phase for more information.
Latest failing build ID:
0524979c-e9b4-4c7b-bdd1-17263b953d18
The Expo build page does not expose any logs for the "Prepare credentials" phase, so the underlying error is not visible.
The same failure was reproduced with:
- Remote credentials
- Local credentials
- developmentClient: true
- Internal preview build without developmentClient
- --clear-cache
- --verbose-logs
- --build-logger-level trace
### Reproducible demo or steps to reproduce from a blank project
I have not yet reproduced this from a completely blank Expo project, because the failure occurs during EAS's "Prepare credentials" phase before the application build itself starts.
Steps to reproduce with the affected managed Expo project:
1. Create/configure a managed Expo SDK 57 project for iOS.
2. Configure an explicit iOS bundle identifier.
3. Register a physical iOS device in the Apple Developer Portal.
4. Create an Apple Distribution certificate.
5. Create an Ad Hoc provisioning profile for the bundle identifier containing the registered device.
6. Upload the Distribution Certificate and Ad Hoc provisioning profile to EAS using:
npx eas-cli@latest credentials --platform ios
7. EAS reports:
"All credentials are ready to build"
8. Configure an internal distribution profile in eas.json:
"preview": {
"distribution": "internal",
"credentialsSource": "remote"
}
9. Start the build without Apple authentication:
npx eas-cli@latest build --profile preview --platform ios --clear-cache --verbose-logs --build-logger-level trace
10. Reuse the existing provisioning profile when prompted.
Expected:
The credentials are prepared and the iOS build proceeds.
Actual:
The cloud build fails during "Prepare credentials" with:
"Unknown error. See logs of the Prepare credentials build phase for more information."
No Prepare credentials logs are visible in the Expo build page.
Latest reproduction build ID:
0524979c-e9b4-4c7b-bdd1-17263b953d18
The same failure also occurs when using credentialsSource: local, so the issue does not appear to be specific to remote credential storage.
Contributor guide
Assessment
This issue has not been assessed yet.