Repository navigation
iOS 7.0.0-beta4: the rest of the adoption after #30 - #56
Conversation
There was a problem hiding this comment.
Stale comment
Deep review: iOS 7.0.0-beta4 adoption (rest of pin, on top of #30)
#30 is already on
main(d55c45e) and already pins7.0.0-beta4(e467f57c/ checksum90a923ec…f6ec87b, confirmed onbugsee/spm’s tag andPackage.swift). This PR is the necessary follow-up: lock the e2e that#30inverted, correct floor comments, refreshPodfile.lock, and stop describing a droppedoverride_reportas current behaviour.
git merge-treeagainst currentmainauto-merges (no conflict markers).BugseeModule.mmkeeps #30’s origin-tracker work; only the comment hunks from this branch apply. Rebase is still the cleaner history, not a merge blocker.No wrapper logic change. Appearance keys, option surface, and
feedback-spmsources are unchanged from beta3 (headers/module maps byte-identical per the PR; SPM platforms are.iOS(.v15)/.tvOS(.v15)/.visionOS(.v1)as the floor comments now say).docs-versionsalready matched the pin onmain; the extra design-doc sentences are accurate. Attributes case 3 (bugsee-cocoa#164) is the right conversion: liveupload()seeding is deterministic and was green on the simulator and on the XS merge with #30.Findings
- P2 —
examples/bare/e2e/exceptions.test.ts(~L1079, and the exc-root / Release-gate copies): JS-crash recovery is now a harditeven though this PR measured it missing on 2/5 hardware cycles. Details on the inline comment. Do not revert toit.failing.Checks actually run
- Three-dot and two-dot diffs vs
origin/main;git merge-treefor #30 overlap.- Surrounding e2e (
awaitBundlesdoes not throw;describeIosDevice/ CIlaunch.test.tsonly;report-handlerrecovery stillE2E_IOS_RECOVERY=1).- Published tag
7.0.0-beta4→e467f57c; zip checksum matches the committed pin.- CI on this head (partial):
lint, typecheck, unit,ios unit (BugseeRNSupport),ios (spm)green.ios e2e (simulator)/ios (cocoapods)were still pending; those jobs do not execute these device recovery cases.Overall
- Overall risk: Low (wrapper). Residual SDK crash-recovery miss on device is real but not introduced here — beta3 dropped the report 100% of the time; beta4 claims it and still misses when last-launch prefs are not flushed.
- Merge recommendation: Approve. This is the test/docs lock
#30needs. The P2 should be a retry (or an honest comment) so a hardwareexceptionsrun is not a coin flip; it does not need to block the pin.- Most important to fix: Bounded retry of
exc-observewhenoverride_report.plcrashis still on disk; stop stating recovery as always-on in the e2e comments and inlogUnhandledException.- Positives: Pin, resolved revision, and checksum agree with the published artifact. Attributes
#164conversion is justified and keeps the separate identityitso a harness miss cannot hide inside case 3. Floor comments now match the xcframeworkminos/ SPM manifest.Podfile.lockfinally recordsBugseeReactNativeFeedback.it.failingwas correctly abandoned for a case that now passes often enough to invert Jest.Sent by Cursor Automation: Bugsee code review
…e.lock #30 pinned 7.0.0-beta4. This is what that pin left behind. Verified against the published artifact: bugsee/spm 7.0.0-beta4 -> e467f57c, Bugsee-7.0.0-beta4.zip SHA-256 90a923ec...f6ec87b (= the Package.swift checksum), build stamp bb2f0e7e-12. Headers and module maps are byte-identical to beta3's in the ios-arm64 and simulator slices; every iOS slice is minos 15.0; the simulator slice still has no crash reporter. bugsee/feedback-spm 7.0.0-beta4 (f23afe34) has the same sources as beta3. - Comments that said Bugsee supports iOS below 15 (podspec, the Support manifest, platform-floors.ts and its test) now say what is true: its floor is 15.0 since beta2, re-checked on beta4. - Comments that cite the vendored header (report and feedback appearance) name beta4; the ones describing behaviour beta4 did not change say so (deleteCollectedDataOnDevice, the simulator slice without a crash reporter). - Podfile.lock: a plain `pod install`. The committed lock predated the feedback pod. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
…s reports 7.0.0-beta4 carries bugsee-cocoa#164 (fe857ad97): a new report starts from the global attributes and the user identifier. On the iOS simulator (6FA9B3E8, beta4 bb2f0e7e-12) the `it.failing` case 3 failed with "Failing test passed even though it was supposed to fail"; as a plain `it` all six cases pass. Android already ran it as a plain `it`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
…are plain it 7.0.0-beta4 claims override_report.plcrash ahead of the live crash (bugsee-cocoa #177, 7bca39c59). On the iPhone XS (KRSFT, iOS 18.7.9, SDK bb2f0e7e-12) the three `itIosDevice.failing` cases failed with "Failing test passed even though it was supposed to fail": - exc-fatal: the relaunch recovered one `crash` bundle, a ReactNativeWebException carrying "E2E fatal <nonce>"; - exc-root: one `crash` bundle, a ReactNativeWebException; - Release gate: the console ended, no RCTFatalException bundle, and exactly one ReactNativeWebException crash. They are plain `it` now. BugseeModule's logUnhandledException comment no longer says the stored report is dropped. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Review (cursor, #56): the exceptions comments and logUnhandledException's read as if beta4 always recovers override_report.plcrash. On the iPhone XS 2 of 5 relaunches left it unclaimed. The cases stay a plain `it` asserting the correct outcome; they do not relaunch again, because a second launch would hide the SDK miss the device run exists to show. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
d65bba2 to
ca60ea9
Compare
There was a problem hiding this comment.
Stale comment
Re-review at ca60ea9 (rebased onto main)
Prior P2 is fully addressed.
ca60ea9takes the honest-comment option from the first pass: the file header, the three device recovery cases, andlogUnhandledExceptionnow state that beta4 claimsoverride_report.plcrashintermittently (2 of 5 on the XS), name+hasVersionMatchForPendingReportas the lead, and say a secondexc-observeis deliberately not done because it would write last-launch prefs and hide the miss. That reasoning is right; retry would have been the wrong fix. Cases stay a plainit.The branch is rebased onto current
main(0de99f0, #30 + #55). Duplicate pin hunks dropped. Unique remaining work is comments,Podfile.lock, attributes/exceptions e2e locks, and floor/header wording. No wrapper logic change. No remaining P0–P3.
- Overall risk: Low
- Merge recommendation: Approve
- Most important issues to fix: None in this wrapper PR. Residual is the iOS SDK recovery miss on device, already filed with that team.
- Positives: Rebase is clean. Comments now match the measured hardware behaviour instead of the one green KRSFT run. Skipping a recovery retry keeps the device suite honest.
Sent by Cursor Automation: Bugsee code review
There was a problem hiding this comment.
Deep review: iOS 7.0.0-beta4 follow-up (ca60ea9, on top of #30)
Re-review after the synchronize that landed ca60ea9. #30 is on main (0de99f0 / d55c45e) and already pins 7.0.0-beta4 (e467f57c). This PR still has no wrapper logic change: it locks the e2e that the pin inverted, corrects floor/header comments, and records BugseeReactNativeFeedback in Podfile.lock.
Prior finding
P2 (exceptions recovery overstated as always-on) — fully addressed. exceptions.test.ts (file header, exc-fatal / exc-root / Release-gate) and logUnhandledException now say beta4 claims override_report.plcrash intermittently (2 of 5 on the XS), with +hasVersionMatchForPendingReport as the lead. The cases stay a plain it asserting the correct outcome. Skipping a second exc-observe is the right call: that launch would write last-launch prefs and hide the SDK miss these device cases exist to show.
What was checked this pass
- Three-dot diff
0de99f0...ca60ea9(15 files, comments / e2e inversion / lockfile only). - Surrounding harness:
awaitBundlesdoes not throw;describeIosDevice/describeIosReleasestay hardware-gated; CIios e2estill runs onlylaunch.test.ts. - Attributes case 3 (
bugsee-cocoa#164) is a plainiton both platforms; identity remains its own precedingit, so a harness miss cannot hide inside case 3. - Reporting P10 (
source.typeunknownvscode_upload) is correctly stillit.failing— that is not #164. report-handlercase 6 is stillE2E_IOS_RECOVERY=1/ simulator slice has no crash reporter (beta3 and beta4).- Floor comments now match the xcframework
minos 15.0/bugsee/spm.iOS(.v15). Podspec fallback stays RN's 15.1. Podfile.lock: adds the already-autolinked feedback pod;BugseeReactNativeSPEC CHECKSUM change is the podspec comment edit;PODFILE CHECKSUMunchanged.- Pin on this branch still
native-versions.json/Package.swift/Package.resolved7.0.0-beta4@e467f57c. - Did not re-run
yarn test/ e2e. Current CI on this head was still in progress at review time; the previous head's CI was cancelled by this push.
Residual (accepted, not re-filed)
A hardware exceptions / E2E_RELEASE=1 run can still go red when the SDK leaves override_report.plcrash unclaimed. That is now documented as an SDK finding, not a wrapper defect, and is out of CI.
Overall
- Overall risk: Low
- Merge recommendation: Approve. This is the test/docs lock
#30needs. No remaining P0–P3. - Most important to fix: Nothing in this PR. The remaining crash-recovery miss belongs with the iOS SDK team (
+hasVersionMatchForPendingReport/ last-launch prefs). - Positives: #164 conversion is justified and keeps the separate identity
it. Floor comments match the artifact.Podfile.lockfinally recordsBugseeReactNativeFeedback. Recovery comments no longer overclaim beta4.
Sent by Cursor Automation: Bugsee code review


Summary
The rest of the iOS SDK 7.0.0-beta4 adoption. It is rebased onto main, which now has #30 (merged as d55c45e) and #55.
#30 pinned beta4:
native-versions.json, theios/Supportmanifest andPackage.resolved(e467f57c), the feedback package's SPM pins,native-versions.test.ts, and the secure-rect / view-tree origin fix with thevideo.auxv2 e2e change. This PR's pin lines were byte-identical to #30's, so the rebase dropped them. Without #30, beta4 failssecure-componentandsecure-modalon iOS (they expect novideo.aux). That is fixed by #30. Those suites were run on a local merge of this branch and #30 before #30 landed.What this PR adds on top of the pin
Bugsee-7.0.0-beta4.zipreturns HTTP 200, and its SHA-25690a923ec…f6ec87bmatches thebugsee/spmchecksum. The headers and module maps are byte-identical to beta3's. Every iOS slice isminos 15.0. The simulator slice still has no crash reporter. Thefeedback-spmbeta4 sources are identical to beta3's.ios/Support/Package.swift,platform-floors.ts, its test). They said Bugsee supports iOS below 15. It has floored at 15.0 since beta2, and beta4 still does. The podspec floor (RN'smin_ios_version_supported, fallback 15.1) is unchanged and consistent.7.0.0-beta3references are updated where they describe the current pin or vendored header. Where they describe behaviour that beta4 did not change, they now say so. Historical records are left as they were.Podfile.lockwas regenerated with a plainpod install. The committed lock predated the feedback pod.it:attributescase 3: a new report carries the global attributes and identifier (bugsee-cocoa #164,fe857ad97).exceptionsexc-fatal, exc-root and the Release gate: the stored JS crash (override_report.plcrash) is recovered at the next launch (bugsee-cocoa #177,7bca39c59).BugseeModulecomment that said this report is dropped is corrected.Behaviour evaluated in beta4, with no wrapper change needed
Session not initialized. - Could not connect to the server.againsthttps://127.0.0.1:9.launch.test.tsreached Launched in about 1 s on the simulator.spanIdas opaque.apmpasses on the simulator and the XS.reportingpasses.Test plan
yarn test(3022 passed, 12 skipped),yarn lint,yarn typecheckBugseeRNSupportXCTests againstspm @ 7.0.0-beta4: 291 tests, 0 failuresgeneric/platform=iOS,spmandfeedback-spm @ 7.0.0-beta4, embed assertion OK)6FA9B3E8(iOS 26.5,Bugsee IOS SDK ver:7.0.0-beta4 build:bb2f0e7e-12), full suite. Everything passes except:secure-componentandsecure-modal:video.auxv2, fixed by iOS: keep secure rectangles and the view tree on windows away from the screen's origin #30. They pass on the merge with iOS: keep secure rectangles and the view tree on windows away from the screen's origin #30, along withview-treeandblackout.network"the retained bundle contains the JS fetch": red on beta3 too. The cause was the test URL containing "bugsee", which fix(e2e): iOS records the JS fetch; the test url said "bugsee" #55 (now on main) fixed. It is not a beta4 change.E2E_IOS_RECOVERY=1, on the merge with iOS: keep secure rectangles and the view tree on windows away from the screen's origin #30. Everything passes exceptnetwork(as above) andexceptions"debug IDs travel as a map". That one is a wrapper issue that predates beta4, described below. Release gate (E2E_RELEASE=1): process died, noRCTFatalExceptionbundle, exactly oneReactNativeWebExceptioncrash recovered.Findings
override_report.plcrashinLibrary/Caches/com.bugsee.crashreporter/<bundle id>/. In 2 of the 5, the relaunch did not claim it. The file was still there afterwards, no report was dispatched, and no bundle was written.report-handlernative-crash recovery case (+testCrash,live_report.plcrash) shows the same symptom: it failed in 3 of 5 full runs on beta4 and 3 of 4 on beta30d9c9d0a-9, and passes when run on its own.bugsee_lastLaunchSDKVersionKey/bugsee_lastLaunchAppVersionKey, the inputs to+hasVersionMatchForPendingReport) was usually not on disk yet after the crash run. One no-plist iteration still recovered, so this is a lead, not a proven cause.itand can be red on a device run. They deliberately do not relaunch a second time, because that would hide the miss. The comments say so (review fix ca60ea9).main.jsbundle(Debug on a device without Metro),payload.debug_idsis keyed by the raw file path, butframes[].data.sourceis cleaned (cleanSourcestrips the.app/prefix). Thedebug_idskey therefore does not equal the frame source. The backend uses only the map's values, so symbolication is unaffected.🤖 Generated with Claude Code