Skip to content

feat(eas-cli) Remote build log streaming (--stream-logs)#3515

Open
javascripter wants to merge 1 commit intoexpo:mainfrom
javascripter:stream-logs
Open

feat(eas-cli) Remote build log streaming (--stream-logs)#3515
javascripter wants to merge 1 commit intoexpo:mainfrom
javascripter:stream-logs

Conversation

@javascripter
Copy link

@javascripter javascripter commented Mar 17, 2026

Why

This PR introduces an opt-in --stream-logs flag to stream remote logs directly to the CLI in real-time.
The goal is to make remote EAS builds feel much closer to expo run:[ios/android] so that humans/agents can debug issues directly inside their terminal.

Starting Streaming
Screenshot 2026-03-17 at 22 42 54 Screenshot 2026-03-17 at 23 08 17

This is a new feature proposal, so I'm looking to hear what Expo team thinks about this feature.
The PR itself is feature-complete and ready for testing.

Context

Running eas build --wait leaves developers watching a status spinner while the actual build happens on EAS.

This means to debug a build:

  • you have to open a browser tab to watch the live logs
  • when an issue occurs, you have to copy the actual errors/warning messages on the browser, then paste it into AI agents to provide context and have to repeat these steps until you have resolved build issues.

How

  • Core feature: Added the --stream-logs flag to both eas build and eas build:view.
  • Cursor Tracking: Uses cursor-based tracking per log file to safely handle log file rotations and avoid re-printing lines across poll cycles.
  • Formatting: Maps raw BuildPhase enums to human-readable display names (via buildPhaseDisplayName from @expo/eas-build-job).
    • For multi-platform builds (--platform all), logs are interleaved and therefore prefixed with platform labels (e.g., [Android], [iOS]) to keep the stream readable.
  • Validation: Explicitly prevents --stream-logs from being combined with incompatible flags like --no-wait, --json, or --local.

Test Plan

  • Unit tests for log parsing, single/multi-platform streaming, cursor deduplication, and flag validation
  • Run yarn test src/build/__tests__/logs-test.ts, yarn test src/__tests__/commands/build-stream-logs-test.ts, yarn test src/__tests__/commands/build-view-test.ts

For manual testing, I have verified both eas build and eas build:view locally by running:

cd <PATH_TO_EXPO_APP>
<PATH_TO_REPO>/eas-cli/bin/run build -p android --stream-logs # or #build:view <BUILD_ID> --stream-logs

@javascripter javascripter marked this pull request as ready for review March 17, 2026 23:20
@github-actions
Copy link

Subscribed to pull request

File Patterns Mentions
**/* @douglowder
packages/eas-cli/src/commands/build/** @sjchmiela
packages/eas-cli/src/build/** @sjchmiela

Generated by CodeMention

@javascripter javascripter changed the title feat(eas-cli) Opt-in remote log streaming during builds (--stream-logs) feat(eas-cli) Opt-in remote build log streaming (--stream-logs) Mar 17, 2026
@javascripter javascripter changed the title feat(eas-cli) Opt-in remote build log streaming (--stream-logs) feat(eas-cli) Remote build log streaming (--stream-logs) Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant