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

Hi all—I’m getting this error after doing expo upgrade to SDK 46—any idea of what I need to do? pod repo update didn’t help.

Hi @t3db0t

Does expo-cli doctor complain about anything?