From 1a90e3edf45fe255d892d0cb622952572032a0d0 Mon Sep 17 00:00:00 2001 From: Denis Sheikherev Date: Wed, 14 Oct 2026 18:08:57 +0700 Subject: [PATCH 1/3] docs(ios): logException takes domain, skipFrames and labels; BugseeExceptionLoggingOptions is gone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 7.x migration guide gets §7.5 with the 6.x to 7.x mapping and examples, the cheat sheet gets the logException rows, and the logAssert row no longer points at the removed options: overload. The iOS 7.x agent skill's grep and tables follow. SDK change: bugsee/bugsee-cocoa#233 (issue bugsee/bugsee-cocoa#226). Co-Authored-By: Claude Opus 5.5 Change-Id: I623e39ed117ec709efcb7b3c5283ac752b8bc384 --- docs/ai/agent-skills/sdk/ios/v7/SKILL.md | 7 ++- docs/sdk/ios/v7/migration.mdx | 69 +++++++++++++++++++++++- 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/docs/ai/agent-skills/sdk/ios/v7/SKILL.md b/docs/ai/agent-skills/sdk/ios/v7/SKILL.md index e8158ea..3569829 100644 --- a/docs/ai/agent-skills/sdk/ios/v7/SKILL.md +++ b/docs/ai/agent-skills/sdk/ios/v7/SKILL.md @@ -55,7 +55,7 @@ find . -name "AppDelegate.swift" -o -name "AppDelegate.m" 2>/dev/null | head -3 grep -r "@main" --include="*.swift" 2>/dev/null | head -3 # 6.x call sites that will not compile against 7.x -grep -rnE "showReportController|showFeedbackController|setDefaultFeedbackGreeting|didReceiveNewFeedback|setView:.*asHidden|setView\(.*asHidden|addSecureRect\b|removeSecureRect\b|removeAllSecureRects|getAllSecureRects|isViewHidden|registerEvent|traceKey|registerNetworkEvent|removeNetworkEventFilter|setEmail|getEmail|clearEmail|getDeviceId|logAssert|hideKeyboard|testExceptionCrash|testSignalCrash|setDefaultCrashPriority|setDefaultErrorPriority|setDefaultBugPriority|Bugsee\.pause|Bugsee\.resume|\[Bugsee pause\]|\[Bugsee resume\]" \ +grep -rnE "showReportController|showFeedbackController|setDefaultFeedbackGreeting|didReceiveNewFeedback|setView:.*asHidden|setView\(.*asHidden|addSecureRect\b|removeSecureRect\b|removeAllSecureRects|getAllSecureRects|isViewHidden|registerEvent|traceKey|registerNetworkEvent|removeNetworkEventFilter|setEmail|getEmail|clearEmail|getDeviceId|logAssert|hideKeyboard|testExceptionCrash|testSignalCrash|BugseeExceptionLoggingOptions|BugseeMergingRulesSkipFramesKey|logException.*options:|setDefaultCrashPriority|setDefaultErrorPriority|setDefaultBugPriority|Bugsee\.pause|Bugsee\.resume|\[Bugsee pause\]|\[Bugsee resume\]" \ --include="*.swift" --include="*.m" --include="*.mm" . 2>/dev/null | grep -v "/Pods/" | head -40 # Raw option-key strings — the ONLY silent break in 7.x @@ -172,6 +172,9 @@ Raising the deployment target to iOS 15 is a prerequisite for all of the above. | `deleteCollectedDataOnDevice:` | `deleteCollectedDataOnDevice:completion:` | | `uploadWithSummary:…:includeVideo:` | `uploadWithSummary:description:severity:labels:` | | `logError:labels:includeVideo:` | `logError:labels:` | +| `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:labels:completion:` | +| `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:labels:completion:` | +| `BugseeExceptionLoggingOptions` (`exceptionDomain`, `mergingRules[BugseeMergingRulesSkipFramesKey]`, `labels`) | `domain:` / `skipFrames:` / `labels:` parameters of `logException`; `includeVideo` has no replacement | | Swift `Bugsee.launch(token:options:)` _(dictionary)_ | Swift `Bugsee.launch(token:dictionaryOptions:)` | | Swift `Bugsee.relaunch(options:)` _(dictionary)_ | Swift `Bugsee.relaunch(dictionaryOptions:)` | | Swift `Bugsee.uploadReport(_:)` | Swift `Bugsee.upload(_:)` | @@ -189,7 +192,7 @@ Raising the deployment target to iOS 15 is a prerequisite for all of the above. | `isViewHidden:` | — | | `hideKeyboard:` | — | | `setInternalSecureRectangles:` | — | -| `logAssert:withLocation:` | Use `logException:reason:options:completion:` | +| `logAssert:withLocation:` | Use `logException:reason:completion:` | | `log:level:timestamp:` | `log:level:enforceFiltering:` takes the slot but does something different — it opts the message into the log filter | | `setDefaultCrashPriority:` | `BugseeOptionReportingDefaultCrashPriority` at launch | | `setDefaultErrorPriority:` | `BugseeOptionReportingDefaultErrorPriority` at launch | diff --git a/docs/sdk/ios/v7/migration.mdx b/docs/sdk/ios/v7/migration.mdx index 46427b1..ede3a86 100644 --- a/docs/sdk/ios/v7/migration.mdx +++ b/docs/sdk/ios/v7/migration.mdx @@ -676,6 +676,70 @@ func bugsee(attachmentsFor report: BugseeReport) -> [BugseeAttachment] { +### 7.5 `BugseeExceptionLoggingOptions` is gone + +`logException` takes the exception domain, the number of frames to skip and the labels as +parameters; `domain` and `skipFrames` match Android 7.x. `BugseeExceptionLoggingOptions`, +`BugseeMergingRulesSkipFramesKey` and both `options:` overloads are removed. + +| 6.x | 7.x | +| --- | --- | +| `logException:options:completion:` with `nil` options | `logException:completion:` | +| `logException:reason:options:completion:` with `nil` options | `logException:reason:completion:` | +| `logException:options:completion:` with options | `logException:domain:skipFrames:labels:completion:` | +| `logException:reason:options:completion:` with options | `logException:reason:domain:skipFrames:labels:completion:` | +| `exceptionDomain` | `domain:` | +| `mergingRules[BugseeMergingRulesSkipFramesKey]` | `skipFrames:` | +| `labels` | `labels:` | +| `includeVideo` | — leaving the video out of a single report is not supported | + +A 6.x call that passed an options object without setting `includeVideo` to `YES` filed its +report without video. In 7.x the same call files it with video. + +`domain` is recorded with the report. `skipFrames` is how many top frames of the stack +recorded for the report are left out of its signature, which groups reports into issues; +a negative value counts as `0`. + + + + +```objectivec +// 6.x +BugseeExceptionLoggingOptions *options = [BugseeExceptionLoggingOptions new]; +options.exceptionDomain = @"Payments"; +options.labels = @[@"checkout"]; +options.mergingRules = @{BugseeMergingRulesSkipFramesKey : @1}; +[Bugsee logException:exception options:options completion:nil]; + +// 7.x +[Bugsee logException:exception + domain:@"Payments" + skipFrames:1 + labels:@[@"checkout"] + completion:nil]; +``` + + + + +```swift +// 6.x +let options = BugseeExceptionLoggingOptions() +options.exceptionDomain = "Payments" +options.labels = ["checkout"] +options.mergingRules = [BugseeMergingRulesSkipFramesKey: 1] +Bugsee.logException(exception: exception, options: options, completion: nil) + +// 7.x +Bugsee.logException(exception: exception, domain: "Payments", skipFrames: 1, + labels: ["checkout"], completion: nil) +``` + + + + +On simulators and Mac Catalyst `logException` files nothing; its completion is still called. + --- ## 8. Privacy and secure areas @@ -1013,6 +1077,9 @@ Renamed — a plain search and replace does most of these. | `deleteCollectedDataOnDevice:` | `deleteCollectedDataOnDevice:completion:` | | `uploadWithSummary:…:includeVideo:` | `uploadWithSummary:description:severity:labels:` | | `logError:labels:includeVideo:` | `logError:labels:` | +| `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:labels:completion:` — see [§7.5](#75-bugseeexceptionloggingoptions-is-gone) | +| `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:labels:completion:` | +| `BugseeExceptionLoggingOptions` | `domain:` / `skipFrames:` / `labels:` parameters of `logException` | | Swift `Bugsee.launch(token:options:)` _(dictionary)_ | Swift `Bugsee.launch(token:dictionaryOptions:)` | | Swift `Bugsee.relaunch(options:)` _(dictionary)_ | Swift `Bugsee.relaunch(dictionaryOptions:)` | | Swift `Bugsee.uploadReport(_:)` | Swift `Bugsee.upload(_:)` | @@ -1031,7 +1098,7 @@ Removed with no direct replacement. | `isViewHidden:` | — | | `hideKeyboard:` | — | | `setInternalSecureRectangles:` | — | -| `logAssert:withLocation:` / `BUGSEE_ASSERT` | Use `logException:reason:options:completion:` | +| `logAssert:withLocation:` / `BUGSEE_ASSERT` | Use `logException:reason:completion:` | | `log:level:timestamp:` | `log:level:requiresFiltering:` takes the slot but does something different — it opts the message into the log filter | | `setDefaultCrashPriority:` | `BugseeOptionReportingDefaultCrashPriority` at launch | | `setDefaultErrorPriority:` | `BugseeOptionReportingDefaultErrorPriority` at launch | From 04aeeb47172695262e06f82344d5ee46ab413a99 Mon Sep 17 00:00:00 2001 From: Denis Sheikherev Date: Wed, 14 Oct 2026 21:57:35 +0700 Subject: [PATCH 2/3] docs(ios): logException takes no labels; label the report in the delegate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SDK dropped labels: from logException to match Android (bugsee/bugsee-cocoa#233). §7.5 maps 6.x options.labels to addLabels: on the report in bugseeAttachmentsForReport:, with an example, and says that the delegate is asked about every error report, not one call. The cheat sheet and the iOS 7.x agent skill follow. Co-Authored-By: Claude Opus 5.5 Change-Id: I080152ccb30d2dbda693c899424d75dc79a9c017 --- docs/ai/agent-skills/sdk/ios/v7/SKILL.md | 6 +-- docs/sdk/ios/v7/migration.mdx | 47 ++++++++++++++++-------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/docs/ai/agent-skills/sdk/ios/v7/SKILL.md b/docs/ai/agent-skills/sdk/ios/v7/SKILL.md index 3569829..515fda7 100644 --- a/docs/ai/agent-skills/sdk/ios/v7/SKILL.md +++ b/docs/ai/agent-skills/sdk/ios/v7/SKILL.md @@ -172,9 +172,9 @@ Raising the deployment target to iOS 15 is a prerequisite for all of the above. | `deleteCollectedDataOnDevice:` | `deleteCollectedDataOnDevice:completion:` | | `uploadWithSummary:…:includeVideo:` | `uploadWithSummary:description:severity:labels:` | | `logError:labels:includeVideo:` | `logError:labels:` | -| `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:labels:completion:` | -| `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:labels:completion:` | -| `BugseeExceptionLoggingOptions` (`exceptionDomain`, `mergingRules[BugseeMergingRulesSkipFramesKey]`, `labels`) | `domain:` / `skipFrames:` / `labels:` parameters of `logException`; `includeVideo` has no replacement | +| `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:completion:` | +| `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:completion:` | +| `BugseeExceptionLoggingOptions` (`exceptionDomain`, `mergingRules[BugseeMergingRulesSkipFramesKey]`, `labels`) | `domain:` / `skipFrames:` parameters of `logException`; labels via `addLabels:` on the report in `bugseeAttachmentsForReport:` (applies to every error report, not one call); `includeVideo` has no replacement | | Swift `Bugsee.launch(token:options:)` _(dictionary)_ | Swift `Bugsee.launch(token:dictionaryOptions:)` | | Swift `Bugsee.relaunch(options:)` _(dictionary)_ | Swift `Bugsee.relaunch(dictionaryOptions:)` | | Swift `Bugsee.uploadReport(_:)` | Swift `Bugsee.upload(_:)` | diff --git a/docs/sdk/ios/v7/migration.mdx b/docs/sdk/ios/v7/migration.mdx index ede3a86..699c940 100644 --- a/docs/sdk/ios/v7/migration.mdx +++ b/docs/sdk/ios/v7/migration.mdx @@ -678,19 +678,19 @@ func bugsee(attachmentsFor report: BugseeReport) -> [BugseeAttachment] { ### 7.5 `BugseeExceptionLoggingOptions` is gone -`logException` takes the exception domain, the number of frames to skip and the labels as -parameters; `domain` and `skipFrames` match Android 7.x. `BugseeExceptionLoggingOptions`, -`BugseeMergingRulesSkipFramesKey` and both `options:` overloads are removed. +`logException` takes the exception domain and the number of frames to skip as parameters, as +on Android 7.x. `BugseeExceptionLoggingOptions`, `BugseeMergingRulesSkipFramesKey` and both +`options:` overloads are removed. | 6.x | 7.x | | --- | --- | | `logException:options:completion:` with `nil` options | `logException:completion:` | | `logException:reason:options:completion:` with `nil` options | `logException:reason:completion:` | -| `logException:options:completion:` with options | `logException:domain:skipFrames:labels:completion:` | -| `logException:reason:options:completion:` with options | `logException:reason:domain:skipFrames:labels:completion:` | +| `logException:options:completion:` with options | `logException:domain:skipFrames:completion:` | +| `logException:reason:options:completion:` with options | `logException:reason:domain:skipFrames:completion:` | | `exceptionDomain` | `domain:` | | `mergingRules[BugseeMergingRulesSkipFramesKey]` | `skipFrames:` | -| `labels` | `labels:` | +| `labels` | `addLabels:` on the report in `bugseeAttachmentsForReport:` — see [§7.4](#74-the-report-the-delegate-receives-is-live) | | `includeVideo` | — leaving the video out of a single report is not supported | A 6.x call that passed an options object without setting `includeVideo` to `YES` filed its @@ -712,11 +712,15 @@ options.mergingRules = @{BugseeMergingRulesSkipFramesKey : @1}; [Bugsee logException:exception options:options completion:nil]; // 7.x -[Bugsee logException:exception - domain:@"Payments" - skipFrames:1 - labels:@[@"checkout"] - completion:nil]; +[Bugsee logException:exception domain:@"Payments" skipFrames:1 completion:nil]; + +// 7.x labels, in your BugseeDelegate +- (NSArray *)bugseeAttachmentsForReport:(BugseeReport *)report { + if ([report.type isEqualToString:BugseeReportTypeError]) { + [report addLabels:@[@"checkout"]]; + } + return @[]; +} ``` @@ -731,13 +735,24 @@ options.mergingRules = [BugseeMergingRulesSkipFramesKey: 1] Bugsee.logException(exception: exception, options: options, completion: nil) // 7.x -Bugsee.logException(exception: exception, domain: "Payments", skipFrames: 1, - labels: ["checkout"], completion: nil) +Bugsee.logException(exception: exception, domain: "Payments", skipFrames: 1, completion: nil) + +// 7.x labels, in your BugseeDelegate +func bugsee(attachmentsFor report: BugseeReport) -> [BugseeAttachment] { + if report.type == BugseeReportTypeError { + report.addLabels(["checkout"]) + } + return [] +} ``` +The delegate is asked about every report. `type` tells an error report from a bug or crash +report, but not a `logException` report from a `logError` report or from an error report +Bugsee files on its own, so a label added this way goes on all of them. + On simulators and Mac Catalyst `logException` files nothing; its completion is still called. --- @@ -1077,9 +1092,9 @@ Renamed — a plain search and replace does most of these. | `deleteCollectedDataOnDevice:` | `deleteCollectedDataOnDevice:completion:` | | `uploadWithSummary:…:includeVideo:` | `uploadWithSummary:description:severity:labels:` | | `logError:labels:includeVideo:` | `logError:labels:` | -| `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:labels:completion:` — see [§7.5](#75-bugseeexceptionloggingoptions-is-gone) | -| `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:labels:completion:` | -| `BugseeExceptionLoggingOptions` | `domain:` / `skipFrames:` / `labels:` parameters of `logException` | +| `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:completion:` — see [§7.5](#75-bugseeexceptionloggingoptions-is-gone) | +| `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:completion:` | +| `BugseeExceptionLoggingOptions` | `domain:` / `skipFrames:` parameters of `logException`; labels through the delegate's report | | Swift `Bugsee.launch(token:options:)` _(dictionary)_ | Swift `Bugsee.launch(token:dictionaryOptions:)` | | Swift `Bugsee.relaunch(options:)` _(dictionary)_ | Swift `Bugsee.relaunch(dictionaryOptions:)` | | Swift `Bugsee.uploadReport(_:)` | Swift `Bugsee.upload(_:)` | From c4b3150f5403fb6b2c195221ffb6461841a1493f Mon Sep 17 00:00:00 2001 From: Denis Sheikherev Date: Thu, 15 Oct 2026 00:13:47 +0700 Subject: [PATCH 3/3] docs(ios): logError:labels: is gone; label the report in the delegate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SDK dropped logError:labels: (bugsee/bugsee-cocoa#233). §7.2 now covers it, with a 6.x/7.x example, and its heading says so; the cheat sheet, the iOS 7.x agent skill's table and its "will not compile" grep follow. Co-Authored-By: Claude Opus 5.5 Change-Id: I089ec5871c24fbd3a7e8803fc54fe87f7800b46a --- docs/ai/agent-skills/sdk/ios/v7/SKILL.md | 4 ++-- docs/sdk/ios/v7/migration.mdx | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/ai/agent-skills/sdk/ios/v7/SKILL.md b/docs/ai/agent-skills/sdk/ios/v7/SKILL.md index 515fda7..b60c583 100644 --- a/docs/ai/agent-skills/sdk/ios/v7/SKILL.md +++ b/docs/ai/agent-skills/sdk/ios/v7/SKILL.md @@ -55,7 +55,7 @@ find . -name "AppDelegate.swift" -o -name "AppDelegate.m" 2>/dev/null | head -3 grep -r "@main" --include="*.swift" 2>/dev/null | head -3 # 6.x call sites that will not compile against 7.x -grep -rnE "showReportController|showFeedbackController|setDefaultFeedbackGreeting|didReceiveNewFeedback|setView:.*asHidden|setView\(.*asHidden|addSecureRect\b|removeSecureRect\b|removeAllSecureRects|getAllSecureRects|isViewHidden|registerEvent|traceKey|registerNetworkEvent|removeNetworkEventFilter|setEmail|getEmail|clearEmail|getDeviceId|logAssert|hideKeyboard|testExceptionCrash|testSignalCrash|BugseeExceptionLoggingOptions|BugseeMergingRulesSkipFramesKey|logException.*options:|setDefaultCrashPriority|setDefaultErrorPriority|setDefaultBugPriority|Bugsee\.pause|Bugsee\.resume|\[Bugsee pause\]|\[Bugsee resume\]" \ +grep -rnE "showReportController|showFeedbackController|setDefaultFeedbackGreeting|didReceiveNewFeedback|setView:.*asHidden|setView\(.*asHidden|addSecureRect\b|removeSecureRect\b|removeAllSecureRects|getAllSecureRects|isViewHidden|registerEvent|traceKey|registerNetworkEvent|removeNetworkEventFilter|setEmail|getEmail|clearEmail|getDeviceId|logAssert|hideKeyboard|testExceptionCrash|testSignalCrash|BugseeExceptionLoggingOptions|BugseeMergingRulesSkipFramesKey|logException.*options:|logError:[^;]*labels:|logError\(error:.*labels:|setDefaultCrashPriority|setDefaultErrorPriority|setDefaultBugPriority|Bugsee\.pause|Bugsee\.resume|\[Bugsee pause\]|\[Bugsee resume\]" \ --include="*.swift" --include="*.m" --include="*.mm" . 2>/dev/null | grep -v "/Pods/" | head -40 # Raw option-key strings — the ONLY silent break in 7.x @@ -171,7 +171,7 @@ Raising the deployment target to iOS 15 is a prerequisite for all of the above. | `testExceptionCrash` / `testSignalCrash` | `testCrash` | | `deleteCollectedDataOnDevice:` | `deleteCollectedDataOnDevice:completion:` | | `uploadWithSummary:…:includeVideo:` | `uploadWithSummary:description:severity:labels:` | -| `logError:labels:includeVideo:` | `logError:labels:` | +| `logError:labels:includeVideo:` / `logError:labels:` | `logError:`; labels via `addLabels:` on the report in `bugseeAttachmentsForReport:` | | `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:completion:` | | `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:completion:` | | `BugseeExceptionLoggingOptions` (`exceptionDomain`, `mergingRules[BugseeMergingRulesSkipFramesKey]`, `labels`) | `domain:` / `skipFrames:` parameters of `logException`; labels via `addLabels:` on the report in `bugseeAttachmentsForReport:` (applies to every error report, not one call); `includeVideo` has no replacement | diff --git a/docs/sdk/ios/v7/migration.mdx b/docs/sdk/ios/v7/migration.mdx index 699c940..1c17f1a 100644 --- a/docs/sdk/ios/v7/migration.mdx +++ b/docs/sdk/ios/v7/migration.mdx @@ -588,10 +588,12 @@ through. See [§9.3](#93-breadcrumbs). | `showReportControllerWithSummary:description:severity:labels:` | `showReportDialogWithSummary:description:severity:labels:` | | _(not available)_ | `showReportDialogWithSummary:description:` | -### 7.2 `includeVideo:` overloads are gone +### 7.2 `includeVideo:` overloads and `logError:labels:` are gone -Both `uploadWithSummary:…:includeVideo:` and `logError:labels:includeVideo:` lose their -last parameter. Drop the argument; the shorter overloads already exist in 6.x. +`uploadWithSummary:…:includeVideo:` loses its last parameter. Drop the argument; the shorter +overload already exists in 6.x. `logError:labels:includeVideo:` and `logError:labels:` are +gone too: call `logError:`, and add labels in `bugseeAttachmentsForReport:` (see +[§7.5](#75-bugseeexceptionloggingoptions-is-gone) for how far such a label reaches). @@ -603,6 +605,12 @@ last parameter. Drop the argument; the shorter overloads already exist in 6.x. // 7.x [Bugsee uploadWithSummary:@"s" description:@"d" severity:BugseeSeverityHigh labels:nil]; + +// 6.x +[Bugsee logError:error labels:@[@"checkout"]]; + +// 7.x: labels in bugseeAttachmentsForReport:, see §7.5 +[Bugsee logError:error]; ``` @@ -615,6 +623,12 @@ Bugsee.upload(summary: "s", description: "d", severity: BugseeSeverityHigh, // 7.x Bugsee.upload(summary: "s", description: "d", severity: BugseeSeverityHigh, labels: nil) + +// 6.x +Bugsee.logError(error: error, labels: ["checkout"]) + +// 7.x: labels in bugsee(attachmentsFor:), see §7.5 +Bugsee.logError(error: error) ``` @@ -1091,7 +1105,7 @@ Renamed — a plain search and replace does most of these. | `testExceptionCrash` / `testSignalCrash` | `testCrash` | | `deleteCollectedDataOnDevice:` | `deleteCollectedDataOnDevice:completion:` | | `uploadWithSummary:…:includeVideo:` | `uploadWithSummary:description:severity:labels:` | -| `logError:labels:includeVideo:` | `logError:labels:` | +| `logError:labels:includeVideo:` / `logError:labels:` | `logError:`; labels through the delegate's report — see [§7.2](#72-includevideo-overloads-and-logerrorlabels-are-gone) | | `logException:options:completion:` | `logException:completion:` / `logException:domain:skipFrames:completion:` — see [§7.5](#75-bugseeexceptionloggingoptions-is-gone) | | `logException:reason:options:completion:` | `logException:reason:completion:` / `logException:reason:domain:skipFrames:completion:` | | `BugseeExceptionLoggingOptions` | `domain:` / `skipFrames:` parameters of `logException`; labels through the delegate's report |