Skip to content

Adopt iOS SDK 7.0.0 (stable) - #182

Merged
krassx merged 2 commits into
mainfrom
chore/ios-sdk-7.0.0
Nov 2, 2026
Merged

krassx merged 2 commits into
mainfrom
chore/ios-sdk-7.0.0

Conversation

@krassx

@krassx krassx commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Adopt the stable iOS SDK 7.0.0 (was 7.0.0-beta7).

  • Pin bugsee/spm and bugsee/feedback-spm to 7.0.0; regenerate Package.resolved (revision bbfdda2); update native-versions.json, docs and the tests that assert the pin.
  • 7.0.0 moved the wrapper SPI (BGSReportContract, BGSWrapperChannel) out of the Bugsee umbrella into Bugsee.SPI. Without an explicit import the Support package no longer compiles. Added #import <Bugsee/BugseeSPI.h> where it is used, and @import Bugsee.SPI; in three test files.
  • iOS 7.0.0 now registers max-pending-reports and max-pending-report-age, which the wrapper treated as Android-only. Moved both to the shared key set and their accessors to the base options class (as was done for maxDataSize), and enabled the max-pending-reports effect test on iOS.

Testing

  • Jest: 4641 passed, 18 skipped. Typecheck and lint clean.
  • iOS XCTests (BugseeRNSupport, iPhone 17 Pro simulator): 351 pass.
  • BareExample builds against 7.0.0; embed assertion passes.
  • Full e2e on the iPhone XS (KRSFT): 46 of 48 suites pass, including launch, options-readback, launch-options (max-pending-reports on iOS), native crash, blackout and report suites.
  • Simulator e2e: 42 suites pass, 3 fail (below).

Known failures, not caused by this change

  • secure-component "unmounting disposes the mask": fails identically on clean main with beta7 (simulator baseline).
  • secure-perf: p95 timing budgets miss in a Debug build on the simulator and on the device (not baselined against beta7). Debug-only budget problem; not run in Release.

Not covered

Android e2e (unaffected), the SwiftPM delivery path (the new SPI import is untested there), and the Archive/symbolication path.

🤖 Generated with Claude Code

Pin bugsee/spm and feedback-spm to 7.0.0 and regenerate Package.resolved.
7.0.0 moved the wrapper SPI (BGSReportContract, BGSWrapperChannel) out of
the Bugsee umbrella, so import Bugsee/BugseeSPI.h where it is used.
max-pending-reports and max-pending-report-age are now shared keys: move
their accessors to the base options class and enable the iOS effect test.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b9340dd1-0f3f-428a-8f8f-0b698f44bbe2
Commits

Reviewing files that changed from the base of the PR and between 3219769 and 57a4203.

Files ignored due to path filters: 1
  • packages/react-native/ios/Support/Package.resolved is excluded by !**/Package.resolved
Files selected for processing: 22
  • docs/design/2026-09-15-sdk-design.md
  • docs/design/plans/2026-09-16-implementation-plan.md
  • examples/bare/e2e/launch-options.test.ts
  • examples/bare/scenarios/api-constants.ts
  • native-versions.json
  • packages/react-native-feedback/README.md
  • packages/react-native-feedback/ios/Package.swift
  • packages/react-native/ios/BugseeModule.mm
  • packages/react-native/ios/Support/Package.swift
  • packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNCreatedReportOps.h
  • packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNReportHandlerBridge.h
  • packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNReportOps.h
  • packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNWrapperChannelHolder.h
  • packages/react-native/ios/Support/Tests/BugseeRNSupportTests/BGSRNFakeReport.h
  • packages/react-native/ios/Support/Tests/BugseeRNSupportTests/BGSRNReportHandlerBridgeTests.m
  • packages/react-native/ios/Support/Tests/BugseeRNSupportTests/BGSRNWrapperChannelHolderTests.m
  • packages/react-native/src/options/AndroidLaunchOptions.ts
  • packages/react-native/src/options/BugseeLaunchOptions.ts
  • packages/react-native/src/options/__tests__/accessors.test.ts
  • packages/react-native/src/options/option-keys.json
  • scripts/__tests__/github-release.test.ts
  • scripts/__tests__/native-versions.test.ts
Files with no reviewable changes: 1
  • packages/react-native/src/options/AndroidLaunchOptions.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Summary

Summary by CodeRabbit

  • New Features
    • Pending-report limits and retention age can now be configured on both iOS and Android.
  • Improvements
    • The iOS integration now uses SDK version 7.0.0.
    • Pending-report configuration is available through shared launch options across platforms.
  • Documentation
    • Updated iOS SDK version references to 7.0.0.

The iOS SDK pin changes from 7.0.0-beta7 to 7.0.0 in package metadata, design documents, and release tests. iOS wrapper and support files now import the SDK SPI explicitly. The pending-report count and age options move from the Android-only API to shared launch options. Accessor tests and example coverage now include both iOS and Android.

Suggested reviewers: dsheikherev

Change: Other

Merge Risk: Minimal · previous review 57a42

No actionable regression is established in the SDK update or shared launch options. The change is mergeable after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: adopting iOS SDK 7.0.0 stable.
Description check Passed The description directly explains the SDK upgrade, SPI import changes, shared pending-report options, and validation results.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 1 functions across 13 files. (8 skipped: 8 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

# Conflicts:
#	packages/react-native/ios/BugseeModule.mm
#	packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNReportHandlerBridge.h
#	packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNReportOps.h
#	packages/react-native/ios/Support/Sources/BugseeRNSupport/include/BGSRNWrapperChannelHolder.h
#	packages/react-native/ios/Support/Tests/BugseeRNSupportTests/BGSRNFakeReport.h
#	packages/react-native/ios/Support/Tests/BugseeRNSupportTests/BGSRNReportHandlerBridgeTests.m
#	packages/react-native/ios/Support/Tests/BugseeRNSupportTests/BGSRNWrapperChannelHolderTests.m
@claude

claude Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Claude finished @krassx's task in 54s —— View job


Review of PR #182: Adopt iOS SDK 7.0.0 (stable)

  • Read the diff against origin/main and the surrounding code
  • Cross-checked the pin sites, SPI imports and the option-key moves
  • Posted the review

I found no real bugs, so there are no inline comments.

I read the code only. node_modules isn't installed in this runner, so I did not run Jest, the XCTests or the e2e suites. I'm relying on the test results in the PR description for those. I also can't see the 7.0.0 iOS headers or SDK from here.

What I checked

  • Version pins. native-versions.json, Support/Package.swift and feedback/ios/Package.swift all pin 7.0.0. Package.resolved carries the matching version and revision. Podfile.lock doesn't pin the SDK. pins.test.ts ties the feedback pins to native-versions.json. The podspec prepare_command versions its caches (.bugsee-xcframework-version stamp), so the CocoaPods path picks up the new SDK. I found no pin that was missed. The remaining 7.0.0-beta7 strings are historical comments about when something was fixed.
  • SPI import. BGSRNCreatedReportOps.h now imports <Bugsee/BugseeSPI.h>. BugseeModule.mm, BGSRNReportOps.h, BGSRNReportHandlerBridge.h and BGSRNWrapperChannelHolder.h already import it (from [Merge only after iOS SDK 7.0 GA] iOS: import the wrapper contract from Bugsee.SPI #178), so the Support package is consistent. Plain #import is correct there, because those headers are included from ObjC++ where @import is a hard error.
  • Option move.
    • maxPendingReports and maxPendingReportAge moved from AndroidLaunchOptions to the base class, with the same keys and types.
    • The move is non-breaking: Android callers see the same accessors, and iOS gains them.
    • option-keys.json moves both keys from android to shared, and the counts add up (shared 50, iOS 21, Android 28).
    • The accessor tests, the e2e readback constants and the launch-options case platforms all move together. The parity test's Android-accessor list is still valid, since the keys are still registered.
    • keysFor('ios') now admits both keys, so the platform guard no longer warns when iOS callers set them.

Minor notes (not blocking)

  • P3, unverified semantics on iOS. The accessor docs say "0 or less keeps reports until they are sent or evicted" for maxPendingReportAge. That was written from Android's behaviour. The PR verifies iOS readback of both keys and the effect of max-pending-reports. Nothing covers the effect or the <= 0 semantics of max-pending-report-age on iOS. If iOS 7.0.0 differs, the doc would be wrong. Confirm against the iOS header, or soften the wording.
  • P3, dead compatibility guards. BGSRNReportOps.h, BGSRNReportHandlerBridge.h, BGSRNWrapperChannelHolder.h and some tests wrap the SPI import in #if __has_include(...) ("the 7.0 betas declare it in Bugsee.h"). The new import in BGSRNCreatedReportOps.h has no guard. This is harmless, because the pin is exact and a beta can no longer be built. Later you could drop the guards for consistency.
  • Doc history. implementation-plan.md ~L936 still lists these two keys as "Added, Android-only". It reads as a dated record, so that's acceptable.

Not covered (agreeing with the PR description)

The SwiftPM delivery path and the Archive/symbolication path are untested with the new SPI import. The secure-component and secure-perf e2e failures are already documented as not caused by this change.

Summary

  1. Overall risk: Low.
  2. Merge recommendation: Approve and merge. The only gate is the iOS 7.0.0 GA availability, and Package.resolved already references the GA revision.
  3. Most important items: none are blocking. Optionally confirm the iOS semantics of max-pending-report-age, and optionally add a SwiftPM-path build of the Support package before release.
  4. Positives:
    • The change is small and mechanical.
    • Pins, tests and docs move together.
    • Shared-key promotion follows the earlier maxDataSize precedent.
    • The e2e option-effect test is enabled on iOS, so the shared claim is exercised and not just asserted.
    • The failing suites are honestly labelled as baseline failures.
      · branch chore/ios-sdk-7.0.0

@krassx
krassx merged commit 53ce873 into main Nov 2, 2026
48 checks passed
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