Skip to main content

What happens on December 2, 2026

The CocoaPods team is turning the CocoaPods trunk (the public spec repository behind pod install) read-only on December 2, 2026, with a test run of the read-only mode on November 1–7, 2026 — see the CocoaPods announcement. From that date:
  • No new pods or pod versions can be published to trunk. New Qonversion releases will no longer reach CocoaPods trunk — Swift Package Manager is the supported way to receive them.
  • Existing builds keep working. The CocoaPods CDN and the specs published before the switch stay available, so pod install with the versions you already use (and your Podfile.lock) continues to resolve. Nothing breaks on December 2 by itself — you only stop receiving updates until you migrate.
Qonversion SDKs are ready for the switch: every SDK with an iOS part — except React Native, which follows React Native’s CocoaPods-based integration — can resolve its native dependency through Swift Package Manager today, with CocoaPods kept as a fallback where the host framework still needs it. Kids Mode on iOS is the one remaining CocoaPods-only build (see the table below).

Am I affected?

iOS, macOS, watchOS and visionOS

Any 6.x version installs through Swift Package Manager — the package has shipped since 2.2.0 (2020) and the current module layout (Qonversion / QonversionSwift / NoCodes) since 6.0.0. Use the latest release (from: "6.15.0" in the docs snippet is a floor, not a requirement).
  1. Remove pod 'Qonversion' from your Podfile and run pod install. If Qonversion was your only pod, you can remove CocoaPods from the project entirely (pod deintegrate) and open the .xcodeproj instead of the workspace.
  2. In Xcode go to File → Add Package Dependencies…, enter https://github.com/qonversion/qonversion-ios-sdk and add the Qonversion library to your app target (or add the package to your Package.swift — see the iOS installation page).
  3. Fix imports: the Swift package exposes three modules where the pod exposed one. import Qonversion keeps working for the core SDK; add import QonversionSwift where you call the Swift-only API (for example QonversionSwift.shared.syncStoreKit2Purchases()) and import NoCodes where you use No-Codes.
  4. Build. Xcode resolves the package once and records it in Package.resolved (YourApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved, or YourApp.xcworkspace/xcshareddata/swiftpm/Package.resolved when you build a workspace); commit that file for reproducible builds, as you commit Podfile.lock today.

Flutter

Minimum SDK version: 11.11.0 (Flutter 3.24 or newer).
  1. Enable Swift Package Manager in Flutter: flutter config --enable-swift-package-manager (on by default since Flutter 3.44).
  2. Update qonversion_flutter to 11.11.0 or newer and run flutter pub get.
  3. Build with flutter run / flutter build. On Flutter 3.24–3.34 run flutter build ios --config-only (flutter build macos --config-only) before building from Xcode. See the Flutter installation page for the details.
  4. If your Podfile also declared pod 'Qonversion', remove it.
Add-to-app modules integrated through CocoaPods keep working through CocoaPods; Flutter 3.44+ can also integrate add-to-app modules through Swift Package Manager — see Flutter’s add-to-app documentation.

React Native

React Native itself still integrates native modules through CocoaPods, so @qonversion/react-native-sdk keeps using pod install. What changes for you:
  • Your existing builds are unaffected — the pod versions you use stay on the CocoaPods CDN.
  • New versions of the Qonversion React Native SDK after December 2, 2026 will be published through Qonversion’s own CocoaPods spec repository; on your side that is one source line in the Podfile, which we will publish on the React Native installation page and here as soon as the repository is live. If you use Expo with prebuild / EAS Build, the ios/ folder is generated — that case (a config plugin) will be covered together with the Podfile line.
  • React Native’s own Swift Package Manager mode is still experimental; a Swift package for the React Native SDK is planned once React Native declares that mode production-ready.

Cordova

Minimum plugin version: 7.10.0.
  1. Upgrade to cordova-ios 8: cordova platform rm ios && cordova platform add ios@8.
  2. Update the plugin: cordova plugin rm @qonversion/cordova-plugin && cordova plugin add @qonversion/cordova-plugin. On cordova-ios 8 the plugin is installed as a Swift package and the native dependency comes from Swift Package Manager.
  3. Keep the CocoaPods tool installed for now — cordova-ios 8 still writes an empty Podfile and runs pod install, nothing is downloaded from it. See the Cordova installation page for the requirements and troubleshooting.
Projects that stay on cordova-ios 6/7 keep working with the current plugin version but will not receive Qonversion updates after the switch.

Capacitor

Minimum plugin version: 1.9.0 (Capacitor 7 or 8).
  1. If your iOS project uses CocoaPods, move it to Swift Package Manager with Capacitor’s assistant: npx cap spm-migration-assistant. The assistant warns about installed plugins that have no Swift package and leaves a couple of manual Xcode steps — follow Capacitor’s Swift Package Manager guide. New iOS projects created with Capacitor 8 (npx cap add ios) already use Swift Package Manager; on Capacitor 7 create them with npx cap add ios --packagemanager SPM.
  2. Update @qonversion/capacitor-plugin to 1.9.0 or newer and run npx cap sync.
  3. If your Podfile or the App project’s package dependencies in Xcode also declared the native Qonversion SDK directly, remove it. See the Capacitor installation page.

Unity

Minimum SDK version: 9.10.0.
  1. Update EDM4U to 1.2.189 or newer (openupm add com.google.external-dependency-manager, or the external-dependency-manager-<version>.unitypackage from the root of the EDM4U repository at the release tag). Unity 2021.3 or newer is required for the Swift Package Manager path.
  2. Update com.qonversion.unity to 9.10.0 or newer.
  3. Check that Swift Package Manager Integration is enabled in Assets → External Dependency Manager → iOS Resolver → Settings (it is by default). On the next iOS build EDM4U links QonversionSandwich into UnityFramework as a Swift package and leaves it out of the Podfile.
  4. Optionally turn off Allow empty Podfile generation if Qonversion was your only pod — then no Podfile is generated and you open Unity-iPhone.xcodeproj instead of the workspace. If your project added the native Qonversion SDK itself, remove it. See the Unity installation page.

FAQ

Will my app stop building on December 2? No. Existing pod versions stay on the CocoaPods CDN and your Podfile.lock keeps resolving. You only stop receiving Qonversion updates until you migrate. Do I have to update the Qonversion SDK before December 2? For the native iOS SDK, no — any 6.x version installs through Swift Package Manager (Kids Mode excepted, see the table). The cross-platform SDKs need the version that added the Swift package path: Flutter 11.11.0+, Cordova 7.10.0+, Capacitor 1.9.0+, Unity 9.10.0+. Older versions keep working through CocoaPods; they just stop receiving updates. What happens if I update the SDK after December 2 while still on CocoaPods? pod install fails with None of your spec sources contain a spec satisfying the dependency: QonversionSandwich (= 7.x.y) (cross-platform SDKs) or ... Qonversion (= 6.x.y) (native), because the new version was never published to trunk. Either stay on your current version or move to the Swift package first — nothing else on your machine has changed. Can I stay on CocoaPods? Your current versions keep installing indefinitely. New versions are not published to trunk, and Swift Package Manager is the supported way to receive them. For React Native, which cannot use Swift Package Manager yet, Qonversion will run its own spec repository (see above); whether and how other CocoaPods projects can use that repository will be documented once it is live. How do I know which path my project is on today? Native apps: pod 'Qonversion' in the Podfile means CocoaPods, the package under Package Dependencies in Xcode means Swift Package Manager. Flutter: with Swift Package Manager the Xcode project has FlutterGeneratedPluginSwiftPackage under Package Dependencies and qonversion_flutter is absent from Podfile.lock. Capacitor: ios/App/CapApp-SPM/Package.swift means Swift Package Manager, ios/App/Podfile means CocoaPods. Cordova: cordova platform ls shows the cordova-ios version (8.x = Swift package). Unity: the toggle is on and QonversionSandwich is absent from the generated Podfile. Anything to change on CI? Nothing until you migrate. On the Swift package path the build machine needs HTTPS access to github.com; commit Package.resolved and cache the checked-out packages (xcodebuild -resolvePackageDependencies -clonedSourcePackagesDirPath <dir> or your CI’s Swift Package Manager cache step). Unity: if you turn off empty Podfile generation, build Unity-iPhone.xcodeproj — no workspace is produced. How do I check that the package is actually linked? In Xcode, open the project navigator — the package appears under Package Dependencies (or in the target’s Frameworks, Libraries, and Embedded Content), and Package.resolved lists qonversion-ios-sdk (and sandwich-sdk for the cross-platform SDKs) with the version. For cross-platform SDKs, also make sure the generated Podfile no longer contains Qonversion / QonversionSandwich. Can I keep both the pod and the package during the transition? No — that links the SDK twice and produces duplicate symbols. Remove the pod when you add the package (the cross-platform SDKs do this for you: their CocoaPods fallback is skipped once the package path is active). What about the November 1–7 test run? The CocoaPods team plans a test run of the read-only mode on November 1–7, 2026, so publishing may be refused during that week. It does not affect installs of existing versions.