fix: pin the native Expo packages that arrive transitively

The app installed and then died at launch, before the splash screen, with dyld:

  Symbol not found: ExpoModulesCore.BaseModule.willDestroy()
  Referenced from: ExpoFileSystem.framework
  Expected in:     ExpoModulesCore.framework

expo-file-system was 57.0.4 here against 57.0.1 in the monorepo, with the same
expo-modules-core 57.0.7 underneath. The newer file-system calls a method that patch of
modules-core does not have.

The gap was in how this repo was pinned. Direct dependencies were fixed to versions the
monorepo proves; transitive ones were not, and expo-file-system arrives through expo, so
it resolved fresh to whatever was newest. Comparing both trees found six native packages
that had drifted this way — asset, dev-launcher, dev-menu, file-system,
modules-autolinking, server — now pinned through overrides to the monorepo's versions.

Same family as the expo-image-picker trap already written down in CLAUDE.md: a wrong
Expo version typechecks, installs, and fails much later in a way that looks like a
broken toolchain rather than a wrong dependency. Here it was worse than a build error —
it built, signed, installed, and crashed on a phone.

The crash log named it in one line. That file remains the fastest diagnostic available.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 00:07:36 +01:00
co-authored by Claude Opus 5
parent fe389c9752
commit de433794ac
2 changed files with 22 additions and 6 deletions
+8
View File
@@ -40,5 +40,13 @@
"babel-preset-expo": "57.0.4",
"tailwindcss": "3.4.19",
"typescript": "6.0.3"
},
"overrides": {
"expo-asset": "57.0.7",
"expo-dev-launcher": "57.0.9",
"expo-dev-menu": "57.0.9",
"expo-file-system": "57.0.1",
"expo-modules-autolinking": "57.0.9",
"expo-server": "57.0.1"
}
}