expo / eas-cli

Fastest way to build, submit, and update iOS and Android apps
https://docs.expo.dev/eas/
MIT License
735 stars 78 forks source link

Always generating different fingerprints for my builds, also not showing the fingerprint diff #2448

Open giorgiofellipe opened 3 weeks ago

giorgiofellipe commented 3 weeks ago

Build/Submit details page URL

No response

Summary

I have configured my Expo app to use fingerprint as runtime policy but I'm unable to use EAS Updates because it always generate the build with a different fingerprint Even running locally using eas-cli v10.1.0 it's generating new fingerprint every build. Also, I don't see the diff on logs (added on #2422).

Managed or bare?

Managed

Environment

expo-env-info 1.2.0 environment info: System: OS: macOS 13.5.1 Shell: 5.9 - /bin/zsh Binaries: Node: 22.2.0 - /opt/homebrew/bin/node Yarn: 1.22.19 - /usr/local/bin/yarn npm: 10.7.0 - /opt/homebrew/bin/npm Managers: CocoaPods: 1.15.2 - /opt/homebrew/bin/pod SDKs: iOS SDK: Platforms: DriverKit 23.2, iOS 17.2, macOS 14.2, tvOS 17.2, visionOS 1.0, watchOS 10.2 Android SDK: API Levels: 26, 29, 30, 31, 32, 33, 34 Build Tools: 29.0.2, 29.0.3, 30.0.2, 30.0.3, 31.0.0, 32.0.0, 33.0.0, 33.0.1, 33.0.2, 34.0.0 System Images: android-30 | Google APIs ARM 64 v8a, android-33 | Google APIs ARM 64 v8a, android-33 | Google Play ARM 64 v8a, android-34 | Google APIs ARM 64 v8a IDEs: Android Studio: 2022.3 AI-223.8836.35.2231.10671973 Xcode: 15.2/15C500b - /usr/bin/xcodebuild npmPackages: expo: ~51.0.18 => 51.0.18 expo-router: ~3.5.17 => 3.5.17 react: 18.2.0 => 18.2.0 react-dom: 18.2.0 => 18.2.0 react-native: 0.74.3 => 0.74.3 react-native-web: ~0.19.10 => 0.19.12 npmGlobalPackages: eas-cli: 10.1.0 Expo Workflow: managed

✔ Check Expo config for common issues ✔ Check package.json for common issues ✔ Check native tooling versions ✔ Check dependencies for packages that should not be installed directly ✔ Check for common project setup issues ✔ Check for issues with metro config ✔ Check npm/ yarn versions ✔ Check Expo config (app.json/ app.config.js) schema ✔ Check for legacy global CLI installed locally ✔ Check that native modules do not use incompatible support packages ✔ Check that packages match versions required by installed Expo SDK ✔ Check that native modules use compatible support package versions for installed Expo SDK

Didn't find any issues with the project!

Error output

[CONFIGURE_EXPO_UPDATES] Runtime version from the app config evaluated on your local machine (5b9cea733cdb7a2a2a4e25163b2b6f0a8b15923b) does not match the one resolved here (047be799fde8148e8f809697fd6200c3112a2c1f). [CONFIGURE_EXPO_UPDATES] If you're using conditional app configs, e.g. depending on an environment variable, make sure to set the variable in eas.json or configure it with EAS Secret.

Reproducible demo or steps to reproduce from a blank project

https://github.com/giorgiofellipe/fingerprint-issue-reproducible

Run eas build --profile simulator --platform ios --non-interactive --local and you'll always see the message [CONFIGURE_EXPO_UPDATES] Runtime version from the app config evaluated on your local machine (X) does not match the one resolved here (Y)., where Y is different on every run.

szdziedzic commented 3 weeks ago

Also, I don't see the diff on logs (added on https://github.com/expo/eas-cli/pull/2422).

It seems to be a mistake on our end because the local build plugin wasn't bumped when releasing https://github.com/expo/eas-cli/pull/2422 so diffs weren't shown for local builds in 10.1.0. I bumped it and just released 10.1.1 so it should be fixed in this version.

Let's see if diff logs can help here.

giorgiofellipe commented 3 weeks ago

@szdziedzic Ok, now I see it generating a consistent hash on every run.

But I still see a mismatch, here is the diff:

[CONFIGURE_EXPO_UPDATES] Runtime version mismatch
[CONFIGURE_EXPO_UPDATES] Runtime version on your local machine: 441454b361d9ac0cae405a637d0f26bb320b18a5
[CONFIGURE_EXPO_UPDATES] Runtime version calculated on EAS: 8ab52d3a46a5b23560e594ed3fca27053a51c1c8
[CONFIGURE_EXPO_UPDATES] Difference between local and EAS fingerprints:
[CONFIGURE_EXPO_UPDATES] [
 {
  "op": "added",
  "source": {
   "type": "dir",
   "filePath": "ios",
   "reasons": [
    "bareNativeDir"
   ],
   "hash": null
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "contents",
   "id": "packageJson:scripts",
   "contents": {
    "start": "expo start",
    "reset-project": "node ./scripts/reset-project.js",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web",
    "test": "jest --watchAll",
    "lint": "expo lint"
   },
   "reasons": [
    "packageJson:scripts"
   ],
   "hash": "b7dc37dfd93bfd47ef5d827587ed32f8fa796932"
  }
 }
]

P.S.: I can confirm after replacing my scripts by the content above it has been fixed on the demo repository. Should scripts section of package.json be ignored by fingerprint?

giorgiofellipe commented 3 weeks ago

However, I still see a lot of diffs on my main project (which is in a Turbo monorepo and using pnpm).

[CONFIGURE_EXPO_UPDATES] Runtime version mismatch
[CONFIGURE_EXPO_UPDATES] Runtime version on your local machine: 92f73ae9ab9a4ae9cffb56bdb9d9d6cf6eb3418a
[CONFIGURE_EXPO_UPDATES] Runtime version calculated on EAS: 1bfe1f3b4df2a2900baa63dab0e8ae9059772f2c
[CONFIGURE_EXPO_UPDATES] Difference between local and EAS fingerprints:
[CONFIGURE_EXPO_UPDATES] [
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "../../node_modules/.pnpm/expo-dev-launcher@4.0.20_expo@51.0.13/node_modules/expo-dev-launcher",
   "reasons": [
    "expoAutolinkingIos",
    "expoConfigPlugins",
    "expoConfigPlugins"
   ],
   "hash": "30e6bef6aca813b3ac79facfc31c0e9ee8d80149"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "../../node_modules/.pnpm/expo-dev-menu@5.0.15_expo@51.0.13/node_modules/expo-dev-menu",
   "reasons": [
    "expoAutolinkingIos",
    "expoConfigPlugins",
    "expoConfigPlugins"
   ],
   "hash": "0bb6fe06a492af6752d95e4f7237a06ca7845c38"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "../../node_modules/.pnpm/expo@51.0.13_@babel+core@7.24.7/node_modules/expo",
   "reasons": [
    "expoAutolinkingIos",
    "expoConfigPlugins",
    "expoConfigPlugins"
   ],
   "hash": "9e0d4587c887ca968fd8db1a3331483727f9a71e"
  }
 },
 {
  "op": "added",
  "source": {
   "type": "dir",
   "filePath": "ios",
   "reasons": [
    "bareNativeDir"
   ],
   "hash": null
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/@react-native-async-storage/async-storage",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "b81e26351885b69d10a2d03be3b9fbdb8a4a8802"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/@sentry/react-native",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "b1a175225d96faf64eeb4f78e94e484e60a0db91"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/expo",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "1eb3236b60458f87f899103a25c6e3bb7183487a"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-clarity",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "5f629126158efc21c662cb36de265c6735ef7c06"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-gesture-handler",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "7bde148b0c39f40f11e71b347d8bec798e9151da"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-reanimated",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "053298906628de8e99408874d493894e4b6782c8"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-safe-area-context",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "dc9e723fea6fd25207fe4bb2c03b235ed0eba37a"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-screens",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "be06c525ee1f1c57216f2f63bf491a71b2792b4f"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-svg",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "deec6c89a6749857351383ad8f93956ecd33e216"
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "dir",
   "filePath": "node_modules/react-native-webview",
   "reasons": [
    "bareRncliAutolinking"
   ],
   "hash": "12e0e344f6e466321e025e23df0a9cf3387cdf37"
  }
 }
]
kadikraman commented 3 weeks ago

@szdziedzic Ok, now I see it generating a consistent hash on every run.

But I still see a mismatch, here is the diff:

[CONFIGURE_EXPO_UPDATES] Runtime version mismatch
[CONFIGURE_EXPO_UPDATES] Runtime version on your local machine: 441454b361d9ac0cae405a637d0f26bb320b18a5
[CONFIGURE_EXPO_UPDATES] Runtime version calculated on EAS: 8ab52d3a46a5b23560e594ed3fca27053a51c1c8
[CONFIGURE_EXPO_UPDATES] Difference between local and EAS fingerprints:
[CONFIGURE_EXPO_UPDATES] [
 {
  "op": "added",
  "source": {
   "type": "dir",
   "filePath": "ios",
   "reasons": [
    "bareNativeDir"
   ],
   "hash": null
  }
 },
 {
  "op": "changed",
  "source": {
   "type": "contents",
   "id": "packageJson:scripts",
   "contents": {
    "start": "expo start",
    "reset-project": "node ./scripts/reset-project.js",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web",
    "test": "jest --watchAll",
    "lint": "expo lint"
   },
   "reasons": [
    "packageJson:scripts"
   ],
   "hash": "b7dc37dfd93bfd47ef5d827587ed32f8fa796932"
  }
 }
]

P.S.: I can confirm after replacing my scripts by the content above it has been fixed on the demo repository. Should scripts section of package.json be ignored by fingerprint?

@giorgiofellipe there should have been a fix for this recently, publihsed in expo-fingerprint@0.10.0 - could you try upgrading to 0.10.0 if you're on a lower version currently?

giorgiofellipe commented 3 weeks ago

@kadikraman I'm using this very version actually. "@expo/fingerprint": "^0.10.0",

Kudo commented 2 weeks ago

https://github.com/expo/expo/pull/30344 should fix the issue of the demo repo. for turborepo and pnpm, it looks like a different issue. would you mind to share a repro for turborepo/pnpm setup?

giorgiofellipe commented 2 weeks ago

@Kudo

Repository: https://github.com/giorgiofellipe/monorepo-expo-issue

Expo env info:

  expo-env-info 1.2.0 environment info:
    System:
      OS: macOS 13.5.1
      Shell: 5.9 - /bin/zsh
    Binaries:
      Node: 22.2.0 - /opt/homebrew/bin/node
      Yarn: 1.22.19 - /usr/local/bin/yarn
      npm: 10.7.0 - /opt/homebrew/bin/npm
    Managers:
      CocoaPods: 1.15.2 - /opt/homebrew/bin/pod
    SDKs:
      iOS SDK:
        Platforms: DriverKit 23.2, iOS 17.2, macOS 14.2, tvOS 17.2, visionOS 1.0, watchOS 10.2
      Android SDK:
        API Levels: 26, 29, 30, 31, 32, 33, 34
        Build Tools: 29.0.2, 29.0.3, 30.0.2, 30.0.3, 31.0.0, 32.0.0, 33.0.0, 33.0.1, 33.0.2, 34.0.0
        System Images: android-30 | Google APIs ARM 64 v8a, android-33 | Google APIs ARM 64 v8a, android-33 | Google Play ARM 64 v8a, android-34 | Google APIs ARM 64 v8a
    IDEs:
      Android Studio: 2022.3 AI-223.8836.35.2231.10671973
      Xcode: 15.2/15C500b - /usr/bin/xcodebuild
    npmGlobalPackages:
      eas-cli: 10.1.1
    Expo Workflow: managed

A curious thing is that when I run pnpm dlx expo-doctor it says it is everything alright, when I run eas build I have this:

[RUN_EXPO_DOCTOR] Running 12 checks on your project...
[RUN_EXPO_DOCTOR] ✔ Check Expo config for common issues
[RUN_EXPO_DOCTOR] ✔ Check package.json for common issues
[RUN_EXPO_DOCTOR] ✔ Check native tooling versions
[RUN_EXPO_DOCTOR] ✔ Check dependencies for packages that should not be installed directly
[RUN_EXPO_DOCTOR] ✔ Check for common project setup issues
[RUN_EXPO_DOCTOR] ✖ Check for issues with metro config
[RUN_EXPO_DOCTOR] Unexpected error while running 'Check for issues with metro config' check:
[RUN_EXPO_DOCTOR] Error: The required package `expo-asset` cannot be found
[RUN_EXPO_DOCTOR] ✔ Check npm/ yarn versions
[RUN_EXPO_DOCTOR] ✔ Check that packages match versions required by installed Expo SDK
[RUN_EXPO_DOCTOR] ✔ Check Expo config (app.json/ app.config.js) schema
[RUN_EXPO_DOCTOR] ✔ Check for legacy global CLI installed locally
[RUN_EXPO_DOCTOR] ✔ Check that native modules do not use incompatible support packages
[RUN_EXPO_DOCTOR] ✔ Check that native modules use compatible support package versions for installed Expo SDK
[RUN_EXPO_DOCTOR] One or more checks failed, indicating possible issues with the project.
And this is the fingerprint diff ``` [CALCULATE_EXPO_UPDATES_RUNTIME_VERSION] Resolved runtime version: 89785d9baef3baf7e2992d98dea9c1f2092f75a1 [CONFIGURE_EXPO_UPDATES] Runtime version mismatch [CONFIGURE_EXPO_UPDATES] Runtime version on your local machine: 539a830cd2fd35c3238d0e5dd4a87430454c3a65 [CONFIGURE_EXPO_UPDATES] Runtime version calculated on EAS: 89785d9baef3baf7e2992d98dea9c1f2092f75a1 [CONFIGURE_EXPO_UPDATES] Difference between local and EAS fingerprints: [CONFIGURE_EXPO_UPDATES] [ { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-asset@10.0.10_expo@51.0.20/node_modules/expo-asset/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "756f394829fb8b0ff75a20763a8e9a5da2ffea2f" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-constants@16.0.2_expo@51.0.20/node_modules/expo-constants/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "6a3a95934e22c4676f2ee007ef0aacdd073eb9b3" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-dev-launcher@4.0.22_expo@51.0.20/node_modules/expo-dev-launcher", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "0362c4cd189e0814706db4ca3cddd307e885b209" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-dev-menu-interface@1.8.3_expo@51.0.20/node_modules/expo-dev-menu-interface/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "b9e6adf27b5128bf03d6b76cddc8c2e6019433fd" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-dev-menu@5.0.16_expo@51.0.20/node_modules/expo-dev-menu", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "720ec94bf63ebbaca94f9cc730ec9789aa54ad0c" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-eas-client@0.12.0/node_modules/expo-eas-client/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "40f2e516a90a50f78be533b62287b5f4e8171cd8" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-file-system@17.0.1_expo@51.0.20/node_modules/expo-file-system/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "57d7a12111679e3317a5fae30b05c4c944844bb1" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-json-utils@0.13.1/node_modules/expo-json-utils/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "f0b3859dfa92f76b4ae856f101c31176b8d5a60f" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-keep-awake@13.0.2_expo@51.0.20/node_modules/expo-keep-awake/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "a2ebf063e0c9c1ee564ad214f67fd62075e12db8" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-manifests@0.14.3_expo@51.0.20/node_modules/expo-manifests/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "268130aa4e9a98a3822bc02cc538d58528c96c3a" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-modules-core@1.12.19/node_modules/expo-modules-core", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "a282a678949ebbdf5e468c84cf61329ade861917" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-structured-headers@3.8.0/node_modules/expo-structured-headers/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "ba9c7b83f2bced7130ddf3e3a3f72b529b6d149c" } }, { "op": "added", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo-updates-interface@0.16.2_expo@51.0.20/node_modules/expo-updates-interface/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "3818ad0f53c0bee17d0d076722524f19ff314b7e" } }, { "op": "changed", "source": { "type": "dir", "filePath": "../../node_modules/.pnpm/expo@51.0.20_@babel+core@7.24.9_@babel+preset-env@7.24.8/node_modules/expo", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "f9fd716d00b4f22fee1eebe901af5df1070dc415" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-asset/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "dd569c2f6c1e14b28de02e124eea8cace877c82e" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-constants/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "514c13c5d34eb2e18b41d4b82337e230cdd56072" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-dev-launcher", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "6bb800509c89a7f6c5313b2dadc217adcd4dc8eb" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-dev-menu", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "c6be7c52734d3b5045781b9733cb88665c9340de" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-dev-menu-interface/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "824a10886530987de4c15fa1e0bdd4cc75809200" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-eas-client/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "beed20fc5e294606972857255223a06f04c91a02" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-file-system/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "583e5ac8ff0530ae7d33b8ad3ac6ba330e586fd0" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-json-utils/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "578480051f6e3b527d3cbc588664eba41af9286b" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-keep-awake/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "4a5c6b566c8e1c151ddd36e0d7a18f875d13a32a" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-manifests/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "c22abf659f6eb5bb783d93a885004eba3f78499c" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-modules-core", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "4a0fefff2be55ec5ae093c6646cf5797103ea8fe" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-structured-headers/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "007cc3f76762e0890e4c79584ef1ac3b39a8d4a1" } }, { "op": "removed", "source": { "type": "dir", "filePath": "../../node_modules/expo-updates-interface/ios", "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "6ef018455e39bc5eadcf6834c034e90f4fc87887" } }, { "op": "added", "source": { "type": "dir", "filePath": "ios", "reasons": [ "bareNativeDir" ], "hash": null } }, { "op": "changed", "source": { "type": "dir", "filePath": "node_modules/@sentry/react-native", "reasons": [ "bareRncliAutolinking" ], "hash": "99bb51630ed694eeccef9dbe8600bc5c9f439542" } }, { "op": "changed", "source": { "type": "dir", "filePath": "node_modules/expo", "reasons": [ "bareRncliAutolinking" ], "hash": "d0454eee12f4daa1c593975fa9cf1ad56a159bcf" } }, { "op": "changed", "source": { "type": "dir", "filePath": "node_modules/react-native-reanimated", "reasons": [ "bareRncliAutolinking" ], "hash": "9fe1dda60814df50304568ef4aee9dd38c421967" } }, { "op": "changed", "source": { "type": "dir", "filePath": "node_modules/react-native-safe-area-context", "reasons": [ "bareRncliAutolinking" ], "hash": "35781c2236b445468f34d39b3b4e08710e4c5711" } }, { "op": "changed", "source": { "type": "dir", "filePath": "node_modules/react-native-screens", "reasons": [ "bareRncliAutolinking" ], "hash": "624c93e0feaad82e8bb975b3a545b8f7eaa748a1" } }, { "op": "changed", "source": { "type": "contents", "id": "expoAutolinkingConfig:ios", "contents": { "extraDependencies": [], "modules": [ { "packageName": "expo", "packageVersion": "51.0.20", "pods": [ { "podName": "Expo", "podspecDir": "../../node_modules/.pnpm/expo@51.0.20_@babel+core@7.24.9_@babel+preset-env@7.24.8/node_modules/expo" } ], "swiftModuleNames": [ "Expo" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-asset", "packageVersion": "10.0.10", "pods": [ { "podName": "ExpoAsset", "podspecDir": "../../node_modules/.pnpm/expo-asset@10.0.10_expo@51.0.20/node_modules/expo-asset/ios" } ], "swiftModuleNames": [ "ExpoAsset" ], "modules": [ "AssetModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-constants", "packageVersion": "16.0.2", "pods": [ { "podName": "EXConstants", "podspecDir": "../../node_modules/.pnpm/expo-constants@16.0.2_expo@51.0.20/node_modules/expo-constants/ios" } ], "swiftModuleNames": [ "EXConstants" ], "modules": [ "ConstantsModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-dev-client", "packageVersion": "4.0.20", "pods": [ { "podName": "expo-dev-client", "podspecDir": "../../node_modules/.pnpm/expo-dev-client@4.0.20_expo@51.0.20/node_modules/expo-dev-client/ios" } ], "swiftModuleNames": [ "expo_dev_client" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-dev-launcher", "packageVersion": "4.0.22", "pods": [ { "podName": "expo-dev-launcher", "podspecDir": "../../node_modules/.pnpm/expo-dev-launcher@4.0.22_expo@51.0.20/node_modules/expo-dev-launcher" } ], "swiftModuleNames": [ "EXDevLauncher" ], "modules": [ "DevLauncherInternal", "DevLauncherAuth", "RNCSafeAreaProviderManager" ], "appDelegateSubscribers": [ "ExpoDevLauncherAppDelegateSubscriber" ], "reactDelegateHandlers": [ "ExpoDevLauncherReactDelegateHandler" ], "debugOnly": true }, { "packageName": "expo-dev-menu", "packageVersion": "5.0.16", "pods": [ { "podName": "expo-dev-menu", "podspecDir": "../../node_modules/.pnpm/expo-dev-menu@5.0.16_expo@51.0.20/node_modules/expo-dev-menu" } ], "swiftModuleNames": [ "EXDevMenu" ], "modules": [ "DevMenuModule", "DevMenuInternalModule", "DevMenuPreferences", "RNCSafeAreaProviderManager" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [ "ExpoDevMenuReactDelegateHandler" ], "debugOnly": true }, { "packageName": "expo-dev-menu-interface", "packageVersion": "1.8.3", "pods": [ { "podName": "expo-dev-menu-interface", "podspecDir": "../../node_modules/.pnpm/expo-dev-menu-interface@1.8.3_expo@51.0.20/node_modules/expo-dev-menu-interface/ios" } ], "swiftModuleNames": [ "expo_dev_menu_interface" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-eas-client", "packageVersion": "0.12.0", "pods": [ { "podName": "EASClient", "podspecDir": "../../node_modules/.pnpm/expo-eas-client@0.12.0/node_modules/expo-eas-client/ios" } ], "swiftModuleNames": [ "EASClient" ], "modules": [ "EASClientModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-file-system", "packageVersion": "17.0.1", "pods": [ { "podName": "ExpoFileSystem", "podspecDir": "../../node_modules/.pnpm/expo-file-system@17.0.1_expo@51.0.20/node_modules/expo-file-system/ios" } ], "swiftModuleNames": [ "ExpoFileSystem" ], "modules": [ "FileSystemModule" ], "appDelegateSubscribers": [ "FileSystemBackgroundSessionHandler" ], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-font", "packageVersion": "12.0.8", "pods": [ { "podName": "ExpoFont", "podspecDir": "../../node_modules/.pnpm/expo-font@12.0.8_expo@51.0.20/node_modules/expo-font/ios" } ], "swiftModuleNames": [ "ExpoFont" ], "modules": [ "FontLoaderModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-json-utils", "packageVersion": "0.13.1", "pods": [ { "podName": "EXJSONUtils", "podspecDir": "../../node_modules/.pnpm/expo-json-utils@0.13.1/node_modules/expo-json-utils/ios" } ], "swiftModuleNames": [ "EXJSONUtils" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-keep-awake", "packageVersion": "13.0.2", "pods": [ { "podName": "ExpoKeepAwake", "podspecDir": "../../node_modules/.pnpm/expo-keep-awake@13.0.2_expo@51.0.20/node_modules/expo-keep-awake/ios" } ], "swiftModuleNames": [ "ExpoKeepAwake" ], "modules": [ "KeepAwakeModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-manifests", "packageVersion": "0.14.3", "pods": [ { "podName": "EXManifests", "podspecDir": "../../node_modules/.pnpm/expo-manifests@0.14.3_expo@51.0.20/node_modules/expo-manifests/ios" } ], "swiftModuleNames": [ "EXManifests" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-modules-core", "packageVersion": "1.12.19", "pods": [ { "podName": "ExpoModulesCore", "podspecDir": "../../node_modules/.pnpm/expo-modules-core@1.12.19/node_modules/expo-modules-core" } ], "swiftModuleNames": [ "ExpoModulesCore" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-router", "packageVersion": "3.5.18", "pods": [ { "podName": "ExpoHead", "podspecDir": "../../node_modules/.pnpm/expo-router@3.5.18_expo-constants@16.0.2_expo-linking@6.3.1_expo-modules-autolinking@1.11.1_e_mfar2myqyigv4jprqrmzo7ewna/node_modules/expo-router/ios" } ], "swiftModuleNames": [ "ExpoHead" ], "modules": [ "ExpoHeadModule" ], "appDelegateSubscribers": [ "ExpoHeadAppDelegateSubscriber" ], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-splash-screen", "packageVersion": "0.27.5", "pods": [ { "podName": "EXSplashScreen", "podspecDir": "../../node_modules/.pnpm/expo-splash-screen@0.27.5_expo-modules-autolinking@1.11.1_expo@51.0.20/node_modules/expo-splash-screen/ios" } ], "swiftModuleNames": [ "EXSplashScreen" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-structured-headers", "packageVersion": "3.8.0", "pods": [ { "podName": "EXStructuredHeaders", "podspecDir": "../../node_modules/.pnpm/expo-structured-headers@3.8.0/node_modules/expo-structured-headers/ios" } ], "swiftModuleNames": [ "EXStructuredHeaders" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-system-ui", "packageVersion": "3.0.7", "pods": [ { "podName": "ExpoSystemUI", "podspecDir": "../../node_modules/.pnpm/expo-system-ui@3.0.7_expo@51.0.20/node_modules/expo-system-ui/ios" } ], "swiftModuleNames": [ "ExpoSystemUI" ], "modules": [ "ExpoSystemUIModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-updates", "packageVersion": "0.25.19", "pods": [ { "podName": "EXUpdates", "podspecDir": "../../node_modules/.pnpm/expo-updates@0.25.19_expo@51.0.20/node_modules/expo-updates/ios" } ], "swiftModuleNames": [ "EXUpdates" ], "modules": [ "UpdatesModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [ "ExpoUpdatesReactDelegateHandler" ], "debugOnly": false }, { "packageName": "expo-updates-interface", "packageVersion": "0.16.2", "pods": [ { "podName": "EXUpdatesInterface", "podspecDir": "../../node_modules/.pnpm/expo-updates-interface@0.16.2_expo@51.0.20/node_modules/expo-updates-interface/ios" } ], "swiftModuleNames": [ "EXUpdatesInterface" ], "modules": [], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false }, { "packageName": "expo-web-browser", "packageVersion": "13.0.3", "pods": [ { "podName": "ExpoWebBrowser", "podspecDir": "../../node_modules/.pnpm/expo-web-browser@13.0.3_expo@51.0.20/node_modules/expo-web-browser/ios" } ], "swiftModuleNames": [ "ExpoWebBrowser" ], "modules": [ "WebBrowserModule" ], "appDelegateSubscribers": [], "reactDelegateHandlers": [], "debugOnly": false } ] }, "reasons": [ "expoAutolinkingIos", "expoConfigPlugins", "expoConfigPlugins" ], "hash": "b82b14429d37ff39df01691be12502bccf44101d" } }, { "op": "changed", "source": { "type": "contents", "id": "packageJson:scripts", "contents": { "start": "expo start", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", "test": "jest --watchAll" }, "reasons": [ "packageJson:scripts" ], "hash": "e854bcb273ca3a564954d7538cdc380bf3d7ddfb" } } ] ```