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>
53 lines
1.4 KiB
JSON
53 lines
1.4 KiB
JSON
{
|
|
"name": "offscale-mobile",
|
|
"version": "1.0.0",
|
|
"license": "MIT",
|
|
"private": true,
|
|
"workspaces": [
|
|
"modules/*"
|
|
],
|
|
"main": "src/index.tsx",
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"ios": "expo run:ios",
|
|
"android": "expo run:android",
|
|
"prebuild": "./scripts/gen-adaptive-icon.sh && expo prebuild",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@expo/vector-icons": "15.1.1",
|
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
"expo": "57.0.8",
|
|
"expo-clipboard": "57.0.1",
|
|
"expo-constants": "57.0.7",
|
|
"expo-dev-client": "57.0.9",
|
|
"expo-modules-core": "57.0.7",
|
|
"expo-status-bar": "57.0.1",
|
|
"expo-system-ui": "57.0.1",
|
|
"nativewind": "4.2.6",
|
|
"officer-net": "workspace:*",
|
|
"react": "19.2.3",
|
|
"react-native": "0.86.0",
|
|
"react-native-reanimated": "4.5.3",
|
|
"react-native-safe-area-context": "5.7.0",
|
|
"react-native-svg": "15.15.4",
|
|
"react-native-worklets": "0.11.3"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "7.29.7",
|
|
"@babel/plugin-transform-react-jsx": "7.29.7",
|
|
"@types/react": "19.2.17",
|
|
"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"
|
|
}
|
|
}
|