Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mono-Repo EAS CLI Fingerprint differes from EAS Build #2774

Closed
Wolfleader101 opened this issue Dec 17, 2024 · 10 comments
Closed

Mono-Repo EAS CLI Fingerprint differes from EAS Build #2774

Wolfleader101 opened this issue Dec 17, 2024 · 10 comments
Assignees
Labels
eas build fingerprint needs review Issue is ready to be reviewed by a maintainer

Comments

@Wolfleader101
Copy link

Build/Submit details page URL

https://expo.dev/accounts/pot-pirate/projects/pot-pirate/builds/03176dd7-5f31-472d-8423-50864f0fbccb

Summary

The EAS CLI is generating a different fingerprint to the one being generated on EAS servers when using Expo 52 and using a pnpm and turbo mono repo.

Managed or bare?

managed

Environment

  expo-env-info 1.2.1 environment info:
    System:
      OS: Windows 11 10.0.22631
    Binaries:
      Node: 20.11.1 - C:\Program Files\nodejs\node.EXE
      Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD
      npm: 10.2.4 - C:\Program Files\nodejs\npm.CMD
    IDEs:
      Android Studio: AI-221.6008.13.2211.9477386
    Expo Workflow: managed
WARNING: We recommend using PowerShell or Bash via WSL 2 for development with Expo CLI on Windows. You may encounter issues using cmd.exe.

Enabled experimental React Native Directory checks. Unset the EXPO_DOCTOR_ENABLE_DIRECTORY_CHECK environment variable to disable this check.
✔ Check package.json for common issues
✔ Check Expo config for common issues
✔ Check native tooling versions
✔ Check if the project meets version requirements for submission to app stores
✔ Check for common project setup issues
✔ Check dependencies for packages that should not be installed directly
✔ Check for app config fields that may not be synced in a non-CNG project
✔ Check for issues with Metro config
✔ Check npm/ yarn versions
✖ Validate packages against React Native Directory package metadata
✔ Check for legacy global CLI installed locally
✔ Check Expo config (app.json/ app.config.js) schema
✔ 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

Detailed check results:

The following issues were found when validating your dependencies against React Native Directory:
Unsupported on New Architecture: react-native-maps
Unmaintained: react-native-image-viewing, react-native-modal
No metadata available: @react-native-community/masked-view, @trpc/client, @trpc/react-query, @trpc/server, jotai, js-base64, mobx, mobx-react-lite, react-native-wifi-reborn
Advice:
- Use libraries that are actively maintained and support the New Architecture. Find alternative libraries with https://reactnative.directory.
- Add packages to expo.doctor.reactNativeDirectoryCheck.exclude in package.json to selectively skip validations, if the warning is not relevant.
- Update React Native Directory to include metadata for unknown packages. Alternatively, set expo.doctor.reactNativeDirectoryCheck.listUnknownPackages in package.json to false to skip warnings about packages with no metadata, if the warning is not relevant.

The following packages should be updated for best compatibility with the installed expo version:
  [email protected] - expected version: ~52.0.19
  [email protected] - expected version: ~18.0.6
  [email protected] - expected version: ~4.0.13
  @react-navigation/bottom-tabs@^7.2.0 - expected version: ^7.0.0
  @react-navigation/native@^7.0.14 - expected version: ^7.0.0
  @react-navigation/native-stack@^7.2.0 - expected version: ^7.0.0
Your project may not work correctly until you install the expected versions of the packages.
Found outdated dependencies
Advice: Use 'npx expo install --check' to review and upgrade your dependencies.

One or more checks failed, indicating possible issues with the project.

Error output

No response

Reproducible demo or steps to reproduce from a blank project

I believe this is an issue with pnpm and turbo repo, I have never had this issue until upgrading to expo 52.

@Wolfleader101 Wolfleader101 added the needs review Issue is ready to be reviewed by a maintainer label Dec 17, 2024
@Kudo
Copy link
Contributor

Kudo commented Dec 21, 2024

hi there! it looks like the build was submitted from a windows host. we had some unstable fingerprint issues and resolved from @expo/[email protected] (included by [email protected]). hope that would help for your issue. thanks!

@Wolfleader101
Copy link
Author

Wolfleader101 commented Dec 21, 2024

Hi @Kudo

It is still an issue with the latest version of expo (52.0.21)
https://expo.dev/accounts/pot-pirate/projects/pot-pirate/builds/3b5b1835-8c63-4f00-92d4-90da6aadf27e

@Kudo
Copy link
Contributor

Kudo commented Dec 21, 2024

that's interesting! react-native should not be autolinked supposedly

 {
  "op": "changed",
  "beforeSource": {
   "type": "dir",
   "filePath": "../../node_modules/react-native",
   "reasons": [
    "rncoreAutolinkingIos"
   ],
   "hash": "3bd244b53975f574bacbbdbd5ef020825a42de20"
  },
  "afterSource": {
   "type": "dir",
   "filePath": "../../node_modules/react-native",
   "reasons": [
    "rncoreAutolinkingIos"
   ],
   "hash": "d940320351bd9d429eba9df21c7ee8238bcf6775"
  }
 },

could you try share your output from npx expo-modules-autolinking react-native-config --platform ios? could just run it locally without submitting an eas build

@Wolfleader101
Copy link
Author

could you try share your output from npx expo-modules-autolinking react-native-config --platform ios? could just run it locally without submitting an eas build

Hmmm yea ok, I thought something was odd with that auto linking!

Here is the output when run locally

{
  root: 'my-app\\apps\\expo',
  reactNativePath: 'my-app\\node_modules\\react-native',
  dependencies: {
    '@react-native-async-storage/async-storage': {
      root: 'my-app\\node_modules\\@react-native-async-storage\\async-storage',
      name: '@react-native-async-storage/async-storage',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\@react-native-async-storage\\async-storage\\RNCAsyncStorage.podspec',
          version: '1.23.1',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    '@react-native-community/masked-view': {
      root: 'my-app\\node_modules\\@react-native-community\\masked-view',
      name: '@react-native-community/masked-view',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\@react-native-community\\masked-view\\RNCMaskedView.podspec',
          version: '0.1.11',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    '@shopify/flash-list': {
      root: 'my-app\\node_modules\\@shopify\\flash-list',
      name: '@shopify/flash-list',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\@shopify\\flash-list\\RNFlashList.podspec',
          version: '1.7.1',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    expo: {
      root: 'my-app\\node_modules\\expo',
      name: 'expo',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\expo\\Expo.podspec',
          version: '52.0.21',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native': {
      root: 'my-app\\node_modules\\react-native',
      name: 'react-native',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native\\React-Core.podspec',
          version: '0.76.5',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-ble-plx': {
      root: 'my-app\\node_modules\\react-native-ble-plx',
      name: 'react-native-ble-plx',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-ble-plx\\react-native-ble-plx.podspec',
          version: '3.2.1',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-gesture-handler': {
      root: 'my-app\\node_modules\\react-native-gesture-handler',
      name: 'react-native-gesture-handler',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-gesture-handler\\RNGestureHandler.podspec',
          version: '2.20.2',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-maps': {
      root: 'my-app\\node_modules\\react-native-maps',
      name: 'react-native-maps',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-maps\\react-native-maps.podspec',
          version: '1.18.0',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-reanimated': {
      root: 'my-app\\node_modules\\react-native-reanimated',
      name: 'react-native-reanimated',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-reanimated\\RNReanimated.podspec',
          version: '3.16.6',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-safe-area-context': {
      root: 'my-app\\node_modules\\react-native-safe-area-context',
      name: 'react-native-safe-area-context',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-safe-area-context\\react-native-safe-area-context.podspec',
          version: '4.12.0',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-screens': {
      root: 'my-app\\node_modules\\react-native-screens',
      name: 'react-native-screens',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-screens\\RNScreens.podspec',
          version: '4.1.0',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-svg': {
      root: 'my-app\\node_modules\\react-native-svg',
      name: 'react-native-svg',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-svg\\RNSVG.podspec',
          version: '15.8.0',
          configurations: [],
          scriptPhases: []
        }
      }
    },
    'react-native-wifi-reborn': {
      root: 'my-app\\node_modules\\react-native-wifi-reborn',
      name: 'react-native-wifi-reborn',
      platforms: {
        ios: {
          podspecPath: 'my-app\\node_modules\\react-native-wifi-reborn\\RNWifi.podspec',
          version: '4.13.0',
          configurations: [],
          scriptPhases: []
        }
      }
    }
  },
  project: {
    ios: {
      sourceDir: 'my-app\\apps\\expo\\ios'
    }
  }
}

@Wolfleader101
Copy link
Author

@Kudo could it be an issue with turbopack or pnpm?

@Kudo
Copy link
Contributor

Kudo commented Dec 23, 2024

very strange. the react-native package should be excluded here.

it could be turbopack/pnpm as you mentioned. i suspect that you may multiple expo-modules-autolinking versions installed and npx expo-modules-autolinking executed from older version.
could you help to double check that?

in the meantime, i would create a pr to try to use correct expo-modules-autolinking path here. hopes that would help anyway

@Wolfleader101
Copy link
Author

Wolfleader101 commented Dec 24, 2024

very strange. the react-native package should be excluded here.

it could be turbopack/pnpm as you mentioned. i suspect that you may multiple expo-modules-autolinking versions installed and npx expo-modules-autolinking executed from older version. could you help to double check that?

in the meantime, i would create a pr to try to use correct expo-modules-autolinking path here. hopes that would help anyway

Interesting enough it seems it might be an issue with an external package.
Running npm list expo-modules-autolinking gave me the following

├── [email protected] extraneous
├─┬ [email protected] extraneous
│ └── [email protected] extraneous
└─┬ [email protected] extraneous
  ├─┬ @expo/[email protected] extraneous
  │ └── [email protected] deduped
  └─┬ [email protected] extraneous
    └── [email protected] deduped

It is because of react-native-ble-plx by the looks. I will investigate their repo and create a PR

It seems an overrides might be in order - I'll look into creating a PR to use the correct expo version too.

@Kudo
Copy link
Contributor

Kudo commented Dec 24, 2024

here is the pr: expo/expo#33818
@expo/[email protected] (included in [email protected]) includes the fix. please give it a try and see whether it helps.

@Wolfleader101
Copy link
Author

here is the pr: expo/expo#33818 @expo/[email protected] (included in [email protected]) includes the fix. please give it a try and see whether it helps.

Amazing, you're a legend for getting it to so quick before I was able too!
Have a Merry Christmas :)

@Wolfleader101
Copy link
Author

Fixed the issue :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
eas build fingerprint needs review Issue is ready to be reviewed by a maintainer
Projects
None yet
Development

No branches or pull requests

3 participants