Files
offscale-mobile/package.json
T
pastilhasandClaude Opus 5 de433794ac 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>
2026-08-15 00:07:36 +01:00

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"
}
}