React Native

How to Resolve "Pod Install Failed: CocoaPods Could Not Find Compatible Versions"

4 min read by DebuggedIt

Quick answer

pod install fails with CocoaPods reporting it can't find a set of pod versions that satisfy every dependency's constraints simultaneously. This is a genuine...

pod install fails with CocoaPods reporting it can't find a set of pod versions that satisfy every dependency's constraints simultaneously. This is a genuine dependency resolution conflict — somewhere in your Podfile or its transitive dependencies, two requirements can't both be true at once, and CocoaPods needs your help narrowing it down.

The Problem

Running the install produces a detailed but sometimes overwhelming conflict report:

$ pod install
Analyzing dependencies

[!] CocoaPods could not find compatible versions for pod "React-Core":
  In Podfile:
    react-native-reanimated (from `../node_modules/react-native-reanimated`) was resolved to 3.6.1, which depends on
      React-Core

    react-native (from `../node_modules/react-native`) was resolved to 0.72.0, which depends on
      React-Core (= 0.72.0)

Sometimes it's tied to a stale local specs repository rather than an actual real conflict:

[!] Unable to find a specification for `SomePod (~> 2.1.0)`

Why It Happens

CocoaPods resolves dependencies by finding a single set of pod versions that satisfies every constraint from every source simultaneously — your Podfile, and every dependency's own .podspec requirements. This fails when those constraints genuinely can't all be satisfied together, or when CocoaPods' local knowledge of available versions is out of date. Common causes:

  • A genuine version conflict — two React Native packages in your project depend on different, incompatible versions of a shared native dependency like React-Core, often after upgrading one package without upgrading a related one.
  • A stale local CocoaPods specs repository — your machine's cached knowledge of what pod versions exist is out of date, so it doesn't know about the version it actually needs to satisfy the constraint.
  • Mismatched React Native and native module versions after a partial upgrade — updating react-native itself without also updating third-party native modules that pin to a specific compatible React Native version.
  • A corrupted or stale local Pods cache holding onto outdated podspec information from a previous project state.

The Fix

Start by updating CocoaPods' local specs repository, which resolves a surprising number of these errors on its own when the real issue is stale local metadata rather than a genuine conflict:

cd ios
pod repo update
pod install

If that doesn't resolve it, clear the local CocoaPods cache entirely and retry with a completely clean state:

pod cache clean --all
rm -rf ~/Library/Caches/CocoaPods
rm -rf Pods Podfile.lock
pod install

If the error clearly names a genuine version conflict between two specific packages (as in the first example above), check whether both packages have compatible versions available, and align them. Check your installed React Native version:

cat node_modules/react-native/package.json | grep '"version"'

Check the conflicting package's compatibility requirements against that React Native version, usually documented in its README or changelog:

npm info react-native-reanimated versions

Update the conflicting package to a version that's explicitly compatible with your current React Native version:

npm install react-native-reanimated@latest
cd ios
pod install

If you recently upgraded React Native itself, make sure every native-module dependency in package.json has also been updated to a version compatible with the new React Native release — mixing an old native module with a newer core React Native version is one of the most common sources of this exact conflict:

npx react-native-config-check # or manually cross-check each native dependency's compatibility table

Still Not Working?

If the conflict persists after updating packages and clearing caches, try explicitly pinning the conflicting pod's version directly in your Podfile as a targeted override, which forces CocoaPods to use a specific version rather than trying to resolve it automatically from potentially conflicting transitive requirements:

# ios/Podfile
pod 'React-Core', :path => '../node_modules/react-native/'

After adding an explicit override, reinstall and watch for any new errors it surfaces, since forcing one version can sometimes just move the conflict to a different, previously-hidden dependency:

pod install

If you're still stuck, running with verbose output shows CocoaPods' actual resolution process step by step, which is often more informative for diagnosing exactly where the incompatible constraint originates than the summary error alone:

pod install --verbose