In a React Native or Expo app, almost every pod comes from node_modules (React Native itself,
Expo modules, community libraries). Those are local path pods: they update with npm, not through
trunk. Trunk pods are the native SDKs that some libraries depend on.
Both were created and resolved on 14 October 2026 (CocoaPods 1.16.2).
| Fixture | Pods | From trunk |
|---|---|---|
| Expo SDK 57, React Native 0.86.3 | 100 | lottie-ios, PurchasesHybridCommon, RevenueCat, Sentry |
| React Native 0.87.1 | 105 | Google Sign-In and its dependencies, MMKVCore, TOCropViewController |
The React Native app uses React Native Firebase 26 and Stripe 0.82, yet no Firebase or Stripe pod
appears in its lockfile: those libraries declare the SDKs with spm_dependency, the helper React
Native provides from 0.75, so Xcode fetches them as Swift packages. Updating a library can
therefore remove its trunk pods; run podexit again after upgrading.
npx @mcamdali/podexit # in the app folder; reads ios/Podfile.lock
spm_dependency or dropped it,
and upgrade.React Native and Expo still set up iOS projects with CocoaPods. Work on a Swift Package Manager setup is underway:
experiments.swiftPackageManager app
config setting to Expo. Check the Expo changelog for the SDK release that ships it.Until then, CocoaPods keeps working: the pods you have stay installable after December 2.