Skip to content

fix(ios): derive the pod deployment target from React Native (Xcode 27) - #645

Merged
sunnylqm merged 1 commit into
masterfrom
claude/xcode27-privacy-deployment-target
Sep 26, 2026
Merged

sunnylqm merged 1 commit into
masterfrom
claude/xcode27-privacy-deployment-target

Conversation

@sunnylqm

@sunnylqm sunnylqm commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Since 10.56.0 the privacy manifest ships as a resource bundle. CocoaPods gives the resource bundle target (react-native-update-react-native-update_privacy) the podspec's platform version, which is hard-coded to 11.0. React Native's post_install raises the deployment target of pod targets, but not of resource bundle targets.

Xcode 27 supports iOS 15.0 and later only, and treats the out-of-range target as an error. Every non-Expo iOS app on 10.56.0–10.57.0 fails to build:

error: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 15.0 to 27.0.x. (in target 'react-native-update-react-native-update_privacy' from project 'Pods')

CI did not catch it because it runs Xcode 26.4, where this is only a warning. Expo projects are not affected: their target is parsed from ExpoModulesCore.

Fix

Use React Native's min_ios_version_supported, as the library templates do. react_native_pods.rb defines it, and the Podfile loads that file before evaluating podspecs. The value never exceeds the app's own target, so pod install keeps working on older React Native versions. The spec falls back to 11.0 when the Podfile does not load react_native_pods.rb.

Verification

  • Xcode 27.0, React Native 0.83: the react-native-update-react-native-update_privacy target failed to build before the change and built after it. The generated Pods project no longer contains DEPLOYMENT_TARGET = 11.0.
  • The iOS E2E in CI (Xcode 26.4) covers regressions on the current toolchain.

Workaround for 10.56.0–10.57.0

Add this to the Podfile's post_install:

installer.pods_project.targets.each do |t|
  next unless t.name == 'react-native-update-react-native-update_privacy'
  t.build_configurations.each { |c| c.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.1' }
end

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Summary by CodeRabbit

  • Bug Fixes
    • Updated the default iOS deployment target to align with the supported React Native version, while retaining a fallback for older setups and respecting valid Expo project settings.

The privacy manifest ships as a resource bundle (10.56.0), and CocoaPods
gives that bundle target the podspec's platform version. React Native's
post_install raises the deployment target of pod targets but not of
resource bundle targets, so the hard-coded 11.0 stayed there. Xcode 27
supports iOS 15.0+ only and fails the build on that target:

  The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set
  to 11.0, but the range of supported deployment target versions is 15.0
  to 27.0.x. (in target 'react-native-update-react-native-update_privacy')

Use React Native's min_ios_version_supported (what library templates
use), which never exceeds the app's own target; fall back to 11.0 when a
Podfile does not load react_native_pods.rb. Expo projects keep the
target parsed from ExpoModulesCore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 31d66076-55cb-47d1-8548-4a3939a274a6

📥 Commits

Reviewing files that changed from the base of the PR and between 354f68c and 5fb2ac3.

📒 Files selected for processing (1)
  • react-native-update.podspec
 ______________________________
< I'm not mad, just debugging. >
 ------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sunnylqm
sunnylqm merged commit 70bd1f1 into master Sep 26, 2026
8 of 11 checks passed
sunnylqm added a commit that referenced this pull request Sep 26, 2026
Bump package.json and harmony/pushy/oh-package.json5 together for the
Xcode 27 iOS build fix from #645. No runtime changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant