Unable to find a specification for expo-dev-launcher depended upon by expo-dev-client

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

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at Release 1.11.2 · CocoaPods/CocoaPods · GitHub [!]

[!]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.

pod exited with non-zero code: 1

Any idea what the issue is and how to fix it?

can you share more information please? for example, what version of expo-dev-client is installed in your project?

Here’s what’s in my package.json:

"@react-native-async-storage/async-storage": "^1.15.9",
"@react-native-firebase/analytics": "^12.9.3",
"@react-native-firebase/app": "^12.9.3",
"@react-native-firebase/dynamic-links": "^12.9.3",
"@react-navigation/drawer": "^6.1.8",
"@react-navigation/material-bottom-tabs": "^6.0.9",
"@react-navigation/native": "^6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"expo": "~43.0.0",
"expo-barcode-scanner": "~11.1.2",
"expo-camera": "~12.0.3",
"expo-dev-client": "^0.6.3",
"expo-splash-screen": "~0.13.3",
"expo-status-bar": "~1.1.0",
"expo-updates": "~0.10.5",
"jwt-decode": "^3.1.2",
"moment": "^2.29.1",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.2",
"react-native-auth0": "^2.10.0",
"react-native-gesture-handler": "~1.10.2",
"react-native-paper": "^4.9.2",
"react-native-qrcode-svg": "^6.1.1",
"react-native-reanimated": "~2.2.0",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.8.0",
"react-native-snap-carousel": "^3.9.1",
"react-native-svg": "^12.1.1",
"react-native-web": "0.17.1",
"react-redux": "^7.2.5",
"redux": "^4.1.1",
"redux-thunk": "^2.3.0"

did you try running this? from the error message in the OP

I’m on a PC but I got hold of a Mac and tried it. Here’s the screen shot:

I wonder if this has anything to do with it. It seems like a recent change. This is from this SO post:
ios - No podspec found for React-Core in ../node_modules/react-native/React - Stack Overflow

did you run pod install --repo-update?

Yes, I did run pod install --repo-update and got the message I posted a few minutes ago with the screen shot that reads:

  • mistyped the name or version
  • not added the source repo that hosts the Podspec to your Podfile

can you try removing expo-dev-client, running pod install, then installing expo-dev-client again, and then running pod install again?

Looks like that’s where the issue is.

  1. I removed expo-dev-client from package.json and deleted node_modules folder.
  2. I then ran npm i
  3. Then I did a pod install --repo-update

At this point, I had no errors and everything ran perfectly.

I then ran npm i --save expo-dev-client which installed fine.

Finally, when I ran pod install again, I got the same error that I was getting before.

Does this mean I won’t be able to use Expo Dev Client?

can you share a reproducible example? i don’t know what is happening in your project.

Hey Brent! Hope you are doing well.

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.Examplecom.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!
1 Like

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 :

react-native.config.js

module.exports = {
  dependencies: {
    ...require('expo-dev-client/dependencies'),
  ,
};

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?

3 Likes

@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

1 Like

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

Just fixed it by upgrading to SDK 44