From 26dbd21e35f6f5c813021a4a5642fe7c553a43c3 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 8 Jan 2026 14:10:52 +0100 Subject: [PATCH 1/6] chore(deps): v8: update Cocoa SDK to v9.1.1 --- packages/core/RNSentry.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/RNSentry.podspec b/packages/core/RNSentry.podspec index d314d7e938..11e2d85878 100644 --- a/packages/core/RNSentry.podspec +++ b/packages/core/RNSentry.podspec @@ -46,7 +46,7 @@ Pod::Spec.new do |s| s.compiler_flags = other_cflags - s.dependency 'Sentry/HybridSDK', '9.1.0' + s.dependency 'Sentry/HybridSDK', '9.1.1-alpha.0' if defined? install_modules_dependencies # Default React Native dependencies for 0.71 and above (new and legacy architecture) From aadf8b4178c552ba50370448ca0afdc8e9c3ebb8 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Fri, 23 Jan 2026 11:28:12 +0100 Subject: [PATCH 2/6] Bump to 9.2.0 --- packages/core/RNSentry.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/RNSentry.podspec b/packages/core/RNSentry.podspec index 11e2d85878..d919e563bb 100644 --- a/packages/core/RNSentry.podspec +++ b/packages/core/RNSentry.podspec @@ -46,7 +46,7 @@ Pod::Spec.new do |s| s.compiler_flags = other_cflags - s.dependency 'Sentry/HybridSDK', '9.1.1-alpha.0' + s.dependency 'Sentry/HybridSDK', '9.2.0' if defined? install_modules_dependencies # Default React Native dependencies for 0.71 and above (new and legacy architecture) From 8cc88125c486956f609e5393294668f1f4eff8a4 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Mon, 2 Feb 2026 10:56:20 +0100 Subject: [PATCH 3/6] Bump to 9.3.0 --- packages/core/RNSentry.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/RNSentry.podspec b/packages/core/RNSentry.podspec index 4c6efc5f7a..920698880a 100644 --- a/packages/core/RNSentry.podspec +++ b/packages/core/RNSentry.podspec @@ -50,7 +50,7 @@ Pod::Spec.new do |s| 'DEFINES_MODULE' => 'YES' } - s.dependency 'Sentry/HybridSDK', '9.2.0' + s.dependency 'Sentry/HybridSDK', '9.3.0' if defined? install_modules_dependencies # Default React Native dependencies for 0.71 and above (new and legacy architecture) From 1d0635ffe2d8be1808521b0cebad83c8f1aca8a7 Mon Sep 17 00:00:00 2001 From: Itay Brenner Date: Mon, 2 Feb 2026 11:36:16 -0300 Subject: [PATCH 4/6] chore: Move from using Hybrid SDK subspec to regular Sentry podspec (#5451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update Cocoa SDK to v9.0.0-alpha.0 * Adds changelog * fix: Fixes SentryScreenFrames use after being converted to Swift (#5153) * fix: Fixes SentryScreenFrames use after being converted to Swift * Fix build --------- Co-authored-by: Antonis Lilis * Move `sentry-cocoa` `enableLogs` out of experimental (#5267) * fix: Fixes SentryScreenFrames use after being converted to Swift * Fix build * Use non-experimental enableLogs * bump target * remove enable tracing * Update enableLogs tests --------- Co-authored-by: Itay Brenner Co-authored-by: Itay Brenner Co-authored-by: Antonis Lilis * chore: Remove SentryFrameTracker imports (#5276) * fix: Fixes SentryScreenFrames use after being converted to Swift * Fix build * Use non-experimental enableLogs * bump target * remove enable tracing * Update enableLogs tests * chore: Fix RNSentry after SentryFramesTracker conversion to swift * Run linter * Remove unused debug image provider imports * Remove imports * chore: Remove deprecated user property * chore: Remove use of deprecate integrations API (#5304) * Remove use of integrations in tests * chore: Remove use of deprecated prop (#5322) * ref: Move options to wrapper --------- Co-authored-by: Antonis Lilis Co-authored-by: Denis Andrasec Co-authored-by: Noah Martin * fix(podspec): Cocoa V9 allow any alpha version * chore(sample): Cocoa-v9: Bump MacOS sample to macos 12.0 (#5359) * fix: Fixes SentryScreenFrames use after being converted to Swift * Fix build * Use non-experimental enableLogs * bump target * remove enable tracing * Update enableLogs tests * chore: Fix RNSentry after SentryFramesTracker conversion to swift * Run linter * Remove unused debug image provider imports * Remove imports * chore: Remove deprecated user property * chore: Remove use of deprecate integrations API (#5304) * Remove use of integrations in tests * chore: Remove use of deprecated prop (#5322) * ref: Move options to wrapper * chore(sample): Bump MacOS sample to macos 12.0 wich is the minimum for v9 --------- Co-authored-by: Itay Brenner Co-authored-by: Itay Brenner Co-authored-by: Denis Andrasec Co-authored-by: Noah Martin * chore(e2e): Cocoa-v9: Bump E2E to iOS 15.0 (#5369) * fix: Fixes SentryScreenFrames use after being converted to Swift * Fix build * Use non-experimental enableLogs * bump target * remove enable tracing * Update enableLogs tests * chore: Fix RNSentry after SentryFramesTracker conversion to swift * Run linter * Remove unused debug image provider imports * Remove imports * chore: Remove deprecated user property * chore: Remove use of deprecate integrations API (#5304) * Remove use of integrations in tests * chore: Remove use of deprecated prop (#5322) * ref: Move options to wrapper * chore(sample): Bump MacOS sample to macos 12.0 wich is the minimum for v9 * chore(e2e): Cocoa-v9: Bump E2E to iOS 15.0 * Bump to 15.1 due to RN 0.81.0 requirements --------- Co-authored-by: Itay Brenner Co-authored-by: Itay Brenner Co-authored-by: Denis Andrasec Co-authored-by: Noah Martin * chore(ci): Cocoa V9: Run the full CI checks for cocoa-v9 (#5370) * Update changelog * Bumpt to RC1 * Remove cocoa-v9 from ci branches * fix: Use new session replay name for hybrid SDK * Fix rename * chore(lint): Fixes lint issues * Update changelog to GA * chore: Move from using Hybrid SDK subspec to regular Sentry podspec * Update changelog * Bump minimum to 9.1.0 * Replace SentryOptionsInternal with PrivateSentrySDKOnly helper method * Replace the deprecated `optionsWithDictionary` with `options(with:)` * Added RNSentry+formatters.h * Do not use subspec * Fix lint issues * Remove Unused import * Fix build issue * Add header search paths --------- Co-authored-by: Antonis Lilis Co-authored-by: Denis AndraĊĦec Co-authored-by: Noah Martin Co-authored-by: Philipp Hofmann --- CONTRIBUTING.md | 6 ++-- packages/core/RNSentry.podspec | 5 +-- .../RNSentryReplayOptionsTests.swift | 34 +++++++++--------- packages/core/ios/RNSentry+fetchNativeStack.m | 1 + packages/core/ios/RNSentry+formatters.h | 35 +++++++++++++++++++ packages/core/ios/RNSentry.mm | 1 - packages/core/ios/RNSentryRNSScreen.m | 2 +- packages/core/ios/RNSentrySDK.m | 4 +-- packages/core/ios/RNSentryStart.m | 4 +-- packages/core/ios/SentrySDKWrapper.m | 4 +-- scripts/update-cocoa.sh | 2 +- 11 files changed, 67 insertions(+), 31 deletions(-) create mode 100644 packages/core/ios/RNSentry+formatters.h diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 548e75806d..0839860ae5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -136,8 +136,8 @@ cd sentry-react-native Comment out sentry dependency in `RNSentry.podspec`. ```diff -- s.dependency 'Sentry/HybridSDK', '7.31.0' -+ s.dependency 'Sentry/HybridSDK' +- s.dependency 'Sentry', '7.31.0' ++ s.dependency 'Sentry' ``` Add local pods to `sample/ios/Podfile`. @@ -147,7 +147,7 @@ target 'sample' do # ... react native config - pod 'Sentry/HybridSDK', :path => '../../../../sentry-cocoa' + pod 'Sentry', :path => '../../../../sentry-cocoa' # ... rest of the configuration end diff --git a/packages/core/RNSentry.podspec b/packages/core/RNSentry.podspec index 920698880a..76e4140ce4 100644 --- a/packages/core/RNSentry.podspec +++ b/packages/core/RNSentry.podspec @@ -47,10 +47,11 @@ Pod::Spec.new do |s| s.compiler_flags = other_cflags s.pod_target_xcconfig = { - 'DEFINES_MODULE' => 'YES' + 'DEFINES_MODULE' => 'YES', + 'HEADER_SEARCH_PATHS' => '$(inherited) "${PODS_ROOT}/Sentry/Sources/Sentry" "${PODS_ROOT}/Sentry/Sources/Sentry/include"' } - s.dependency 'Sentry/HybridSDK', '9.3.0' + s.dependency 'Sentry', '9.3.0' if defined? install_modules_dependencies # Default React Native dependencies for 0.71 and above (new and legacy architecture) diff --git a/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift b/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift index 0d7ef3aa12..7b0355f269 100644 --- a/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift +++ b/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift @@ -67,7 +67,7 @@ final class RNSentryReplayOptions: XCTestCase { ] as NSDictionary).mutableCopy() as! NSMutableDictionary RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.sessionSampleRate, 0.75) } @@ -78,7 +78,7 @@ final class RNSentryReplayOptions: XCTestCase { ] as NSDictionary).mutableCopy() as! NSMutableDictionary RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.onErrorSampleRate, 0.75) } @@ -108,7 +108,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.maskAllImages, true) assertContainsClass(classArray: actualOptions.sessionReplay.maskedViewClasses, stringClass: "RCTImageView") @@ -123,7 +123,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.maskAllImages, false) XCTAssertEqual(actualOptions.sessionReplay.maskedViewClasses.count, 0) @@ -138,7 +138,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.maskAllText, true) assertContainsClass(classArray: actualOptions.sessionReplay.maskedViewClasses, stringClass: "RCTTextView") @@ -162,7 +162,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.maskAllText, false) XCTAssertEqual(actualOptions.sessionReplay.maskedViewClasses.count, 0) @@ -176,7 +176,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertTrue(actualOptions.sessionReplay.enableViewRendererV2) } @@ -190,7 +190,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertTrue(actualOptions.sessionReplay.enableViewRendererV2) } @@ -204,7 +204,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertFalse(actualOptions.sessionReplay.enableViewRendererV2) } @@ -217,7 +217,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertFalse(actualOptions.sessionReplay.enableFastViewRendering) } @@ -231,7 +231,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertTrue(actualOptions.sessionReplay.enableFastViewRendering) } @@ -245,7 +245,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertFalse(actualOptions.sessionReplay.enableFastViewRendering) } @@ -258,7 +258,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.medium) } @@ -272,7 +272,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.low) } @@ -286,7 +286,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.medium) } @@ -300,7 +300,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.high) } @@ -314,7 +314,7 @@ final class RNSentryReplayOptions: XCTestCase { RNSentryReplay.updateOptions(optionsDict) - let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any]) + let actualOptions = try! PrivateSentrySDKOnly.options(with: optionsDict as! [String: Any]) XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.medium) } diff --git a/packages/core/ios/RNSentry+fetchNativeStack.m b/packages/core/ios/RNSentry+fetchNativeStack.m index d10f82108c..5b4a53e260 100644 --- a/packages/core/ios/RNSentry+fetchNativeStack.m +++ b/packages/core/ios/RNSentry+fetchNativeStack.m @@ -1,3 +1,4 @@ +#import "RNSentry+formatters.h" #import "RNSentry.h" #import "RNSentryBreadcrumb.h" #import "RNSentryId.h" diff --git a/packages/core/ios/RNSentry+formatters.h b/packages/core/ios/RNSentry+formatters.h new file mode 100644 index 0000000000..60e09e0d08 --- /dev/null +++ b/packages/core/ios/RNSentry+formatters.h @@ -0,0 +1,35 @@ +#import + +// This file is a copy from +// https://github.com/getsentry/sentry-cocoa/blob/6c20265de0903b835a299e2e9da0f7af50af09f5/Sources/Sentry/include/HybridPublic/SentryFormatter.h + +// 2 for the 0x prefix, plus 16 for the hex value, plus 1 for the null terminator +#define SENTRY_HEX_ADDRESS_LENGTH 19 + +static inline NSString * +sentry_snprintfHexAddress(uint64_t value) +{ + char buffer[SENTRY_HEX_ADDRESS_LENGTH]; + snprintf(buffer, SENTRY_HEX_ADDRESS_LENGTH, "0x%016llx", value); + NSString *nsString = [NSString stringWithCString:buffer encoding:NSASCIIStringEncoding]; + return nsString; +} + +static inline NSString * +sentry_formatHexAddress(NSNumber *value) +{ + /* + * We observed a 41% speedup by using snprintf vs +[NSString stringWithFormat:]. In a trial + * using a profile, we observed the +[NSString stringWithFormat:] using 282ms of CPU time, vs + * 164ms of CPU time for snprintf. There is also an assumed space improvement due to not needing + * to allocate as many instances of NSString, like for the format string literal, instead only + * using stack-bound C strings. + */ + return sentry_snprintfHexAddress([value unsignedLongLongValue]); +} + +static inline NSString * +sentry_formatHexAddressUInt64(uint64_t value) +{ + return sentry_snprintfHexAddress(value); +} diff --git a/packages/core/ios/RNSentry.mm b/packages/core/ios/RNSentry.mm index d7e71da2cb..ec050bc56f 100644 --- a/packages/core/ios/RNSentry.mm +++ b/packages/core/ios/RNSentry.mm @@ -24,7 +24,6 @@ #import #import #import -#import #import #import diff --git a/packages/core/ios/RNSentryRNSScreen.m b/packages/core/ios/RNSentryRNSScreen.m index 90b2e733d3..d29a3035eb 100644 --- a/packages/core/ios/RNSentryRNSScreen.m +++ b/packages/core/ios/RNSentryRNSScreen.m @@ -4,7 +4,7 @@ # import "RNSentryDependencyContainer.h" # import "RNSentryFramesTrackerListener.h" -# import +# import "SentrySwizzle.h" @import Sentry; @implementation RNSentryRNSScreen diff --git a/packages/core/ios/RNSentrySDK.m b/packages/core/ios/RNSentrySDK.m index 2a96188dfa..705b706de8 100644 --- a/packages/core/ios/RNSentrySDK.m +++ b/packages/core/ios/RNSentrySDK.m @@ -1,7 +1,7 @@ #import "RNSentrySDK.h" #import "RNSentryStart.h" +#import #import -#import static NSString *SENTRY_OPTIONS_RESOURCE_NAME = @"sentry.options"; static NSString *SENTRY_OPTIONS_RESOURCE_TYPE = @"json"; @@ -60,7 +60,7 @@ + (void)start:(NSString *)path configureOptions:(void (^)(SentryOptions *options if (options == nil) { // Fallback in case that options file could not be parsed. NSError *fallbackError = nil; - options = [SentryOptionsInternal initWithDict:@{} didFailWithError:&fallbackError]; + options = [PrivateSentrySDKOnly optionsWithDictionary:@{} didFailWithError:&fallbackError]; if (fallbackError != nil) { NSLog(@"[RNSentry] Failed to create fallback options with error: %@", fallbackError.localizedDescription); diff --git a/packages/core/ios/RNSentryStart.m b/packages/core/ios/RNSentryStart.m index 1514a00d06..db86096fe1 100644 --- a/packages/core/ios/RNSentryStart.m +++ b/packages/core/ios/RNSentryStart.m @@ -46,8 +46,8 @@ + (SentryOptions *_Nullable)createOptionsWithDictionary:(NSDictionary *_Nonnull) BOOL isSessionReplayEnabled = NO; #endif - SentryOptions *sentryOptions = [SentryOptionsInternal initWithDict:mutableOptions - didFailWithError:errorPointer]; + SentryOptions *sentryOptions = [PrivateSentrySDKOnly optionsWithDictionary:mutableOptions + didFailWithError:errorPointer]; if (*errorPointer != nil) { return nil; } diff --git a/packages/core/ios/SentrySDKWrapper.m b/packages/core/ios/SentrySDKWrapper.m index c11782d5ad..d724f74d04 100644 --- a/packages/core/ios/SentrySDKWrapper.m +++ b/packages/core/ios/SentrySDKWrapper.m @@ -35,8 +35,8 @@ + (SentryOptions *)createOptionsWithDictionary:(NSDictionary *)options error:(NSError *__autoreleasing *)errorPointer { NSString *dsn = [self getURLFromDSN:[options valueForKey:@"dsn"]]; - SentryOptions *sentryOptions = [SentryOptionsInternal initWithDict:options - didFailWithError:errorPointer]; + SentryOptions *sentryOptions = [PrivateSentrySDKOnly optionsWithDictionary:options + didFailWithError:errorPointer]; if (*errorPointer != nil) { return nil; } diff --git a/scripts/update-cocoa.sh b/scripts/update-cocoa.sh index 86b60dae90..7d2a5ce0ed 100755 --- a/scripts/update-cocoa.sh +++ b/scripts/update-cocoa.sh @@ -3,7 +3,7 @@ set -euo pipefail file="$(dirname "$0")/../packages/core/RNSentry.podspec" content=$(cat $file) -regex="('Sentry/HybridSDK', *)'([0-9\.]+)'" +regex="('Sentry', *)'([0-9\.]+)'" if ! [[ $content =~ $regex ]]; then echo "Failed to find the plugin version in $file" exit 1 From 90ae4d5d781949acd2e05eda7e21574213f8043b Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Mon, 2 Feb 2026 16:41:14 +0100 Subject: [PATCH 5/6] Adds changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b75c6eab77..191d485c7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ ### Dependencies +- Bump Cocoa SDK from v9.1.0 to v9.3.0 ([#5515](https://github.com/getsentry/sentry-react-native/pull/5515)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#930) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/9.1.0...9.3.0) - Bump JavaScript SDK from v10.37.0 to v10.38.0 ([#5596](https://github.com/getsentry/sentry-react-native/pull/5596)) - [changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md#10380) - [diff](https://github.com/getsentry/sentry-javascript/compare/10.37.0...10.38.0) From 0f1f3869f28f551849efb68bf258659904287629 Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 3 Feb 2026 09:54:51 +0100 Subject: [PATCH 6/6] Remove RNSentry+formatters.h copy --- packages/core/ios/RNSentry+fetchNativeStack.m | 2 +- packages/core/ios/RNSentry+formatters.h | 35 ------------------- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 packages/core/ios/RNSentry+formatters.h diff --git a/packages/core/ios/RNSentry+fetchNativeStack.m b/packages/core/ios/RNSentry+fetchNativeStack.m index 5b4a53e260..a3e425b32e 100644 --- a/packages/core/ios/RNSentry+fetchNativeStack.m +++ b/packages/core/ios/RNSentry+fetchNativeStack.m @@ -1,7 +1,7 @@ -#import "RNSentry+formatters.h" #import "RNSentry.h" #import "RNSentryBreadcrumb.h" #import "RNSentryId.h" +#import "SentryFormatter.h" #import @import Sentry; diff --git a/packages/core/ios/RNSentry+formatters.h b/packages/core/ios/RNSentry+formatters.h deleted file mode 100644 index 60e09e0d08..0000000000 --- a/packages/core/ios/RNSentry+formatters.h +++ /dev/null @@ -1,35 +0,0 @@ -#import - -// This file is a copy from -// https://github.com/getsentry/sentry-cocoa/blob/6c20265de0903b835a299e2e9da0f7af50af09f5/Sources/Sentry/include/HybridPublic/SentryFormatter.h - -// 2 for the 0x prefix, plus 16 for the hex value, plus 1 for the null terminator -#define SENTRY_HEX_ADDRESS_LENGTH 19 - -static inline NSString * -sentry_snprintfHexAddress(uint64_t value) -{ - char buffer[SENTRY_HEX_ADDRESS_LENGTH]; - snprintf(buffer, SENTRY_HEX_ADDRESS_LENGTH, "0x%016llx", value); - NSString *nsString = [NSString stringWithCString:buffer encoding:NSASCIIStringEncoding]; - return nsString; -} - -static inline NSString * -sentry_formatHexAddress(NSNumber *value) -{ - /* - * We observed a 41% speedup by using snprintf vs +[NSString stringWithFormat:]. In a trial - * using a profile, we observed the +[NSString stringWithFormat:] using 282ms of CPU time, vs - * 164ms of CPU time for snprintf. There is also an assumed space improvement due to not needing - * to allocate as many instances of NSString, like for the format string literal, instead only - * using stack-bound C strings. - */ - return sentry_snprintfHexAddress([value unsignedLongLongValue]); -} - -static inline NSString * -sentry_formatHexAddressUInt64(uint64_t value) -{ - return sentry_snprintfHexAddress(value); -}