`eas build:dev` should handle all build states, rather than creating duplicate builds
- 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
When running `eas build:dev` the expectation is that either an existing build matching the current fingerprint will be installed, or a new build will be started, and installed when complete.
If there is already a queued, pending, building, errored etc build, that is completely ignored, and so its possible to create duplicate builds etc. when trying to install the latest dev client version from EAS.
You can see that at https://github.com/expo/eas-cli/blob/32d3020659740d6d74ce76d9c77bd94a656ce018/packages/eas-cli/src/commands/build/dev.ts#L322, all build status other than Finished are ignored.
I would suggest that the behaviour should be as follows:
- build not yet finished - wait for the build to complete, then install and run,
- build finished and available, install and run (the current logic),
- build failed - Notify the user and ask if a new build should be started
### Managed or bare?
Managed
### Environment
```
expo-env-info 1.3.3 environment info:
System:
OS: macOS 15.4.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 22.15.1 - ü/.nvm/versions/node/v22.15.1/bin/node
Yarn: 1.22.22 - /opt/homebrew/bin/yarn
npm: 10.9.2 - ü/.nvm/versions/node/v22.15.1/bin/npm
Watchman: 2025.04.28.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.16.2 - /Users/robert.walker/.rvm/rubies/d
SDKs:
iOS SDK:
Platforms: DriverKit 24.4, iOS 18.4, macOS 15.4, tv4
IDEs:
Android Studio: 2024.3 AI-243.25659.59.2432.13423653
Xcode: 16.3/16E140 - /usr/bin/xcodebuild
npmPackages:
expo: ü52.0.46 => 52.0.46
expo-router: ü4.0.21 => 4.0.21
expo-updates: ü0.27.4 => 0.27.4
react: 18.3.1 => 18.3.1
react-dom: 18.3.1 => 18.3.1
react-native: 0.76.9 => 0.76.9
react-native-web: ü0.19.13 => 0.19.13
npmGlobalPackages:
eas-cli: 16.6.2
Expo Workflow: managed
```
### Error output
_No response_
### Reproducible demo or steps to reproduce from a blank project
Run `eas build:dev`
From another shell, machine etc, run `eas build:dev`
Observe that two builds will be queued.
Expectation:
The second time `eas build:dev` is run, it waits for the first build to complete, and then installs it.
Contributor guide
Assessment
This issue has not been assessed yet.