For an app with a Podfile next to its Xcode project. The example rows come from the
native-app fixture, a real lockfile resolved on
14 October 2026.
npx @mcamdali/podexit --format markdown --output podexit.md
Each trunk pod gets a row like these:
| Pod | Locked | Latest on trunk | Updates | Swift package |
|---|---|---|---|---|
Alamofire |
5.12.2 | 5.12.2 (2026-09-10) | frozen after Dec 2 | yes |
FirebaseAnalytics |
12.19.0 | 12.19.0 (2026-09-09) | capped at 12.x | yes (Firebase) |
GoogleAppMeasurement |
12.19.0 | 12.19.0 (2026-09-09) | capped with Firebase | unknown |
Pods marked "Pulled in by" are dependencies of other pods. You usually do not add them yourself: the Swift package of the pod that needs them declares them too.
For each pod your Podfile lists with a Swift package:
Package.swift and read its changelog.Package.swift (.library(name: …)) when it is not.Podfile and run pod install.Firebase's migration page advises against mixing CocoaPods and Swift Package Manager in the same target for long ("complex dependency cycles and build errors"), so finish the move per target rather than leaving it half done.
GoogleAppMeasurement.Package.swift, or vendor the source into your
project.When the Podfile has no pods left:
pod deintegrate
rm Podfile Podfile.lock
rm -r Pods
Delete the .xcworkspace CocoaPods created and open the .xcodeproj from now on (unless the
workspace holds other projects you added yourself).