Flutter iOS: Error running pod install — CocoaPods not installed or out of date / [!] CocoaPods could not find compatible versions for pod
The iOS build cannot install its native dependencies because CocoaPods is missing, outdated or a pod's version constraints conflict.
Error running pod installCocoaPods not installed or not in valid stateCocoaPods could not find compatible versions for pod[!] CocoaPods's specs repository is too out-of-date to satisfy dependenciesWarning: CocoaPods not installed. Skipping pod install Meaning
Install CocoaPods (sudo gem install cocoapods or brew install cocoapods), then in ios/ run pod repo update and pod install. Conflicts mean a plugin requires a newer iOS target or incompatible Firebase SDKs; run pod install --repo-update and align versions.
Common causes
- CocoaPods not installed or old
- Podfile.lock out of sync with plugins
- Outdated spec repo
- iOS deployment target too low
- Ruby/arch problems on Apple Silicon
⚡ Quick fix
brew install cocoapodsthencd ios && pod repo update && pod install- Delete
Podfile.lockandPods/and reinstall - Raise
platform :ios, '13.0'in Podfile
Detailed fix by platform
Flutter
cd ios && rm -rf Pods Podfile.lock && pod install --repo-update
How to diagnose
- Pods — Installed version?
- Lock — Stale?
- Target — iOS platform line?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- Android license status unknown / licenses not accepted flutter doctor: Android license status unknown. Run `flutter doctor --android-licenses` to accept the SDK licenses
- App Transport Security has blocked a cleartext HTTP load iOS: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection (NSURLErrorDomain -1022)
- BoxConstraints forces an infinite width Flutter: BoxConstraints forces an infinite width. These invalid constraints were provided to RenderStack's layout() function (TextField in a Row)
Most viewed in Flutter / Dart
- setState() called after dispose() Flutter: setState() called after dispose(): _MyState#1a2b3 (lifecycle state: defunct, not mounted)
- A RenderFlex overflowed Flutter: A RenderFlex overflowed by x pixels on the right/bottom
- Null check operator used on a null value Dart/Flutter: Null check operator used on a null value
Other ways to find it
Where this error sits
Origin: On your device. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 4 Nov 2026