Skip to content

Removes temporary flags after Cocoa Bump #5038

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 23 commits into
base: deps/scripts/update-cocoa.sh
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6b7aad8
chore: update scripts/update-cocoa.sh to 8.54.0
web-flow Jul 31, 2025
83f91bb
Remove Cocoa Flags
antonis Jul 31, 2025
8ae835d
Update sample app native initialisation example
antonis Jul 31, 2025
702b2fc
Remove unused imports
antonis Jul 31, 2025
ed6a296
chore: update scripts/update-cocoa.sh to 8.54.0
web-flow Aug 5, 2025
1d95a86
Merge branch 'deps/scripts/update-cocoa.sh' into antonis/remove_cocoa…
antonis Aug 5, 2025
54af75e
Test with cocoa fix
antonis Aug 6, 2025
c59bb69
Trigger CI
antonis Aug 6, 2025
a67956f
Revert "Trigger CI"
antonis Aug 6, 2025
d6c0afc
Revert "Test with cocoa fix"
antonis Aug 6, 2025
ef4dd63
chore: update scripts/update-cocoa.sh to 8.54.0
web-flow Aug 13, 2025
eed4e18
Merge branch 'deps/scripts/update-cocoa.sh' into antonis/remove_cocoa…
antonis Aug 13, 2025
8956b09
Test with 8.54.1-alpha.1
antonis Aug 13, 2025
3d17397
Test with 8.54.1-apha.2
antonis Aug 13, 2025
4ea0cda
trigger ci
antonis Aug 13, 2025
4f3abd3
chore: update scripts/update-cocoa.sh to 8.55.0
web-flow Aug 14, 2025
584af1e
Merge branch 'deps/scripts/update-cocoa.sh' into antonis/remove_cocoa…
antonis Aug 14, 2025
dcd3b15
chore: update scripts/update-cocoa.sh to 8.55.0
web-flow Aug 14, 2025
5124b3c
Merge branch 'deps/scripts/update-cocoa.sh' into antonis/remove_cocoa…
antonis Aug 14, 2025
4b795ed
Remove duplicate changelog
antonis Aug 14, 2025
29f79b9
ref: Rename SentryNativeInitialiser to SentryNativeInitializer
antonis Aug 14, 2025
c3af0db
Revert unneeded changes
antonis Aug 14, 2025
5dc8855
Merge branch 'deps/scripts/update-cocoa.sh' into antonis/remove_cocoa…
antonis Aug 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@
> make sure you follow our [migration guide](https://docs.sentry.io/platforms/react-native/migration/) first.
<!-- prettier-ignore-end -->

## Unreleased

### Dependencies

- Bump Cocoa SDK from v8.53.2 to v8.55.0 ([#5036](https://github.com/getsentry/sentry-react-native/pull/5036))
- [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8550)
- [diff](https://github.com/getsentry/sentry-cocoa/compare/8.53.2...8.55.0)

## 6.20.0

### Features
Expand Down
2 changes: 1 addition & 1 deletion packages/core/RNSentry.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Pod::Spec.new do |s|

s.compiler_flags = other_cflags

s.dependency 'Sentry/HybridSDK', '8.53.2'
s.dependency 'Sentry/HybridSDK', '8.55.0'

if defined? install_modules_dependencies
# Default React Native dependencies for 0.71 and above (new and legacy architecture)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,7 @@ final class RNSentryReplayOptions: XCTestCase {
] as NSDictionary).mutableCopy() as! NSMutableDictionary
RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif
XCTAssertEqual(actualOptions.sessionReplay.sessionSampleRate, 0.75)
}

Expand All @@ -82,11 +78,7 @@ final class RNSentryReplayOptions: XCTestCase {
] as NSDictionary).mutableCopy() as! NSMutableDictionary
RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif
XCTAssertEqual(actualOptions.sessionReplay.onErrorSampleRate, 0.75)
}

Expand Down Expand Up @@ -116,11 +108,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.maskAllImages, true)
assertContainsClass(classArray: actualOptions.sessionReplay.maskedViewClasses, stringClass: "RCTImageView")
Expand All @@ -135,11 +123,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.maskAllImages, false)
XCTAssertEqual(actualOptions.sessionReplay.maskedViewClasses.count, 0)
Expand All @@ -154,11 +138,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.maskAllText, true)
assertContainsClass(classArray: actualOptions.sessionReplay.maskedViewClasses, stringClass: "RCTTextView")
Expand All @@ -182,11 +162,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.maskAllText, false)
XCTAssertEqual(actualOptions.sessionReplay.maskedViewClasses.count, 0)
Expand All @@ -200,11 +176,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertTrue(actualOptions.sessionReplay.enableViewRendererV2)
}
Expand All @@ -218,11 +190,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertTrue(actualOptions.sessionReplay.enableViewRendererV2)
}
Expand All @@ -236,11 +204,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertFalse(actualOptions.sessionReplay.enableViewRendererV2)
}
Expand All @@ -253,11 +217,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertFalse(actualOptions.sessionReplay.enableFastViewRendering)
}
Expand All @@ -271,11 +231,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertTrue(actualOptions.sessionReplay.enableFastViewRendering)
}
Expand All @@ -289,15 +245,11 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertFalse(actualOptions.sessionReplay.enableFastViewRendering)
}

func testReplayQualityDefault() {
let optionsDict = ([
"dsn": "https://abc@def.ingest.sentry.io/1234567",
Expand All @@ -306,11 +258,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.medium)
}
Expand All @@ -324,11 +272,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.low)
}
Expand All @@ -342,11 +286,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.medium)
}
Expand All @@ -360,11 +300,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.high)
}
Expand All @@ -378,11 +314,7 @@ final class RNSentryReplayOptions: XCTestCase {

RNSentryReplay.updateOptions(optionsDict)

#if CROSS_PLATFORM_TEST
let actualOptions = try! SentryOptionsInternal.initWithDict(optionsDict as! [String: Any])
#else
let actualOptions = try! Options(dict: optionsDict as! [String: Any])
#endif

XCTAssertEqual(actualOptions.sessionReplay.quality, SentryReplayOptions.SentryReplayQuality.medium)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,8 @@

@class SentryOptions;

#if CROSS_PLATFORM_TEST
@interface
SentrySDKInternal (PrivateTests)
#else
@interface
SentrySDK (PrivateTests)
#endif

+ (nullable SentryOptions *)options;
@end
Original file line number Diff line number Diff line change
Expand Up @@ -465,13 +465,8 @@ - (void)prepareNativeFrameMocksWithLocalSymbolication:(BOOL)debug
SentryOptions *sentryOptions = [[SentryOptions alloc] init];
sentryOptions.debug = debug; // no local symbolication

#if CROSS_PLATFORM_TEST
id sentrySDKMock = OCMClassMock([SentrySDKInternal class]);
OCMStub([(Class)sentrySDKMock options]).andReturn(sentryOptions);
#else
id sentrySDKMock = OCMClassMock([SentrySDK class]);
OCMStub([(Class)sentrySDKMock options]).andReturn(sentryOptions);
#endif

id sentryDependencyContainerMock = OCMClassMock([SentryDependencyContainer class]);
OCMStub(ClassMethod([sentryDependencyContainerMock sharedInstance]))
Expand Down
5 changes: 0 additions & 5 deletions packages/core/ios/RNSentry.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,7 @@ typedef int (*SymbolicateCallbackType)(const void *, Dl_info *);
@class SentryOptions;
@class SentryEvent;

#if CROSS_PLATFORM_TEST
@interface SentrySDKInternal : NSObject
#else
@interface
SentrySDK (Private)
#endif
@property (nonatomic, nullable, readonly, class) SentryOptions *options;
@end

Expand Down
19 changes: 2 additions & 17 deletions packages/core/ios/RNSentry.mm
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,9 @@
#import <Sentry/SentryException.h>
#import <Sentry/SentryFormatter.h>
#import <Sentry/SentryOptions.h>
#import <Sentry/SentryUser.h>
#if __has_include(<Sentry/SentryOptions+HybridSDKs.h>)
# define USE_SENTRY_OPTIONS 1
# import <Sentry/SentryOptions+HybridSDKs.h>
#else
# define USE_SENTRY_OPTIONS 0
# import <Sentry/SentryOptionsInternal.h>
#endif
#import <Sentry/SentryOptionsInternal.h>
#import <Sentry/SentryScreenFrames.h>
#import <Sentry/SentryUser.h>

// This guard prevents importing Hermes in JSC apps
#if SENTRY_PROFILING_ENABLED
Expand Down Expand Up @@ -169,13 +163,8 @@ - (SentryOptions *_Nullable)createOptionsWithDictionary:(NSDictionary *_Nonnull)
[RNSentryReplay updateOptions:mutableOptions];
#endif

#if USE_SENTRY_OPTIONS
SentryOptions *sentryOptions = [[SentryOptions alloc] initWithDict:mutableOptions
didFailWithError:errorPointer];
#else
SentryOptions *sentryOptions = [SentryOptionsInternal initWithDict:mutableOptions
didFailWithError:errorPointer];
#endif
if (*errorPointer != nil) {
return nil;
}
Expand Down Expand Up @@ -361,11 +350,7 @@ - (void)stopObserving
- (NSDictionary *)fetchNativeStackFramesBy:(NSArray<NSNumber *> *)instructionsAddr
symbolicate:(SymbolicateCallbackType)symbolicate
{
#if CROSS_PLATFORM_TEST
BOOL shouldSymbolicateLocally = [SentrySDKInternal.options debug];
#else
BOOL shouldSymbolicateLocally = [SentrySDK.options debug];
#endif
NSString *appPackageName = [[NSBundle mainBundle] executablePath];

NSMutableSet<NSString *> *_Nonnull imagesAddrToRetrieveDebugMetaImages =
Expand Down
7 changes: 7 additions & 0 deletions samples/react-native/ios/SentryNativeInitializer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#import <Foundation/Foundation.h>

@interface SentryNativeInitializer : NSObject

+ (void)initializeSentry;

@end
38 changes: 38 additions & 0 deletions samples/react-native/ios/SentryNativeInitializer.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#import "SentryNativeInitializer.h"
@import Sentry;

@implementation SentryNativeInitializer

+ (void)initializeSentry
{
[SentrySDK startWithConfigureOptions:^(SentryOptions *options) {
// Only options set here will apply to the iOS SDK
// Options from JS are not passed to the iOS SDK when initialized manually
options.dsn = @"https://1df17bd4e543fdb31351dee1768bb679@o447951.ingest.sentry.io/5428561";
options.debug = YES; // Enabled debug when first installing is always helpful

options.beforeSend = ^SentryEvent *(SentryEvent *event)
{
// We don't want to send an event after startup that came from a Unhandled JS Exception
// of react native Because we sent it already before the app crashed.
if (nil != event.exceptions.firstObject.type &&
[event.exceptions.firstObject.type rangeOfString:@"Unhandled JS Exception"].location
!= NSNotFound) {
NSLog(@"Unhandled JS Exception");
return nil;
}

return event;
};

// Enable the App start and Frames tracking measurements
// If this is disabled the app start and frames tracking
// won't be passed from native to JS transactions
PrivateSentrySDKOnly.appStartMeasurementHybridSDKMode = true;
#if TARGET_OS_IPHONE || TARGET_OS_MACCATALYST
PrivateSentrySDKOnly.framesTrackingMeasurementHybridSDKMode = true;
#endif
}];
}

@end
Loading
Loading