v1.0.0 to v1.0.0

3 added, 1 removed. Audit A to A.

---
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: sonnet
+ model-tier: standard-coding
+ model-cost-policy: prefer-subscription-oauth
+ model-metered-policy: ask-above-standard
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
```bash
npx eas build:view <build-id> --json
```
- If argument is `ios` or `android`: filter by platform
```bash
npx eas build:list --limit=1 --platform=<platform> --json --non-interactive
```
- If no argument: get latest build across all platforms
```bash
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`:
1. **Show the error field** from the JSON:
```
### Error
<error.message>
```
2. **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
3. **Try xcode build logs** if available:
- Check `artifacts.xcodeBuildLogsUrl`
- Fetch and extract compilation errors
4. **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.
```