Skip to content

fix(ios): set IPHONEOS_DEPLOYMENT_TARGET to 15.0 across all packages#9108

Merged
mikehardy merged 4 commits into
mainfrom
fix/ios-deployment-target
Jul 21, 2026
Merged

fix(ios): set IPHONEOS_DEPLOYMENT_TARGET to 15.0 across all packages#9108
mikehardy merged 4 commits into
mainfrom
fix/ios-deployment-target

Conversation

@just1and0

@just1and0 just1and0 commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • Verified zero IPHONEOS_DEPLOYMENT_TARGET = 10.0 values remain across all pbxproj files
  • git diff --check clean — no whitespace issues
  • CI iOS build passes

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.96%. Comparing base (3bbfecc) to head (64d0cba).
⚠️ Report is 14 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #9108      +/-   ##
============================================
- Coverage     65.14%   64.96%   -0.17%     
- Complexity     1833     1838       +5     
============================================
  Files           503      409      -94     
  Lines         39184    26401   -12783     
  Branches       5805     4861     -944     
============================================
- Hits          25521    17150    -8371     
+ Misses        12192     8172    -4020     
+ Partials       1471     1079     -392     
Flag Coverage Δ
android-native 62.94% <ø> (+2.42%) ⬆️
e2e-ts-android 59.67% <ø> (+1.47%) ⬆️
e2e-ts-ios ?
e2e-ts-macos 50.00% <ø> (-<0.01%) ⬇️
ios-native ?
jest 49.58% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mikehardy mikehardy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a good change as a start - can you add a cleanup chore commit that scans the entire ios codebase and cleans up any stale API availability checks that were looking for iOS 15 or below?

If there is a similar requirement that we're past for tvos/visionos/ipados/maccatalyst etc - that is, a deployment target that's stale and could be updated so the compiler knows more APIs are available - allowing us to clean out availability gates for those platforms, it would be good to get everything at once while we're here

iOS deployment target is now 15.0, so UNNotificationPresentationOptionBanner
and UNNotificationPresentationOptionList are always available. Removes dead
iOS 13 fallback branches and the associated TODO.
@just1and0

Copy link
Copy Markdown
Contributor Author

Addressed in 8a96a5d — scanned all @available guards across the iOS codebase (10 total).

Removed (2 guards):

  • RNFBMessaging+UNUserNotificationCenter.m — two @available(iOS 14, *) checks for UNNotificationPresentationOptionBanner and UNNotificationPresentationOptionList. With iOS 15.0 as the minimum, these are always available. Removed the dead iOS 13 fallback else branches and the stale TODO comment.

Kept (8 guards):

  • Analytics, Functions, App Check, and Messaging all have mixed-platform guards like @available(iOS 15.0, macOS 12.0, *) or @available(iOS 14.0, macOS 11.0, macCatalyst 14.0, ...). These are still meaningful because macosTarget is 10.15 — the macOS/macCatalyst availability checks are still load-bearing even though the iOS side is now redundant.

Other platforms:

  • No stale tvOS/visionOS/iPadOS deployment targets found. tvOS is already 15.0 through podspecs, iPadOS follows the iOS target, and there's no explicit visionOS or macCatalyst target to bump. macCatalyst availability is handled at the source level with @available guards which we're keeping.

@mikehardy mikehardy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did a final pass - a little sad we can't remove any more of those conditionals - removing conditionality is a nice background task to pursue in general as it maintains simplicity but my audit of platform requirements and support matches up with current changes

during that audit I noticed that our platforms doc was stale for iOS minimum as well though, so I put in a final commit that bumps iOS to 15 from 13 and fixed up the Android minimum and adds the ai and phone-number-verification modules to platform support table as well

Ci should go green on lint and markdown which would verify my change then I think this is good to go

@mikehardy
mikehardy merged commit 99d0899 into main Jul 21, 2026
19 of 21 checks passed
@mikehardy
mikehardy deleted the fix/ios-deployment-target branch July 21, 2026 02:55
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.

this @available annotation shouldn't be necessary unless the pbxproj IPHONEOS_DEPLOYMENT_TARGET is wrong

2 participants