I’m trying to build my Expo (bare workflow) app using EAS build and it’s failing with the following error:
Unable to find a specification for expo-dev-launcher depended upon by expo-dev-client
Here’s the full message:
Installing pods Using Expo modules RNFBAnalytics: Using default Firebase/Analytics with Ad Ids. May require App Tracking Transparency. Not allowed for Kids apps. RNFBAnalytics: You may set variable $RNFirebaseAnalyticsWithoutAdIdSupport=true in Podfile to use analytics without ad ids. Adding a custom script phase for Pod RNFBApp: [RNFB] Core Configuration Auto-linking React Native modules for target ingridconnect: A0Auth0, RNCAsyncStorage, RNFBAnalytics, RNFBApp, RNFBDynamicLinks, RNGestureHandler, RNReanimated, RNSVG, RNScreens, expo-dev-client, and react-native-safe-area-context Analyzing dependencies Fetching podspec for DoubleConversion from …/node_modules/react-native/third-party-podspecs/DoubleConversion.podspec Fetching podspec for RCT-Folly from …/node_modules/react-native/third-party-podspecs/RCT-Folly.podspec RNFBAnalytics: Using default Firebase/Analytics with Ad Ids. May require App Tracking Transparency. Not allowed for Kids apps. RNFBAnalytics: You may set variable $RNFirebaseAnalyticsWithoutAdIdSupport=true in Podfile to use analytics without ad ids. Fetching podspec for glog from …/node_modules/react-native/third-party-podspecs/glog.podspec Adding spec repo trunk with CDN https://cdn.cocoapods.org/
CocoaPods 1.11.2 is available. To update use: sudo gem install cocoapods
[!]Unable to find a specification for expo-dev-launcher depended upon by expo-dev-client
You have either: * out-of-date source repos which you can update with pod repo update or with pod install --repo-update. * mistyped the name or version. * not added the source repo that hosts the Podspec to your Podfile.
I actually just hit this same issue, and solved it while I was reproducing a clean example for this reply. I was able to fix it by changing my Android package name / iOS bundle identifier to be all lowercase, i.e. from com.Example → com.example.
Here’s what I did:
# Init w/ managed: tabs/typescript template
$ expo init example
Choose a template: › tabs (TypeScript)
# Install expo-dev-client in project
$ cd example
$ yarn add expo-dev-client
success Saved lockfile.
success Saved 6 new dependencies.
info Direct dependencies
└─ expo-dev-client@0.6.3
info All dependencies
├─ expo-dev-client@0.6.3
├─ expo-dev-launcher@0.8.4
├─ expo-dev-menu@0.8.4
├─ expo-json-utils@0.2.0
├─ expo-manifests@0.2.2
└─ expo-updates-interface@0.4.0
# Prebuild and set package name to "com.Example"
$ expo prebuild
✔ What would you like your Android package name to be? … com.Example
✔ What would you like your iOS bundle identifier to be? … com.Example
✔ Created native projects
✔ Added Metro config
✔ Updated package.json and added index.js entry point for iOS and Android
› Removed "main": "node_modules/expo/AppEntry.js" from package.json because we recommend using index.js as main instead
🧶 Using Yarn to install packages. Pass --npm to use npm instead.
✔ Installed JavaScript dependencies 7535ms
✖ Config sync failed
[android.dangerous]: withAndroidDangerousBaseMod: Source and destination must not be the same.
# Retry, and set package name to "com.example"
$ expo prebuild
✔ What would you like your Android package name to be? … com.example
✔ What would you like your iOS bundle identifier to be? … com.example
✔ Created native projects | /android, /ios already created | gitignore already synced
✔ Updated package.json and added index.js entry point for iOS and Android
🧶 Using Yarn to install packages. Pass --npm to use npm instead.
✔ Installed JavaScript dependencies 1082ms
» ios: icon: This is the image that your app uses on your home screen, you will need to configure it manually.
✔ Config synced
✔ Installed pods and initialized Xcode workspace.
$ expo run:ios
# It ran successfully!
Ran into this issue again in the pod-install step in a subsequent init of an Expo Managed project, and resolved that by following this step from the Clients → “Installation in React Native and Bare workflow projects” guide:
Add configuration in react-native.config.js to allow React Native autolinking to find the dependencies of expo-dev-client :
I didn’t have to follow the step above that in the guide though. Maybe this step should be added to the Clients → Getting Started guide for Managed workflows as well?
@danscan - in managed workflow apps this file is automatically generated in expo prebuild as part of the config plugin. however, if you have an existing react-native.config.js then we won’t be able to generate it. i agree it may be worth adding a note to cover this case!
by the way, we’re also working on moving expo-dev-client over to being an expo module itself (it’s currently a normal react-native module) which should get rid of the need for this. the issue we’re seeing here is because react-native community autolinking doesn’t link transitive dependencies, but can handle this in expo autolinking
Hello, I have the same problem but I’m using managed workflow. I’ve tried the react-native.config.js approach suggested by @danscan but it didn’t work for me. I keep getting the same error. I do need the expo dev client to test my apps, because I’m using config plugins with native modules