EAS Build hangs at EAGER_BUNDLE 0% on expo-router/entry.js (7 consecutive iOS builds)
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 236
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 91
Description
### Build/Submit details page URL
### Summary
## Summary
iOS production builds hang silently at EAGER_BUNDLE phase, 0/1 progress on
`node_modules/expo-router/entry.js`, with no progress for 30+ minutes across
7 consecutive build attempts.
## Build IDs (all canceled or stuck)
- caa9e905-33af-41c5-b817-52a9b7d58d19 (latest, with expo-updates)
- 0ae7046b-37b5-43d8-8ad9-5d550bcb103c
- 8819edd7-73e9-48a8-b71d-da0f988c7b3d
- 1db282c4-f4ff-415b-a20c-4b305069622b
- 67a9906a-1a8f-4ebd-85cf-476940a39a0b
Project: `@mtelk/gpro-mobile` (id `9b866c55-7839-4ef1-9202-ec11c17666d3`)
## Environment
- EAS CLI: 18.11.0
- Expo SDK: 55.0.23
- Expo Router: ~55.0.14
- React Native: 0.85.3
- pnpm 9.15.0 monorepo with `node-linker=hoisted` in `.npmrc`
- Build profile: `production` with `m-medium` resourceClass
## What I tried
1. Added `node-addon-api` and `pnpm.neverBuiltDependencies=[sharp]` (resolved
earlier `INSTALL_DEPENDENCIES` failure related to sharp build-from-source).
2. Added `.npmrc` with `node-linker=hoisted` and `shamefully-hoist=true` to
flatten the node_modules layout (no more pnpm symlink farm).
3. Removed deprecated `newArchEnabled` and `android.edgeToEdgeEnabled` from
`app.json`. Removed `unstable_enableSymlinks` from `metro.config.js`.
4. `expo-doctor` reports 18/18 checks passing locally.
5. Installed `expo-updates ~55.0` and configured `runtimeVersion.policy=appVersion`
+ `updates.url`.
After every fix the build still hangs at the exact same point:
### Managed or bare?
Managed
### Environment
**`expo-env-info` output:**
```
expo-env-info 2.0.12 environment info:
System:
OS: macOS 15.x (Sequoia)
Shell: /bin/zsh
Binaries:
Node: 22.22.2
npm: 10.9.7
pnpm: 9.15.0
npmGlobalPackages:
eas-cli: 18.11.0
Expo Workflow: managed
```
**Build environment:** EAS Build cloud (macOS arm64 worker, m-medium resourceClass).
**Project package versions (apps/mobile/package.json):**
- expo: ~55.0.23
- expo-router: ~55.0.14
- expo-updates: ~55.0.0 (added in latest commit)
- react: 19.2.6
- react-native: 0.85.3
- nativewind: ^4.2.3
- react-native-css-interop: ^0.2.3
**Monorepo setup:**
- pnpm 9.15.0 workspaces
- Root `.npmrc` with `node-linker=hoisted` + `shamefully-hoist=true`
- 3 apps in monorepo: mobile (Expo), api (Hono CF Workers), admin (Next.js 16)
### Error output
There is no error message — the build hangs **silently** at the same point on every attempt. The last log line is:
```
EAGER_BUNDLE iOS node_modules/expo-router/entry.js ░░░░░░░░░░░░░░░░ 0.0% (0/1)
```
After this line, no further log output for 30+ minutes until I cancel the build. Metro never reports any error or completion.
### Reproducible demo or steps to reproduce from a blank project
I don't have a minimal blank-project reproduction yet — the issue only appears
on EAS Build cloud (local builds work). Steps that match our setup:
1. Create a pnpm monorepo with 3 workspaces (mobile / api / admin):
```
pnpm-workspace.yaml:
packages:
- apps/*
- packages/*
```
2. In `apps/mobile`, use:
- Expo SDK 55 + Expo Router 55
- React 19.2 + React Native 0.85
- Nativewind v4
- Clerk Expo
3. Add `.npmrc` at root with `node-linker=hoisted` + `shamefully-hoist=true`
4. Add `expo-updates ~55.0` and configure `runtimeVersion.policy=appVersion`
5. Run `eas build --platform ios --profile production`
Expected: build completes and produces an `.ipa`.
Actual: build hangs at `EAGER_BUNDLE` phase, 0% on `expo-router/entry.js`,
no error, no progress for 30+ minutes.
I'm happy to provide a private repo link to the Expo team via DM if needed.
The same issue reproduces 100% of the time across 7 consecutive builds with
different fixes applied between attempts.
Contributor guide
Assessment
This issue has not been assessed yet.