Trying to build expo react native app with eas gives error at pod install step

Hi,

I have a managed workflow app with Expo 47 SDK, EAS 3.7.2, React Native 0.70.5.
When I try to build with EAS it falis at pod install step.

I have done exhaustive research on this and found some results which are similar but dont fix the issue.
This is the error.

1 Using Expo modules
2 [Expo] Enabling modular headers for pod ExpoModulesCore
3 Auto-generating `.xcode.env.local` with $NODE_BINARY=/Users/expo/.nvm/versions/node/v16.18.1/bin/node
4 Auto-linking React Native modules for target `WWIIAircraftV2`: RNCAsyncStorage, lottie-react-native, and react-native-netinfo
5 [Codegen] Generating ./build/generated/ios/React-Codegen.podspec.json
6 Analyzing dependencies
7 Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
8 [Codegen] Found FBReactNativeSpec
9 Fetching podspec for `RCT-Folly` from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`
10 Fetching podspec for `boost` from `../node_modules/react-native/third-party-podspecs/boost.podspec`
11 Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
12 Adding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`
13 CocoaPods 1.12.0 is available.
14 To update use: `gem install cocoapods`
15 For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.12.0
16 [!] Unable to find a specification for `EXUpdatesInterface` depended upon by `EXUpdates`
17 You have either:
18 out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
19 mistyped the name or version.
20  * not added the source repo that hosts the Podspec to your Podfile.
21 pod exited with non-zero code: 1

I didnt have a ios or andriod folder before I got this error.
I have tried doing a ‘expo prebuild’ from a suggestion and also tried the suggestion in the error.
I now have the ios and android folders.

I dont understand how with a managed workflow app I should need to do anything about Pods!

Any help would be appreciated?

Hi @malcolmds

You’re right. You shouldn’t have to worry about pods for a managed worflow app.

Please post a link to one of your failed builds in case one of the Expo team members has time to investigate. Only Expo team members will be able to check your build logs (so I won’t be able to), but better to post the link here in case one of them finds your post. Otherwise they might have to request it which will just slow down the process.

Do you have an ios directory in your app? For a managed workflow app you should not (or else it should be in your .gitignore file).

Please post the output of npx expo-doctor

Please also post your dependencies and devDependencies from package.json and your plugins section from app.json if you are using any config plugins.

Thanks @wodin

Build Details — 923a1725-8805-4aae-b43d-050e934490f6 — WWIIAircraft_V2 — Expo](Build Details — 923a1725-8805-4aae-b43d-050e934490f6 — WWIIAircraft_V2 — Expo)

Yes I do have an IOS directory but that is only after I ran ‘expo prebuild’ because of a google post I read.
I have /ios/Pods/ in my .gitignore

npx expo-doctor output

✔ Validating global prerequisites versions
✔ Checking for incompatible packages
✔ Checking for conflicting global packages in project
✖ Verifying prebuild support package versions are compatible
Issues:
  Expected package @expo/config-plugins@^5.0.2
  Found invalid:
    @expo/config-plugins@3.1.0
    (for more info, run: npm why @expo/config-plugins)
Advice:
  • Upgrade dependencies that are using the invalid package versions.
✔ Checking dependency versions for compatibility with the installed Expo SDK
✔ Validating Expo Config
✖ Checking package.json for common issues
Issues:
  The package "expo-modules-autolinking" should not be installed directly in your project. It is a dependency of other Expo packages and should be installed automatically.

✖ Found one or more possible issues with the project. See above logs for issues and advice to resolve.

package.json

"dependencies": {
    "@bugsnag/expo": "^47.0.0",
    "@bugsnag/plugin-expo-eas-sourcemaps": "^47.1.0",
    "@bugsnag/source-maps": "^2.3.1",
    "@expo/vector-icons": "^13.0.0",
    "@react-native-async-storage/async-storage": "^1.17.11",
    "@react-native-community/netinfo": "9.3.5",
    "@react-navigation/bottom-tabs": "^6.5.5",
    "@react-navigation/native": "^6.1.4",
    "@react-navigation/stack": "^6.3.14",
    "axios": "^1.3.3",
    "b64-to-file": "^1.0.4",
    "deprecated-react-native-prop-types": "^4.0.0",
    "expo": "~47.0.12",
    "expo-application": "~5.0.1",
    "expo-constants": "~14.0.2",
    "expo-crypto": "~12.0.0",
    "expo-device": "~5.0.0",
    "expo-file-system": "~15.1.1",
    "expo-splash-screen": "~0.17.5",
    "expo-status-bar": "~1.4.2",
    "expo-updates": "~0.15.6",
    "formik": "^2.2.9",
    "install-expo-modules": "^0.5.1",
    "lodash": "^4.17.21",
    "lottie-react-native": "5.1.4",
    "qs": "^6.11.0",
    "react": "18.1.0",
    "react-native": "0.70.5",
    "react-native-device-detection": "^0.2.1",
    "react-native-elements": "^3.4.3",
    "react-native-htmlview": "^0.16.0",
    "yup": "^1.0.0"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9"
  },

app.json

"plugins": [
      "@bugsnag/plugin-expo-eas-sourcemaps"
    ]

Don’t believe everything you read on Google :wink:

expo prebuild generates the native projects, effectively switching you to the Bare workflow. In order to switch back you basically need to remove the ios and android directories again, or add them to .gitignore.

It should be the whole ios and android directories. Not just /ios/Pods/

This is pretty old. It might be because of bugsnag. Try:

npm why "@expo/config-plugins@3.1.0"

Remove this.

Nothing else jumps out at me as being problematic, but I would have to have a closer look to be sure.

@wodin

npm why @expo/config-plugins@3.1.0 gives this?

@expo/config-plugins@3.1.0
node_modules/expo-updates/node_modules/@expo/config-plugins
@expo/config-plugins@“3.1.0” from @expo/config@5.0.9
node_modules/expo-updates/node_modules/@expo/config
@expo/config@“5.0.9” from @expo/metro-config@0.1.84
node_modules/expo-updates/node_modules/@expo/metro-config
@expo/metro-config@“^0.1.16” from expo-updates@0.4.2
node_modules/expo-updates
expo-updates@“^0.4.1” from fiction-expo-restart@1.1.3
node_modules/fiction-expo-restart
fiction-expo-restart@“^1.1.2” from the root project

Ah. fiction-expo-restart is causing the old version of @expo/config-plugins to be installed.

It depends on expo-updates@“^0.4.1”, which is old and depends on the old version of @expo/config-plugins.

The complete code of fiction-expo-restart is as follows:

import * as Updates from 'expo-updates';
import { Platform } from 'react-native';

const Restart = ()=>{
    if(Platform.OS=="web")
    {
        window.location.reload()
    }
    else{
        Updates.reloadAsync();
    }
}
export { Restart }

So I suggest you uninstall it. You do not have react-dom and react-native-web installed, so do not need to worry about Platform.OS === "web" and you can just replace calls to fiction-expo-restart’s Restart function with Updates.reloadAsync().