expo / expo/eas-cli

Android local dev build cache upload succeeds but --dev-client lookup misses

Open
#4,373 0 comments 0 reactions 0 assignees View on GitHub
needs review
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 using the EAS build cache with `expo run:android`, the locally built Android development APK uploads successfully, but subsequent cache lookups using `--dev-client` cannot find it. The same build is found with `--no-dev-client` and the identical fingerprint.

### Managed or bare?

Bare

### Environment

- Expo SDK: 57
- expo: 57.0.20
- eas-cli: 23.2.0
- eas-build-cache-provider: 20.0.0
- Linux
- Bun
- Bare workflow with an android directory

### Error output

The upload completes, but the development-client lookup reports:

```
No builds available for ANDROID with fingerprint hash
```

The same fingerprint succeeds when the lookup uses `--no-dev-client`.

### Reproducible demo or steps to reproduce from a blank project

1. Create an Expo Android project with `expo-dev-client`.
2. Configure the EAS build cache provider.
3. Run `expo run:android` using a debug/development build.
4. Allow the local build cache provider to upload the generated APK.
5. Run the same command again with the unchanged project.
6. Observe that the provider searches with:

`eas build:download --platform=android --fingerprint= --dev-client`

7. Run the equivalent command with `--no-dev-client`.

Expected behavior: The APK uploaded from a local Android development build should be found on the next run, or the cache provider should fall back to an exact-fingerprint lookup without the dev-client filter.

Actual behavior: The upload succeeds and creates a finished EAS build, but the `--dev-client` lookup reports no builds available. The same fingerprint succeeds with `--no-dev-client`.

Investigation: The uploaded APK does not contain `assets/EXDevMenuApp.android.js`. EAS CLI uses that archive entry to classify APKs as development clients, so the local debug APK is recorded as a non-development-client build even though it was produced by `expo run:android`. The current cache provider always applies `--dev-client` for development workflows, making the uploaded build unreachable through the normal cache lookup.

No project URLs, signed upload URLs, fingerprints, local paths, credentials, or environment-variable output are included.

Contributor guide

Open the contributing guide

Research direction

Start at the local build cache provider flow invoked by expo run:android, tracing how the uploaded APK is classified and how the subsequent eas build:download lookup applies --dev-client. Reproduce with the documented steps and compare the development-client and exact-fingerprint paths; done means the uploaded APK is found on the next run or the lookup falls back without the dev-client filter.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, typescript
Domain
build-system, cli, mobile
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
74/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.