Skip to content

chore: fix expo-router not found at the root of app-sandbox - #949

Merged
aquelemiguel merged 1 commit into
mainfrom
fix-react-router-for-sandbox
Nov 2, 2026
Merged

aquelemiguel merged 1 commit into
mainfrom
fix-react-router-for-sandbox

Conversation

@aquelemiguel

Copy link
Copy Markdown
Contributor

Fixing a potential side-effect of #938 that prevents the sandbox app from compiling with error:

› Installing on iPhone 17 Pro
/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/utils/errors.js:130
    throw error;
    ^

Error: Cannot find module 'expo-router/_ctx-shared'
Require stack:
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/router-server/build/typed-routes/index.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/routes.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/startTypescriptTypeGeneration.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/metro/MetroBundlerDevServer.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/export/embed/exportEmbedAsync.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/export/embed/exportEager.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/run/ios/runIosAsync.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/run/ios/index.js
- /Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/bin/cli
- /Users/miguel/Documents/projects/lumen/node_modules/expo/bin/cli
    at Module._resolveFilename (node:internal/modules/cjs/loader:1603:15)
    at wrapResolveFilename (node:internal/modules/cjs/loader:1145:27)
    at defaultResolveImplForCJSLoading (node:internal/modules/cjs/loader:1169:10)
    at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1196:12)
    at Module._load (node:internal/modules/cjs/loader:1370:5)
    at wrapModuleLoad (node:internal/modules/cjs/loader:261:19)
    at Module.require (node:internal/modules/cjs/loader:1713:12)
    at require (node:internal/modules/helpers:318:16)
    at Object.<anonymous> (/Users/miguel/Documents/projects/lumen/node_modules/@expo/router-server/build/typed-routes/index.js:8:23)
    at Module._compile (node:internal/modules/cjs/loader:1968:14)
    at Object..js (node:internal/modules/cjs/loader:2108:10)
    at Module.load (node:internal/modules/cjs/loader:1690:32)
    at Module._load (node:internal/modules/cjs/loader:1480:12)
    at wrapModuleLoad (node:internal/modules/cjs/loader:261:19)
    at Module.require (node:internal/modules/cjs/loader:1713:12)
    at require (node:internal/modules/helpers:318:16)
    at typedRoutes (/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/routes.js:77:31)
    at setupTypedRoutes (/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/routes.js:69:12)
    at startTypescriptTypeGenerationAsync (/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/startTypescriptTypeGeneration.js:67:42) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/router-server/build/typed-routes/index.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/routes.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/type-generation/startTypescriptTypeGeneration.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/start/server/metro/MetroBundlerDevServer.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/export/embed/exportEmbedAsync.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/export/embed/exportEager.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/run/ios/runIosAsync.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/src/run/ios/index.js',
    '/Users/miguel/Documents/projects/lumen/node_modules/@expo/cli/build/bin/cli',
    '/Users/miguel/Documents/projects/lumen/node_modules/expo/bin/cli'
  ]
}

Context

On main, expo-router was only installed inside the sandbox app's own folder. Tools installed at the root, like expo and the Babel preset, look up expo-router from the root so they couldn't find it.

@aquelemiguel aquelemiguel self-assigned this Oct 30, 2026
@vercel

vercel Bot commented Oct 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ldls Ready Ready Preview Oct 30, 2026 6:47pm UTC
ldls-react-native Ready Ready Preview Oct 30, 2026 6:47pm UTC

Request Review

@aquelemiguel
aquelemiguel marked this pull request as ready for review October 30, 2026 18:48
Copilot AI balanced review requested due to automatic review settings October 30, 2026 18:48
@aquelemiguel
aquelemiguel requested a review from a team as a code owner October 30, 2026 18:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Hoisting introduces different root and sandbox react-native-screens versions, requiring a clean native sandbox build to verify consistent Metro resolution and Expo autolinking, which cannot be validated from this snapshot.

No open issues 🎉

What changed in this PR

Addresses the sandbox module-resolution failure reported after #938 by making expo-router available to root-installed Expo tooling.

Changes:

  • Adds expo-router ~57.0.29 to root development dependencies.
  • Updates the lockfile to place the router and related dependencies at the workspace root and remove stale entries.
File Description
package.json Declares expo-router at the workspace root.
package-lock.json Records the root-level router installation and resulting dependency layout changes.

Review effort: Balanced

@sonarqubecloud

Copy link
Copy Markdown

@aquelemiguel
aquelemiguel merged commit 2f28db0 into main Nov 2, 2026
24 checks passed
@aquelemiguel
aquelemiguel deleted the fix-react-router-for-sandbox branch November 2, 2026 14:58

This branch was successfully deployed

2 active deployments
Preview – ldls — d8c34bcc Deployed Oct 30, 2026 by vercel[bot]
Preview – ldls-react-native — d8c34bcc Deployed Oct 30, 2026 by vercel[bot]
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.

3 participants