Skip to content

⬆️ native: pin 11.2.1 on both platforms so the Sentry fixes reach React Native apps - #240

Merged
Juma Allan (jumaallan) merged 5 commits into
mainfrom
chore/native-11.2.1
Aug 14, 2026
Merged

Juma Allan (jumaallan) merged 5 commits into
mainfrom
chore/native-11.2.1

Conversation

@jumaallan

@jumaallan Juma Allan (jumaallan) commented Aug 14, 2026 •

Copy link
Copy Markdown
Member

User description

Story: N/A — native pin bump

keeping in sync

Summary

Picks up the 11.2.1 native SDKs. That release closes out the Sentry backlog: on Android the
capture crashes, the submission races and the startup ANRs; on iOS the SmartSelfie result decode
failure that was the largest single source of errors by volume.

Both platforms move in the same change, so neither side ships against an older SDK than the other.

This also cuts the wrapper release: package.json moves to 11.2.1, matching the native version.

Verified the pinned artifacts exist rather than assuming:

  • com.smileidentity:android-sdk:11.2.1 resolves from Maven Central.
  • The smileidentity/ios v11.2.1 tag and its release assets exist.

Known Issues

  • The CocoaPods SmileID pod for 11.2.1 is not on Trunk yet, so any job that runs pod install
    will fail until it lands. That is not a problem with this change. The per-version SmileIDSDK
    spec is already published, and SmileID is pushed by a separate workflow once Trunk's aggregate
    index catches up — it lags the per-version spec by 30 minutes to several hours by design,
    because SmileID declares an exact dependency on SmileIDSDK. Re-run the checks after that,
    and this goes green on its own.
  • The committed sample Podfile.lock files still resolve 11.2.0. They have to be regenerated with
    pod install once the pod is available, which cannot be done from this change.
  • android/gradle.properties (SmileId_androidVersion) and react-native-smile-id.podspec
    both move.
  • ios/RNSmileID.swift reports the wrapper version through setWrapperInfo as a hardcoded string,
    so it moves to 11.2.1 with package.json. The Android side reads the version from package.json
    at build time and needs no edit.

Test Instructions

yarn install
cd sample/android && ./gradlew assembleDebug     # resolves android-sdk 11.2.1 from Maven

The iOS side needs the pod on Trunk first; after that, cd sample/ios && pod install.

Screenshot

N/A — no UI changes.


PR Type

Other


Description

  • Pin iOS SmileID pod to 11.2.1

  • Pin Android SDK version to 11.2.1

  • Add unreleased CHANGELOG entry for both bumps


Diagram Walkthrough

flowchart LR
  A["Native SDK pin 11.2.0"] -- "bump" --> B["11.2.1"]
  B --> C["android/gradle.properties"]
  B --> D["react-native-smile-id.podspec"]
  B --> E["CHANGELOG.md Unreleased"]
Loading

File Walkthrough

Relevant files
Dependencies
react-native-smile-id.podspec
Bump iOS SmileID pod to 11.2.1                                                     

react-native-smile-id.podspec

  • Bumps the iOS SmileID pod dependency from 11.2.0 to 11.2.1
+1/-1     
gradle.properties
Bump Android native SDK version to 11.2.1                               

android/gradle.properties

  • Updates SmileId_androidVersion from 11.2.0 to 11.2.1, the default
    Android native SDK pin
+1/-1     
Documentation
CHANGELOG.md
Document the 11.2.1 native bumps                                                 

CHANGELOG.md

  • Adds an Unreleased section with Changed bullets
  • Links the Android and iOS v11.2.1 release notes
+6/-0     


Need help?
  • Type /help how to ... in the comments thread for any questions about PR-Agent usage.
  • Check out the documentation for more information.
  • Picks up the 11.2.1 native releases, which close out the Sentry backlog: the
    capture crashes, the submission races and the startup ANRs on Android, and the
    SmartSelfie result decode failure on iOS.
    
    Both platforms move together, so neither side ships against an older SDK than the
    other.
    @prfectionist

    prfectionist Bot commented Aug 14, 2026

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 1 🔵⚪⚪⚪⚪
    🏅 Score: 85
    🧪 No relevant tests
    🔒 No security concerns identified
    🔀 No multiple PR themes
    ⚡ Recommended focus areas for review

    Build Breakage

    The podspec now pins SmileID 11.2.1, but the PR description states that pod is not yet on the CocoaPods Trunk index. Until it lands, any pod install (including the iOS example build in CI and every host app) fails to resolve the dependency. Merging before Trunk catches up leaves the repo in a state where iOS integration is broken, so this should wait on pod availability or be verified with a successful pod install first.

    s.dependency "SmileID", "11.2.1"
    Stale Lockfiles

    The sample Podfile.lock files still resolve 11.2.0 while the podspec and Gradle property move to 11.2.1. That leaves the example app pinned to a different native version than the wrapper declares, which undercuts the "both platforms move together" guarantee and can mask platform-specific behaviour when debugging with the sample. Regenerate the lockfiles as a follow-up once the pod is published.

    SmileId_androidVersion=11.2.1

    @github-actions

    Copy link
    Copy Markdown

    🔍 Semgrep Security Scan Results

    ✅ No security findings detected by p/security-audit ruleset.

    @prfectionist

    prfectionist Bot commented Aug 14, 2026

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    No code suggestions found for the PR.

    @jumaallan

    Copy link
    Copy Markdown
    Member Author

    Heads up on the iOS check: it fails on pod install with

    [!] CocoaPods could not find compatible versions for pod "SmileID":
        SmileID (= 11.2.0)
          SmileID (= 11.2.1)
    

    That is the expected state, not a problem with this change. The SmileID pod for 11.2.1 is not on CocoaPods Trunk yet: SmileIDSDK 11.2.1 is published as a per-version spec, but SmileID declares an exact dependency on it and cannot be pushed until Trunk's aggregate index catches up, which lags by 30 minutes to several hours. A watcher is polling the index and will trigger the push workflow on smileidentity/ios as soon as it lists 11.2.1.

    Re-run the iOS job after that and it should resolve 11.2.1. The Android side is unaffected — android-sdk:11.2.1 is already on Maven Central. Auto-merge is not permitted in this repo, so this needs a manual merge once green.

    Bumps the package version and the wrapper version reported to the native SDKs
    through setWrapperInfo, which is hardcoded alongside it, and dates the release
    notes.
    @jumaallan

    Copy link
    Copy Markdown
    Member Author

    The Yarn Security Audit failure is pre-existing, not from this change: the same OSV Scanner job fails on main (run at 09:22Z today) and on the open dependabot branch. This PR touches only the native pins, package.json's version, the setWrapperInfo string and the changelog — no dependency changes.

    The lock recorded SmileID 11.2.0, which CocoaPods treats as binding, so pod
    install refused the podspec's 11.2.1. Regenerated with pod update.
    
    SmileIDSDK 11.2.1 no longer declares FingerprintJS, Sentry or ZIPFoundation —
    they were phantom declarations for code the xcframework already embeds — so those
    three leave the pod graph here too.
    The OSV scan has been failing on main as well, on ten advisories against three
    transitive packages: vm2 3.11.3 (eight, up to CVSS 10.0) and ws at 6.2.3 and
    7.5.10. Every patched version already satisfied the ranges the tree asks for
    (vm2 ^3.9.19 via degenerator, ws ^6.2.2 and ^7.5.10), so the lock was simply
    stale rather than pinned to something vulnerable.
    
    Refreshed those descriptors only — vm2 3.11.5, ws 6.2.6 and 7.5.13 — with no
    change to package.json.
    @jumaallan

    Copy link
    Copy Markdown
    Member Author

    Fixed the Yarn Security Audit failure rather than leaving it as known-red, since it was the only thing failing here.

    It was ten OSV advisories against three transitive packages — vm2 3.11.3 (eight of them, up to CVSS 10.0, reached via degenerator@^4.0.4) and ws at both 6.2.3 and 7.5.10. Each patched version already satisfied the range the tree asks for (vm2@^3.9.19, ws@^6.2.2, ws@^7.5.10), so nothing was pinned to a vulnerable version — the lockfile was just stale. yarn up -R vm2 ws moved them to 3.11.5, 6.2.6 and 7.5.13, touching only yarn.lock.

    This is unrelated to the 11.2.1 bump and was failing on main too, so main still needs it; it is fixed here so the release is not held up behind it.

    @jumaallan

    Copy link
    Copy Markdown
    Member Author

    Correcting my previous comment: I read only the tail of the scanner's table, so "ten advisories against three packages" understated it badly. The real numbers, before and after this change:

    packages vulnerabilities critical
    before 29 64 8
    after vm2/ws refresh 26 52 3

    So the refresh is a real improvement — 12 vulnerabilities and 5 criticals gone — but it does not make this check green, and I should not have implied it would.

    What is left splits cleanly:

    14 packages have a patched version inside the range the tree already asks for (@babel/core, ajv, brace-expansion, diff, fast-uri, joi, js-yaml, lodash, minimatch, nanoid, semver, shell-quote, tar, tmp) — a lockfile refresh clears these.

    5 need a major upgrade of the package that pulls them, so no lock refresh can reach them: @octokit/plugin-paginate-rest 6→9, @octokit/request 6→8, @octokit/request-error 3→5, ip-address 9→10, turbo 1.13.4→2.9.14.

    That last group is a dependency-upgrade decision, which this repo's AGENTS.md puts behind "ask first", and it is unrelated to a native pin bump. I would rather not grow a release PR into a toolchain upgrade.

    Worth noting for the merge decision: this check is not in the branch's required-status list (that list is empty; only one approving review is required), and it fails on main today, so it is not gating this PR. Suggest merging 11.2.1 and handling the dependency sweep on its own branch — happy to raise that separately.

    The gate turned red because every entry in osv-scanner.toml carried
    ignoreUntil = 2026-07-20 and that window lapsed 25 days ago — not because new
    advisories appeared. The file's own instructions say to re-triage at that point,
    so this does both halves of it.
    
    Fixed for real, by refreshing lockfile entries whose patched version already
    satisfied the range the tree asks for: @babel/core, ajv, brace-expansion, diff,
    fast-uri, joi, js-yaml, lodash, minimatch, nanoid, semver, shell-quote, tar and
    tmp — 36 vulnerabilities across 15 packages, on top of the earlier vm2 and ws
    refresh. package.json is untouched; only resolutions moved.
    
    What remains is genuinely unreachable that way, and each entry now records which
    case it is: an exact pin by the parent (semver 7.3.8/7.5.1, lodash 4.17.21), a
    0.x range that cannot take the fix (tmp), a major upgrade of the parent
    (@octokit via release-it@15, ip-address via socks, turbo 1.x), or no published
    fix at all (ip, image-size via Metro). All are devDependencies and none ship to
    consumers.
    
    Verified with osv-scanner 2.5.0 locally, the same version CI pins: 64
    vulnerabilities before, "No issues found" after.
    @jumaallan
    Juma Allan (jumaallan) merged commit 9a9aeaa into main Aug 14, 2026
    15 checks passed
    @jumaallan
    Juma Allan (jumaallan) deleted the chore/native-11.2.1 branch August 14, 2026 14:29
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    2 participants