| name | eas-build-error |
| description | View the latest EAS build status and errors. Fetches build details, extracts failure logs, and suggests fixes for common iOS/Android build issues. |
| allowed-tools | Read,WebFetch,Bash(npx:*) |
| model-tier | standard |
| model | sonnet |
| effort | medium |
| version | 1.0.0 |
| author | flurdy |
EAS Build Error - View latest build status and errors
Show the status and errors from the latest EAS build.
Usage
/eas-build-error # Latest build (any platform)
/eas-build-error ios # Latest iOS build
/eas-build-error android # Latest Android build
/eas-build-error <build-id> # Specific build by ID
Implementation
Step 1: Get the build
Parse the argument to determine what to fetch:
- If argument looks like a UUID (contains hyphens, 36 chars): treat as build ID
npx eas build:view <build-id> --json
- If argument is
ios or android: filter by platform
npx eas build:list --limit=1 --platform=<platform> --json --non-interactive
- If no argument: get latest build across all platforms
npx eas build:list --limit=1 --json --non-interactive
Step 2: Display build summary
From the JSON output, extract and display:
## EAS Build: <STATUS>
| Field | Value |
|-------------|--------------------------------|
| ID | <id> |
| Platform | <platform> |
| Profile | <buildProfile> |
| Status | <status> (with emoji: ✓/✗/⏳) |
| Commit | <gitCommitHash> <gitCommitMessage> |
| Started | <createdAt> |
| Duration | <computed from metrics> |
| Logs | <link to expo.dev> |
Step 3: Show errors (if build failed)
If status is ERRORED or CANCELED:
-
Show the error field from the JSON:
### Error
<error.message>
-
Fetch detailed logs — try each URL in logFiles array:
- Use
WebFetch on each log URL
- Extract error lines, warnings, and failure details
- If URLs return 404 (expired), note that logs have expired
-
Try xcode build logs if available:
- Check
artifacts.xcodeBuildLogsUrl
- Fetch and extract compilation errors
-
If all log URLs have expired, tell the user:
Log URLs have expired (15-minute TTL).
View full logs at: <expo.dev link>
Step 4: Suggest fixes (if applicable)
If you recognize common error patterns, suggest fixes:
| Error Pattern | Suggestion |
|---|
non-modular header inside framework module | Add CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES to post_install |
module map file not found | Check use_modular_headers! vs use_frameworks! in Podfile |
Swift pods cannot yet be integrated as static libraries | Add useFrameworks: "static" to expo-build-properties |
Pod install errors | Check CocoaPods compatibility, try pod repo update |
No signing certificate | Check EAS credentials with eas credentials |
Provisioning profile | Run eas credentials to fix provisioning |
Example Output
## EAS Build: ERRORED ✗
| Field | Value |
|----------|----------------------------------------------------------|
| ID | 6a50d5ae-6a62-1345-96d3-c1def3755cf1 |
| Platform | iOS |
| Profile | development |
| Status | ✗ ERRORED |
| Commit | 8a2ba05 feat: Add haptic feedback... |
| Duration | 94s |
| Logs | https://expo.dev/accounts/USERNAME/projects/PROJECT/builds/… |
### Error
The "Run fastlane" step failed because of an error in the Xcode build process.
### Detected Errors
- module map file 'gRPC-Core.modulemap' not found (in target 'gRPC-C++')
### Suggested Fix
The `use_modular_headers!` setting is breaking gRPC module maps.
Consider using `useFrameworks: "static"` with a post_install hook instead.