Skip to content

chore(deps): update Cocoa SDK to v9.28.0 - #6693

Merged
antonis merged 1 commit into
mainfrom
deps/scripts/update-cocoa.sh
Sep 10, 2026
Merged

chore(deps): update Cocoa SDK to v9.28.0#6693
antonis merged 1 commit into
mainfrom
deps/scripts/update-cocoa.sh

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Bumps scripts/update-cocoa.sh from 9.27.0 to 9.28.0.

Auto-generated by a dependency updater.

Changelog

9.28.0

Features

  • Add a device.event breadcrumb (SYSTEM_CLOCK_CHANGE) when the system clock changes, for example due to a manual time change or NTP sync (#8946)

  • Add Hints API with beforeSendWithHint and beforeBreadcrumbWithHint callbacks (#8942)

    Use hints to inspect the original source material that produced an event or breadcrumb, and to
    add or remove attachments before they are sent:

    SentrySDK.start { options in
        options.beforeSendWithHint = { event, hint in
            if let error = hint.originalError as? NSError,
               error.domain == NSURLErrorDomain {
                return nil // drop network errors
            }
            return event
        }
        options.beforeBreadcrumbWithHint = { breadcrumb, hint in
            if hint.urlRequest?.url?.host == "internal.example.com" {
                return nil // redact internal traffic
            }
            return breadcrumb
        }
    }
  • Add hint parameter to public capture methods on SentrySDK (#8955)

    Pass a Hint when capturing events or errors to attach metadata that beforeSendWithHint
    can inspect:

    let hint = Hint()
    hint.setHintValue("checkout", forKey: "flow")
    SentrySDK.capture(error: error, hint: hint)
  • Auto-populate HTTP request and response on hints for network breadcrumbs and HTTP client errors (#8967)

    Network breadcrumbs and HTTP client error events now include the originating URLRequest and
    HTTPURLResponse on the hint, so callbacks can inspect status codes, headers, or URLs:

    options.beforeBreadcrumbWithHint = { breadcrumb, hint in
        if let statusCode = hint.httpResponse?.statusCode,
           statusCode == 401 {
            breadcrumb.level = .warning
        }
        return breadcrumb
    }
  • Include screenshot and view hierarchy attachments in hint.attachments before beforeSendWithHint runs (#8989)

    Screenshot and view hierarchy attachments are now available in hint.attachments when
    beforeSendWithHint is called, so they can be inspected or removed:

    options.beforeSendWithHint = { event, hint in
        hint.attachments = hint.attachments.filter { $0.filename != "screenshot.png" }
        return event
    }

Fixes

  • Prevent relevant view controller traversal from recursively loading parent views and invoking viewDidLoad twice when tracing is enabled. (#8941)
  • Classify MetricKit hangs over 500 ms as errors. (#8948)
  • Prevent Session Replay video encoding from reusing pixel buffers retained by AVFoundation. (#8950)
  • Prevent deadlock when a signal interrupts memory allocation by avoiding thread-local storage and unsafe formatting during signal handling. (#8271)
  • Remove invalid DWARF references from SentryObjC-Static XCFrameworks to prevent dsymutil missing-object warnings. (#8979)

Internal

  • Fix SentrySDK.internal.replay.replayId returning nil for buffered replays (#8976)

  • Log a warning when SentrySDK.start is called again without close(). Reinitialization still runs and remains unsupported (#8928)

  • Expose continuous profiling configuration on SentryObjCOptions via configureProfiling and SentryObjCProfileOptions (#8937)

  • Synchronize access to the current trace profiler in debug and test builds. (#8936)

  • Fix EXC_BAD_ACCESS in SentryNetworkTracker caused by repeated reads of the volatile NSURLSessionTask.currentRequest property (#8058)

  • Collect only unique UIWindow references (#4159)

Full CHANGELOG.md diff
 -1,5 +1,83 
 # Changelog
 
+## 9.28.0
+
+### Features
+
+- Add a `device.event` breadcrumb (`SYSTEM_CLOCK_CHANGE`) when the system clock changes, for example due to a manual time change or NTP sync ([#8946](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8946))
+- Add Hints API with `beforeSendWithHint` and `beforeBreadcrumbWithHint` callbacks ([#8942](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8942))
+
+  Use hints to inspect the original source material that produced an event or breadcrumb, and to
+  add or remove attachments before they are sent:
+
+  ```swift
+  SentrySDK.start { options in
+      options.beforeSendWithHint = { event, hint in
+          if let error = hint.originalError as? NSError,
+             error.domain == NSURLErrorDomain {
+              return nil // drop network errors
+          }
+          return event
+      }
+      options.beforeBreadcrumbWithHint = { breadcrumb, hint in
+          if hint.urlRequest?.url?.host == "internal.example.com" {
+              return nil // redact internal traffic
+          }
+          return breadcrumb
+      }
+  }
+  ```
+
+- Add hint parameter to public capture methods on `SentrySDK` ([#8955](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8955))
+
+  Pass a `Hint` when capturing events or errors to attach metadata that `beforeSendWithHint`
+  can inspect:
+
+  ```swift
+  let hint = Hint()
+  hint.setHintValue("checkout", forKey: "flow")
+  SentrySDK.capture(error: error, hint: hint)
+  ```
+
+- Auto-populate HTTP request and response on hints for network breadcrumbs and HTTP client errors ([#8967](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8967))
+
+  Network breadcrumbs and HTTP client error events now include the originating `URLRequest` and
+  `HTTPURLResponse` on the hint, so callbacks can inspect status codes, headers, or URLs:
+
+  ```swift
+  options.beforeBreadcrumbWithHint = { breadcrumb, hint in
+      if let statusCode = hint.httpResponse?.statusCode,
+         statusCode == 401 {
+          breadcrumb.level = .warning
+      }
+      return breadcrumb
+  }
+  ```
+
+- Include screenshot and view hierarchy attachments in `hint.attachments` before `beforeSendWithHint` runs ([#8989](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8989))
+
+  Screenshot and view hierarchy attachments are now available in `hint.attachments` when
+  `beforeSendWithHint` is called, so they can be inspected or removed:
+
+  ```swift
+  options.beforeSendWithHint = { event, hint in
+      hint.attachments = hint.attachments.filter { $0.filename != "screenshot.png" }
+      return event
+  }
+  ```
+
+### Fixes
+
+- Prevent relevant view controller traversal from recursively loading parent views and invoking `viewDidLoad` twice when tracing is enabled. ([#8941](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8941))
+- Classify MetricKit hangs over 500 ms as errors. ([#8948](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8948))
+- Prevent Session Replay video encoding from reusing pixel buffers retained by AVFoundation. ([#8950](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8950))
+- Prevent deadlock when a signal interrupts memory allocation by avoiding thread-local storage and unsafe formatting during signal handling. ([#8271](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8271))
+- Remove invalid DWARF references from `SentryObjC-Static` XCFrameworks to prevent `dsymutil` missing-object warnings. ([#8979](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8979))
+
+### Internal
+
+- Fix `SentrySDK.internal.replay.replayId` returning nil for buffered replays ([#8976](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8976))
+
 ## 9.27.0
 
 > [!NOTE]
 -20,22 +98,18 
   - `pause()` suspends recording until `resume()` and remains paused across background and foreground transitions and automatic replay restarts in the same process.
   - `resume()` continues the same manually paused replay.
   - `flush()` sends the current replay data to Sentry, or starts a full-session replay when recording is stopped.
-
-### Improvements
-
-- Install idle Session Replay recovery infrastructure at zero sample rates. ([#8865](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8865))
-
-### Features
-
 - Copy `app.vitals.start.type` and `app.vitals.start.screen` onto standalone `app.start` children, including `app.start.extended` and user descendants ([#8888](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8888))
 - Add `maxFeatureFlags` option to configure how many feature flag evaluations the scope retains, matching sentry-java. Defaults to 100 ([#8858](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8858))
+- Log a warning when `SentrySDK.start` is called again without `close()`. Reinitialization still runs and remains unsupported ([#8928](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8928))
 - Add `SentrySDK.internal.envelope.captureNonTerminating` for hybrid SDKs, which keeps the current session running and reports it with the `unhandled` status when an unhandled exception doesn't terminate the process ([#8654](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8654))
 - Add `SentrySDK.internal.envelope.updateSessionForDroppedEventNonTerminating` so hybrid SDKs can update the native session when an error is dropped by sampling, without sending an envelope ([#8907](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8907))
+- Expose continuous profiling configuration on `SentryObjCOptions` via `configureProfiling` and `SentryObjCProfileOptions` ([#8937](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8937))
 
 ### Fixes
 
 - Silence spurious ERROR log in `SentryCrashCxaThrowSwapper` for empty sections ([#8915](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8915))
 - Stop recording touch events while Session Replay is paused. ([#8887](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8887))
+- Synchronize access to the current trace profiler in debug and test builds. ([#8936](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8936))
 
 ### Internal
 
 -179,16 +253,13 
 ### Fixes
 
 - Fix rate limiting all data categories when data category rate-limit is active. ([#8324](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8324))
+- Fix EXC_BAD_ACCESS in SentryNetworkTracker caused by repeated reads of the volatile `NSURLSessionTask.currentRequest` property ([#8058](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8058))
 
 ### Features
 
 - Record log_byte client reports ([#8186](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8186))
 - Add scope feature flag API ([#8147](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8147))
 
-### Fixes
-
-- Fix EXC_BAD_ACCESS in SentryNetworkTracker caused by repeated reads of the volatile `NSURLSessionTask.currentRequest` property ([#8058](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/8058))
-
 ## 9.19.1
 
 ### Fixes
 -2218,15 +2289,12  This bug caused unhandled/crash events to have the unhandled property and mach i
 
 - Add `reportAccessibilityIdentifier` option ([#4183](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/4183))
 - Record dropped spans ([#4172](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/4172))
+- Collect only unique UIWindow references ([#4159](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/4159))
 
 ### Fixes
 
 - Session replay crash when writing the replay ([#4186](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/4186))
 
-### Features
-
-- Collect only unique UIWindow references ([#4159](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/4159))
-
 ### Deprecated
 
 - options.enableTracing was deprecated. Use options.tracesSampleRate or options.tracesSampler instead. ([#4182](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/4182))
 -3034,8 +3102,6  This change might mark 3rd party library frames as in-app, which the SDK previou
 This version adds a dependency on Swift.
 We renamed the default branch from `master` to `main`. We are going to keep the `master` branch for backwards compatibility for package managers pointing to the `master` branch.
 
-### Features
-
 - Properly demangle Swift class name ([#2162](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/2162))
 - Change view hierarchy attachment format to JSON ([#2491](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/2491))
 - Experimental SwiftUI performance tracking ([#2271](https://github-redirect.dependabot.com/getsentry/sentry-cocoa/issues/2271))

@github-actions github-actions Bot added the dependencies Pull requests that update a dependency file label Sep 10, 2026
@github-actions github-actions Bot added the dependencies Pull requests that update a dependency file label Sep 10, 2026
@bruno-garcia
bruno-garcia force-pushed the deps/scripts/update-cocoa.sh branch from 189ef6e to e9a3b87 Compare September 10, 2026 03:07
@github-actions

Copy link
Copy Markdown
Contributor Author

Semver Impact of This PR

None (no version bump detected)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


  • chore(deps): update Cocoa SDK to v9.28.0 by github-actions[bot] in #6693
  • test(e2e): Evaluate replay assertion on Android by antonis in #6684
  • test(e2e): Restore iOS replay assertion in captureReplay test by antonis in #6683
  • feat(visionos): Add visionOS sample app by antonis in #6676
  • fix(core): Align beforeBreadcrumb and tracesSampler error fallbacks with spec by antonis in #6675
  • chore(replay): Mark mobileReplayIntegration as stable by antonis in #6679
  • feat(sample): Add tvOS sample app by antonis in #6677
  • fix(e2e): Pin json gem < 3.0 for RN < 0.72 iOS builds by antonis in #6678
  • feat(ios): Expose enableMemoryIntrospection option by antonis in #6674
  • feat(android): Add anrProfilingSampleRate option by antonis in #6673
  • ci: Unpin Android E2E emulator build by antonis in #6672
  • ref(ios): Remove deprecated private SDK API usage by philprime in #6647
  • chore(deps): update Cocoa SDK to v9.27.0 by github-actions in #6670
  • chore(deps): update Sentry Android Gradle Plugin to v6.21.0 by github-actions in #6671
  • chore(deps): Bump fast-uri to ^3.1.6 to resolve security alerts by antonis in #6662
  • chore(deps): Bump qs to ^6.16.0 to resolve security alerts by antonis in #6663
  • chore(deps): Bump @xmldom/xmldom pins to patched versions to resolve security alerts by antonis in #6664
  • docs: Revamp root and nested AGENTS.md by antonis in #6666

🤖 This preview updates automatically when you update the PR.

@antonis antonis added the ready-to-merge Triggers the full CI test suite label Sep 10, 2026
@sentry

sentry Bot commented Sep 10, 2026

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
Sentry RN io.sentry.reactnative.sample 8.25.0 (105) Release

⚙️ sentry-react-native Build Distribution Settings

@github-actions

Copy link
Copy Markdown
Contributor Author

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3868.26 ms 1238.07 ms -2630.18 ms
Size 5.15 MiB 6.89 MiB 1.74 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
0a9e622+dirty 3835.87 ms 1221.07 ms -2614.80 ms
7d6fd3a+dirty 1223.29 ms 1229.57 ms 6.28 ms
5ca03f9+dirty 3844.55 ms 1218.36 ms -2626.19 ms
774257e+dirty 3846.90 ms 1215.02 ms -2631.88 ms
40c9884+dirty 3837.72 ms 1226.61 ms -2611.11 ms
4e0b819+dirty 3839.05 ms 1210.75 ms -2628.30 ms
d038a14+dirty 3845.71 ms 1228.11 ms -2617.59 ms
57e0069+dirty 3842.29 ms 1212.12 ms -2630.17 ms
882f8ae+dirty 3840.30 ms 1224.41 ms -2615.88 ms
5125c43+dirty 3846.45 ms 1221.12 ms -2625.32 ms

App size

Revision Plain With Sentry Diff
0a9e622+dirty 4.98 MiB 6.51 MiB 1.53 MiB
7d6fd3a+dirty 3.38 MiB 4.77 MiB 1.39 MiB
5ca03f9+dirty 4.98 MiB 6.53 MiB 1.55 MiB
774257e+dirty 5.15 MiB 6.70 MiB 1.54 MiB
40c9884+dirty 4.98 MiB 6.51 MiB 1.53 MiB
4e0b819+dirty 4.98 MiB 6.46 MiB 1.49 MiB
d038a14+dirty 5.15 MiB 6.67 MiB 1.51 MiB
57e0069+dirty 4.98 MiB 6.50 MiB 1.52 MiB
882f8ae+dirty 5.15 MiB 6.70 MiB 1.54 MiB
5125c43+dirty 5.15 MiB 6.68 MiB 1.53 MiB

Previous results on branch: deps/scripts/update-cocoa.sh

Startup times

Revision Plain With Sentry Diff
eaa5141+dirty 3848.40 ms 1222.96 ms -2625.45 ms
443e161+dirty 3849.17 ms 1222.71 ms -2626.46 ms
c09bf88+dirty 3834.33 ms 1213.62 ms -2620.71 ms
6a6a653+dirty 3843.15 ms 1225.16 ms -2617.99 ms

App size

Revision Plain With Sentry Diff
eaa5141+dirty 5.08 MiB 6.77 MiB 1.69 MiB
443e161+dirty 5.08 MiB 6.80 MiB 1.72 MiB
c09bf88+dirty 5.08 MiB 6.75 MiB 1.67 MiB
6a6a653+dirty 5.15 MiB 6.88 MiB 1.73 MiB

@github-actions

Copy link
Copy Markdown
Contributor Author

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3858.21 ms 1247.18 ms -2611.03 ms
Size 5.15 MiB 6.89 MiB 1.74 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
64630e5+dirty 3845.49 ms 1215.19 ms -2630.30 ms
b0d3373+dirty 3842.49 ms 1218.49 ms -2624.00 ms
b04af96+dirty 3830.54 ms 1206.11 ms -2624.44 ms
f9c1ed4+dirty 3842.09 ms 1220.70 ms -2621.40 ms
09a902f+dirty 3847.65 ms 1221.31 ms -2626.34 ms
44abcc2+dirty 3841.42 ms 1214.77 ms -2626.65 ms
acd838e+dirty 3835.94 ms 1215.87 ms -2620.07 ms
bfba737+dirty 3834.18 ms 1222.80 ms -2611.38 ms
ce7b368+dirty 3851.41 ms 1222.37 ms -2629.04 ms
4e0ba9c+dirty 3856.39 ms 1234.44 ms -2621.95 ms

App size

Revision Plain With Sentry Diff
64630e5+dirty 4.98 MiB 6.46 MiB 1.49 MiB
b0d3373+dirty 5.15 MiB 6.68 MiB 1.53 MiB
b04af96+dirty 4.98 MiB 6.54 MiB 1.56 MiB
f9c1ed4+dirty 4.98 MiB 6.50 MiB 1.53 MiB
09a902f+dirty 4.98 MiB 6.46 MiB 1.49 MiB
44abcc2+dirty 4.98 MiB 6.55 MiB 1.57 MiB
acd838e+dirty 5.15 MiB 6.70 MiB 1.55 MiB
bfba737+dirty 4.98 MiB 6.51 MiB 1.53 MiB
ce7b368+dirty 4.98 MiB 6.51 MiB 1.53 MiB
4e0ba9c+dirty 5.15 MiB 6.67 MiB 1.51 MiB

Previous results on branch: deps/scripts/update-cocoa.sh

Startup times

Revision Plain With Sentry Diff
eaa5141+dirty 3852.31 ms 1231.67 ms -2620.65 ms
443e161+dirty 3832.75 ms 1226.34 ms -2606.41 ms
c09bf88+dirty 3844.62 ms 1220.64 ms -2623.98 ms
6a6a653+dirty 3856.69 ms 1228.41 ms -2628.28 ms

App size

Revision Plain With Sentry Diff
eaa5141+dirty 5.08 MiB 6.77 MiB 1.69 MiB
443e161+dirty 5.08 MiB 6.80 MiB 1.72 MiB
c09bf88+dirty 5.08 MiB 6.75 MiB 1.67 MiB
6a6a653+dirty 5.15 MiB 6.88 MiB 1.73 MiB

@github-actions

Copy link
Copy Markdown
Contributor Author

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 440.67 ms 506.96 ms 66.29 ms
Size 50.56 MiB 56.46 MiB 5.90 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
37a2091+dirty 429.71 ms 477.00 ms 47.29 ms
af33f3b+dirty 417.68 ms 448.04 ms 30.37 ms
c2e182c+dirty 468.50 ms 545.44 ms 76.94 ms
a50b33d+dirty 353.21 ms 398.48 ms 45.27 ms
5ca03f9+dirty 412.83 ms 459.40 ms 46.57 ms
f3215d3+dirty 396.53 ms 436.66 ms 40.13 ms
7887847+dirty 420.47 ms 460.55 ms 40.08 ms
23598c3+dirty 371.92 ms 420.65 ms 48.74 ms
bc8f61e+dirty 419.31 ms 453.39 ms 34.08 ms
09a902f+dirty 423.02 ms 472.18 ms 49.16 ms

App size

Revision Plain With Sentry Diff
37a2091+dirty 48.30 MiB 53.58 MiB 5.28 MiB
af33f3b+dirty 49.74 MiB 55.09 MiB 5.35 MiB
c2e182c+dirty 49.74 MiB 54.85 MiB 5.11 MiB
a50b33d+dirty 43.94 MiB 48.94 MiB 5.00 MiB
5ca03f9+dirty 49.74 MiB 55.26 MiB 5.52 MiB
f3215d3+dirty 48.30 MiB 53.49 MiB 5.19 MiB
7887847+dirty 49.74 MiB 54.81 MiB 5.07 MiB
23598c3+dirty 43.94 MiB 49.02 MiB 5.08 MiB
bc8f61e+dirty 49.74 MiB 55.09 MiB 5.35 MiB
09a902f+dirty 49.74 MiB 54.81 MiB 5.07 MiB

Previous results on branch: deps/scripts/update-cocoa.sh

Startup times

Revision Plain With Sentry Diff
c09bf88+dirty 434.50 ms 463.80 ms 29.30 ms
6a6a653+dirty 437.27 ms 460.04 ms 22.77 ms
eaa5141+dirty 436.06 ms 457.56 ms 21.50 ms
443e161+dirty 433.50 ms 449.20 ms 15.70 ms

App size

Revision Plain With Sentry Diff
c09bf88+dirty 49.74 MiB 55.45 MiB 5.70 MiB
6a6a653+dirty 50.56 MiB 56.46 MiB 5.90 MiB
eaa5141+dirty 49.74 MiB 55.66 MiB 5.91 MiB
443e161+dirty 49.74 MiB 55.66 MiB 5.91 MiB

@antonis
antonis enabled auto-merge (squash) September 10, 2026 06:38
@antonis
antonis merged commit 96ec560 into main Sep 10, 2026
153 of 162 checks passed
@antonis
antonis deleted the deps/scripts/update-cocoa.sh branch September 10, 2026 06:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file ready-to-merge Triggers the full CI test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants