Repository navigation
docs: state the real React Native, iOS and Android minimums - #670
Merged
Merged
Conversation
Shahroz16
force-pushed
the
docs/real-platform-floors
branch
3 times, most recently
from
October 21, 2026 00:58
2888739 to
908df70
Compare
Shahroz16
marked this pull request as ready for review
October 21, 2026 03:21
The README badges still advertised iOS 13 and Android API 21, the native SDKs' floors. A React Native app can't target below its React Native release's minimum (iOS 15.1 and API 24 since 0.76). The lowest React Native that works is 0.77: the SDK is New Architecture only since 6.0.0, and its Android module applies the Compose compiler plugin with the app's Kotlin version, which needs Kotlin 2.0, first used by the 0.77 template. Since 5.1.0 the native Android SDK has also depended on AndroidX Core 1.17, which needs compileSdk 36 and AGP 8.9.1; React Native 0.81+ templates meet that as generated, so document the edits 0.77-0.80 apps need. Update the badges, add a React Native badge, drop the Swift 5.3 badge (the wrapper already uses Swift 5.7 syntax), and add a Requirements section. Refs MBL-2389 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shahroz16
force-pushed
the
docs/real-platform-floors
branch
from
October 21, 2026 06:30
908df70 to
0ac6629
Compare
sydneycollins-cio
approved these changes
Oct 23, 2026
mrehan27
approved these changes
Oct 23, 2026
| target an OS version below the minimum of the React Native release it uses. | ||
|
|
||
| Apps created from the React Native 0.81 template or later meet the Android build requirement as | ||
| generated. CI builds Android template apps with React Native 0.81 and 0.88, and iOS with the example |
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs MBL-2389
Docs only, no behaviour change. The README badges advertised iOS 13 and Android API 21, which are the native Customer.io SDKs' floors. A React Native app can't target below its React Native release's own minimum.
The wording follows the current support policy: keep minimums as low as actually works, and leave
peerDependenciesat*with no enforcement.Changes
if let, e.g.ios/wrappers/inapp/NativeMessagingInApp.swift:31), and no compiler minimum has been verified to replace it.minSdkVersion=21default is a separate change and isn't touched here.Evidence for the numbers
Helpers::Constants.min_ios_version_supportedreturns 15.1 inreact-native@0.76.0and0.77.0(scripts/cocoapods/helpers.rb). Our podspec usesmin_ios_version_supported.minSdk = 24inreact-native@0.76.0and0.77.0gradle/libs.versions.toml, and in both templates.@react-native-community/template@0.81.6) and AGP ≥ 8.9.1 (8.11.0 inreact-native@0.81.6'sgradle/libs.versions.toml). The 0.80 template has compileSdk 35 / AGP 8.9.2; 0.79 has 35 / 8.8.2.org.jetbrains.kotlin.plugin.composefromcompose-compiler-gradle-plugin:$kotlinVersion. That plugin only exists for Kotlin 2.0+. The RN 0.76 template setskotlinVersion = "1.9.24"; 0.77 sets"2.0.21". CodegenEventEmittermodule events (used insrc/specs/modules) need RN 0.76+. Local builds: see below.androidx.core:core(-ktx):1.17.0AAR metadata:minCompileSdk=36,minAndroidGradlePluginVersion=8.9.1. It's requested directly byio.customer.android:messaging-in-app:4.23.2. Native Android moved to 1.17.0 in 4.13.0, which this SDK picked up in 5.1.0.Builds (stock templates, packed 6.13.1,
:app:assembleDebug)Could not find org.jetbrains.kotlin:compose-compiler-gradle-plugin:1.9.25checkDebugAarMetadata: AndroidX Core 1.17.0 needs compileSdk 36 and AGP ≥ 8.9.1Templates 0.79 (compileSdk 35, AGP 8.8.2) and 0.80 (35, AGP 8.9.2) fall in between. Hence "0.77–0.80: compileSdk 36" and "0.77–0.79: also AGP". 0.79 and 0.80 weren't built individually.
peerDependenciesstays*. Thefeat!draft #671 is kept only for reference and isn't planned. This PR only documents what is already true.Codex review
Codex (gpt-6.1-sol, high) did an adversarial review in two passes:
android/. Fixed: added theexpo-build-propertiesnote.targetSdkdoesn't need to change.expo-build-propertiescan't raise AGP/Gradle. Fixed: point Expo users at SDK 54+.main. Kept as worded, because that's the policy statement requested. The merge order is the condition: merge fix(android): build under AGP 9 built-in Kotlin and new DSL #669 first, or soften that sentence here.🤖 Generated with Claude Code