Loading workspace insights... Statistics interval
7 days30 daysLatest CI Pipeline Executions
fca9059c feat(expo): support Expo SDK 56 (#35904)
## Current Behavior
`@nx/expo` supports Expo SDK 53–55 (latest/default 55) after the recent
version-lane refactor. It does not yet support **SDK 56**.
Separately, the plugin's Metro and executor wiring predates Expo's SDK
55
`@expo/metro` repackaging, so generated **SDK 55+** apps fail at runtime
even
on the existing lanes:
- `expo start` / web bundling crashes with
`TypeError: Cannot read properties of undefined (reading
'transformFile')` -
`withNxMetro` merges via the standalone `metro-config` and forces
`projectRoot` to the workspace root, which collides with Expo's bundled
`@expo/metro` and breaks the babel transformer's `.babelrc.js`
resolution.
- `nx prebuild` / `start` executors throw `Cannot find module
'@expo/cli/build/bin/cli.js'` because SDK 55+ ships `@expo/cli` with an
`exports` map (`"./*": "./*.js"`), so the hardcoded bin subpath no
longer
resolves.
## Expected Behavior
Adds an Expo **SDK 56** install lane (RN 0.85.3, React 19.2, `@expo/cli`
~56.1.14, `@expo/metro-config` ~56.0.13, `jest-expo` ~56.0.4) as the
default
for new projects, on top of the existing 53–55 lanes, and fixes the SDK
55+
runtime wiring (benefits 55 and 56):
- `withNxMetro` and the Nx resolver prefer `@expo/metro/metro-config` /
`@expo/metro/metro-resolver` (fallback to the standalone packages for
53/54),
and no longer override `projectRoot` to the workspace root on SDK 55+.
- Executors resolve the Expo CLI via the stable `expo/bin/cli` entry
instead of
`@expo/cli/build/bin/cli`.
- New SDK 55+ apps no longer install standalone
`metro-config`/`metro-resolver`
or `@expo/metro-config` directly (the generated `metro.config.js`
extends
`expo/metro-config`); those packages are now optional peer dependencies.
- Adds an AI upgrade-instructions migration for moving workspaces to SDK
56.
Verified by generating a workspace from a locally-published build:
`expo start --web` bundles successfully and `expo-doctor`'s
"`@expo/metro-config` installed directly" check passes.
## Related Issue(s)
Fixes #35714
---------
Co-authored-by: jithin_vijayan <jithinvijayan@vyaparapp.in>
Co-authored-by: FrozenPandaz <jasonjean1993@gmail.com>