Symptom
Building with Xcode 27 fails in the Pods project with:
error: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 12.0, but the range of supported deployment target versions is 15.0 to 27.0.x. (in target 'OneSignalXCFramework' from project 'Pods')
Device builds say "The iOS deployment target" instead. The error appears even when your app targets iOS 15 or later, and only with Xcode 27. Xcode 26 builds the same project without complaint.
Cause
Xcode 27's iOS 27 SDK no longer accepts a deployment target below iOS 15 and treats one as an error rather than a warning. The OneSignalXCFramework podspec (5.6.1 and earlier) declares iOS 12.0, and CocoaPods applies the podspec's value to the pod target it generates, regardless of your app's own target. That pod target only wraps prebuilt frameworks, but Xcode validates it all the same.
Who is affected
- CocoaPods users of
OneSignalXCFramework or OneSignal 5.6.1 and earlier, on Xcode 27.
- Cross-platform SDKs that install the native SDK through CocoaPods: React Native, Flutter, Cordova, Ionic and Capacitor, Unity, .NET. The Flutter and Cordova plugins also declare iOS 12 in their own podspecs, so the workaround below is needed for those pod targets too.
- Swift Package Manager users are not affected. SPM raises the package's declared minimum to the toolchain's floor on its own.
Workaround
Add this to your Podfile and run pod install again. It raises only the pod targets that sit below iOS 15 and leaves everything else alone.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
current = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
if current && current.to_f < 15.0
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
end
end
end
end
A Podfile can have only one post_install block. React Native, Flutter and Capacitor projects already have one, so put the loop inside the existing block rather than adding a second. Cordova regenerates its Podfile on cordova prepare, so reapply the edit after each prepare or add it through a hook script. For Unity and .NET, add the block to the generated Podfile before running pod install.
Verified with Xcode 27.0 (27A266a), CocoaPods 1.16.2, an app targeting iOS 16.0 and OneSignalXCFramework 5.6.1.
Fix
The SDK's minimum iOS version moves to 15 in the next 5.7.x release, which resolves this without any Podfile change. Cross-platform SDK releases with the updated native version follow after that. Keep the workaround until the cross-platform SDK you use has shipped it.
Apps that still target iOS 12 to 14 cannot build with Xcode 27 at all, so nothing changes for them today. For those apps, 5.6.1 is the last release that supports iOS 12 to 14. CocoaPods keeps such apps on 5.6.1 automatically; Swift Package Manager users on those targets should pin 5.6.1.
Symptom
Building with Xcode 27 fails in the Pods project with:
Device builds say "The iOS deployment target" instead. The error appears even when your app targets iOS 15 or later, and only with Xcode 27. Xcode 26 builds the same project without complaint.
Cause
Xcode 27's iOS 27 SDK no longer accepts a deployment target below iOS 15 and treats one as an error rather than a warning. The
OneSignalXCFrameworkpodspec (5.6.1 and earlier) declares iOS 12.0, and CocoaPods applies the podspec's value to the pod target it generates, regardless of your app's own target. That pod target only wraps prebuilt frameworks, but Xcode validates it all the same.Who is affected
OneSignalXCFrameworkorOneSignal5.6.1 and earlier, on Xcode 27.Workaround
Add this to your Podfile and run
pod installagain. It raises only the pod targets that sit below iOS 15 and leaves everything else alone.A Podfile can have only one
post_installblock. React Native, Flutter and Capacitor projects already have one, so put the loop inside the existing block rather than adding a second. Cordova regenerates its Podfile oncordova prepare, so reapply the edit after each prepare or add it through a hook script. For Unity and .NET, add the block to the generated Podfile before runningpod install.Verified with Xcode 27.0 (27A266a), CocoaPods 1.16.2, an app targeting iOS 16.0 and OneSignalXCFramework 5.6.1.
Fix
The SDK's minimum iOS version moves to 15 in the next 5.7.x release, which resolves this without any Podfile change. Cross-platform SDK releases with the updated native version follow after that. Keep the workaround until the cross-platform SDK you use has shipped it.
Apps that still target iOS 12 to 14 cannot build with Xcode 27 at all, so nothing changes for them today. For those apps, 5.6.1 is the last release that supports iOS 12 to 14. CocoaPods keeps such apps on 5.6.1 automatically; Swift Package Manager users on those targets should pin 5.6.1.