In a real app
In a project, the clean command is bundle exec pod install from ios/, with the CocoaPods version pinned in Gemfile.lock; a global pod install with a different version is the first cause of “works on my machine”. The variables that matter are passed at the same time: RCT_NEW_ARCH_ENABLED (no effect since 0.82), RCT_USE_PREBUILT_RNCORE=0 to build React Native from source, RCT_HERMES_V1_ENABLED=0 to go back to the previous Hermes. On Expo, the Podfile is generated by prebuild and configured through expo-build-properties (useFrameworks, deploymentTarget), never by hand.
The classic failures: a conflicted Podfile.lock after a merge (regenerate it rather than resolving line by line), a corrupted cache (pod deintegrate then pod install), a library demanding use_frameworks! :linkage => :static while another refuses it, and the familiar download failure on boost or hermes-engine behind a corporate proxy.
For life after CocoaPods, Trunk going read-only does not break existing builds, but libraries will no longer receive updates through that channel. For a React Native project the path is set by core: SwiftPM experimental in 0.87 and 0.88 (npx react-native spm), targeted as the default in 0.89 with a CocoaPods opt-out, and CocoaPods removal in a later release. Expo SDK 58 split its iOS sources into SwiftPM targets to prepare for that move.
Related terms
Swift Package Manager (SwiftPM)
Swift’s official package manager, built into Xcode, which React Native is adopting to replace CocoaPods (experimental in 0.87 and 0.88).
Autolinking
The mechanism that discovers native libraries in node_modules and adds them to the Podfile and Gradle with no manual edits.
XCFramework
Apple’s format for shipping a multi-platform binary framework (device, simulator, macOS) in one bundle; React Native ships its precompiled core in it.
Prebuilt (precompiled React Native)
React Native core shipped as precompiled binaries (iOS XCFrameworks, Android AARs) downloaded at build time instead of rebuilt from source.
Prebuild (Continuous Native Generation)
The Expo command that generates the android and ios folders from app.json and config plugins instead of maintaining them by hand.