Skip to content
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

feat(Session Replay): Session Replay Integration #3671

Merged
merged 104 commits into from
Apr 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
663199a
Merge branch 'feat/session-replay' into feat(SR)/ReplayEvent
brustolin Feb 12, 2024
eae7f93
feat(Session Replay): ReplayEvent, ReplayRecording and Envelope handling
brustolin Feb 14, 2024
7f7be69
Merge branch 'main' into feat(SR)/ReplayEvent
brustolin Feb 14, 2024
37d92b3
Merge branch 'feat/session-replay' into feat(SR)/ReplayEvent
brustolin Feb 14, 2024
9e21c1e
refactoring
brustolin Feb 15, 2024
ad347c3
SessionReplayIntegration
brustolin Feb 16, 2024
723b074
MsgPack
brustolin Feb 19, 2024
d27ec15
Capture with scope
brustolin Feb 19, 2024
665bec4
MsgPack Tests
brustolin Feb 19, 2024
f42c9e7
Format code
getsentry-bot Feb 19, 2024
398e3d0
Replacing envelope item
brustolin Feb 19, 2024
ab57929
Merge branch 'feat(SR)/ReplayEvent' of github.com:getsentry/sentry-co…
brustolin Feb 19, 2024
33ead44
more test
brustolin Feb 19, 2024
6cd821e
Format code
getsentry-bot Feb 19, 2024
216c42e
Hub test
brustolin Feb 19, 2024
21efb9a
Update SentryHubTests.swift
brustolin Feb 19, 2024
b11fc9a
Merge branch 'feat(SR)/ReplayEvent' into feat(SR)/replay-integration
brustolin Feb 20, 2024
d6d8ce0
integration
brustolin Feb 20, 2024
522e972
More tests and log messages
brustolin Feb 20, 2024
522a5da
Format code
getsentry-bot Feb 20, 2024
4463fed
CategoryMapper tests
brustolin Feb 20, 2024
b14f253
Update SentryMsgPackSerializer.m
brustolin Feb 20, 2024
16b192d
Format code
getsentry-bot Feb 20, 2024
3d37160
Format code
getsentry-bot Feb 20, 2024
b725be7
Clean Up PR
brustolin Feb 20, 2024
5443cdc
Update SentryOptions.m
brustolin Feb 20, 2024
32227b1
Test
brustolin Feb 21, 2024
a99524d
Revert "Clean Up PR"
brustolin Feb 21, 2024
cc5eadf
Fixing UIKIT references
brustolin Feb 21, 2024
77066c7
fixing for tvos
brustolin Feb 21, 2024
e5e5b12
more fixes
brustolin Feb 21, 2024
939a6c1
Update Sentry.h
brustolin Feb 21, 2024
837c211
Update project.pbxproj
brustolin Feb 21, 2024
2cab983
Merge branch 'feat/session-replay' into feat(SR)/ReplayEvent
brustolin Feb 21, 2024
a3f7a62
Merge branch 'feat(SR)/ReplayEvent' into feat(SR)/replay-settings
brustolin Feb 21, 2024
00bb955
Merge branch 'feat(SR)/replay-settings' into feat(SR)/replay-integration
brustolin Feb 22, 2024
77f6e42
fix for tvOS
brustolin Feb 22, 2024
6f07d9e
Format code
getsentry-bot Feb 22, 2024
ec2bd0d
Merge branch 'feat/session-replay' into feat(SR)/replay-integration
brustolin Mar 5, 2024
39f8f3d
adjust options
brustolin Mar 5, 2024
19b1cec
Format code
getsentry-bot Mar 5, 2024
78eb6bb
Update SentryViewPhotographer.m
brustolin Mar 5, 2024
4edc54a
Merge branch 'feat(SR)/replay-integration' of github.com:getsentry/se…
brustolin Mar 5, 2024
98ba250
Format code
getsentry-bot Mar 5, 2024
369c117
Some fixes
brustolin Mar 5, 2024
742c83b
Merge branch 'feat(SR)/replay-integration' of github.com:getsentry/se…
brustolin Mar 5, 2024
46f04d8
tying everything
brustolin Mar 5, 2024
e8104c2
Merge branch 'feat/session-replay' into feat(SR)/replay-integration
brustolin Mar 5, 2024
68dc4cd
WIP
brustolin Mar 6, 2024
58d938d
Replay working
brustolin Mar 7, 2024
9dbacfd
Format code
getsentry-bot Mar 7, 2024
f3d8336
using global processor
brustolin Mar 7, 2024
1a07837
refactoring
brustolin Mar 11, 2024
6add56e
more info in videoInfo
brustolin Mar 11, 2024
f648e93
More refactoring
brustolin Mar 11, 2024
e394969
Format code
getsentry-bot Mar 11, 2024
acddddc
context
brustolin Mar 12, 2024
41806d5
Merge branch 'feat(SR)/replay-integration' of github.com:getsentry/se…
brustolin Mar 12, 2024
0dc0d92
Format code
getsentry-bot Mar 12, 2024
680fa70
Merge branch 'feat/session-replay' into feat(SR)/replay-integration
brustolin Mar 12, 2024
049b933
fixed merging
brustolin Mar 12, 2024
0521b22
wip
brustolin Mar 14, 2024
dd65044
Merge branch 'feat/session-replay' into feat(SR)/replay-integration
brustolin Mar 14, 2024
b55c88c
SessionReplayIntegration in swift
brustolin Mar 14, 2024
d261a3a
Update Package.swift
brustolin Mar 14, 2024
c46aae8
Update Package.swift
brustolin Mar 14, 2024
649ff4b
Make it swift
brustolin Mar 18, 2024
554e5ba
Update SentrySessionReplay.swift
brustolin Mar 18, 2024
6c2db34
Update AppDelegate.swift
brustolin Mar 18, 2024
97ea265
fixes
brustolin Mar 18, 2024
ba6c5a3
tests
brustolin Mar 19, 2024
0da9473
Update SentryFileManager.m
brustolin Mar 20, 2024
3252a83
Update Sentry.podspec
brustolin Mar 20, 2024
d8ce8d6
revert Session Replay
brustolin Mar 25, 2024
1afd0d9
Reverting some things :(
brustolin Mar 25, 2024
1612a21
Update Package.swift
brustolin Mar 26, 2024
8fd5e30
Fixing CI
brustolin Mar 26, 2024
0d26201
wip
brustolin Mar 26, 2024
846a53a
restrict version
brustolin Mar 26, 2024
355f627
replay for ios and tvos
brustolin Mar 26, 2024
4376764
Update SentrySessionReplay.m
brustolin Mar 26, 2024
f2fd179
Check for UIKit
brustolin Mar 26, 2024
2eec7ba
Update SentryReplayEventTests.swift
brustolin Mar 27, 2024
693decf
fix tests
brustolin Mar 27, 2024
9224a00
fixing references
brustolin Mar 27, 2024
456e725
Update SentryOnDemandReplay.swift
brustolin Mar 27, 2024
2b254d1
remove vision
brustolin Mar 27, 2024
a73feb1
Update SentryViewPhotographer.swift
brustolin Mar 27, 2024
4b4e7b3
Update SentrySessionReplayIntegration.h
brustolin Mar 27, 2024
5bdf0dd
tests
brustolin Mar 28, 2024
55d376a
Update SentrySessionReplayIntegrationTests.swift
brustolin Mar 28, 2024
a1553fb
tests
brustolin Apr 2, 2024
d527f76
Apply suggestions from code review
brustolin Apr 2, 2024
f4045c9
wip
brustolin Apr 2, 2024
d1e50be
ref
brustolin Apr 2, 2024
8c638c7
Revert "Update Sentry.podspec"
brustolin Apr 2, 2024
da03a69
Update Sentry.podspec
brustolin Apr 2, 2024
f36b11d
remove file size
brustolin Apr 2, 2024
c2d264f
Apply suggestions from code review
brustolin Apr 2, 2024
98fec3b
NoUI config
brustolin Apr 2, 2024
c82c5f9
Merge branch 'feat(SR)/replay-integration' of github.com:getsentry/se…
brustolin Apr 2, 2024
5543054
Update SentryReplayOptions.swift
brustolin Apr 2, 2024
1a1405f
Update SentryOnDemandReplay.swift
brustolin Apr 4, 2024
1f8f703
feat(Session Replay): Experimental Options (#3816)
brustolin Apr 10, 2024
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: 4 additions & 4 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ let package = Package(
targets: [
.binaryTarget(
name: "Sentry",
url: "https://github.com/getsentry/sentry-cocoa/releases/download/8.22.0-alpha.0/Sentry.xcframework.zip",
checksum: "86156301aee5c8774a8cd5c240286f914f6e7721aaac5a7c9d049ea613a4b730" //Sentry-Static
url: "https://github.com/getsentry/sentry-cocoa/releases/download/8.22.4/Sentry.xcframework.zip",
checksum: "0fb20e85ff8fe2fdfcf6add48bd510bccf113f7db3795931e1d8dc0dbbc6d46d" //Sentry-Static
),
.binaryTarget(
name: "Sentry-Dynamic",
url: "https://github.com/getsentry/sentry-cocoa/releases/download/8.22.0-alpha.0/Sentry-Dynamic.xcframework.zip",
checksum: "86156301aee5c8774a8cd5c240286f914f6e7721aaac5a7c9d049ea613a4b730" //Sentry-Dynamic
url: "https://github.com/getsentry/sentry-cocoa/releases/download/8.22.4/Sentry-Dynamic.xcframework.zip",
checksum: "391cb3b9fe2e967383e9232c53daa547ca60a02b1515ff99da6515dbced165a5" //Sentry-Dynamic
),
.target ( name: "SentrySwiftUI",
dependencies: ["Sentry", "SentryInternal"],
Expand Down
10 changes: 7 additions & 3 deletions Samples/iOS-Swift/iOS-Swift/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
let dsn = DSNStorage.shared.getDSN() ?? AppDelegate.defaultDSN
DSNStorage.shared.saveDSN(dsn: dsn)

SentrySDK.start { options in
SentrySDK.start(configureOptions: { options in
options.dsn = dsn
options.beforeSend = { event in
return event
}
options.debug = true

if #available(iOS 16.0, *) {
options.experimental.sessionReplay = SentryReplayOptions(sessionSampleRate: 1, errorSampleRate: 1, redactAllText: false, redactAllImages: true)
}

if #available(iOS 15.0, *) {
options.enableMetricKit = true
}
Expand Down Expand Up @@ -58,7 +62,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
options.sessionTrackingIntervalMillis = 5_000
options.attachScreenshot = true
options.attachViewHierarchy = true

#if targetEnvironment(simulator)
options.enableSpotlight = true
options.environment = "test-app"
Expand Down Expand Up @@ -127,7 +131,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}
return scope
}
}
})
}
//swiftlint:enable function_body_length

Expand Down
6 changes: 4 additions & 2 deletions Sentry.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ Pod::Spec.new do |s|

s.subspec 'Core' do |sp|
sp.source_files = "Sources/Sentry/**/*.{h,hpp,m,mm,c,cpp}",
"Sources/SentryCrash/**/*.{h,hpp,m,mm,c,cpp}", "Sources/Swift/**/*.{swift,h,hpp,m,mm,c,cpp}", "Sources/Sentry/include/module.modulemap"
"Sources/SentryCrash/**/*.{h,hpp,m,mm,c,cpp}", "Sources/Swift/**/*.{swift,h,hpp,m,mm,c,cpp}"
sp.preserve_path = "Sources/Sentry/include/module.modulemap"
sp.public_header_files =
"Sources/Sentry/Public/*.h"
sp.resource_bundles = { "Sentry" => "Sources/Resources/PrivacyInfo.xcprivacy" }
Expand All @@ -41,7 +42,8 @@ Pod::Spec.new do |s|
s.subspec 'HybridSDK' do |sp|
sp.source_files = "Sources/Sentry/**/*.{h,hpp,m,mm,c,cpp}",
"Sources/SentryCrash/**/*.{h,hpp,m,mm,c,cpp}", "Sources/Swift/**/*.{swift,h,hpp,m,mm,c,cpp}"


sp.preserve_path = "Sources/Sentry/include/module.modulemap"
sp.public_header_files =
"Sources/Sentry/Public/*.h", "Sources/Sentry/include/HybridPublic/*.h"

Expand Down
110 changes: 83 additions & 27 deletions Sentry.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions SentryTestUtils/TestCurrentDateProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ public class TestCurrentDateProvider: SentryCurrentDateProvider {
setDate(date: date().addingTimeInterval(TimeInterval(nanoseconds) / 1e9))
internalSystemTime += nanoseconds
}

public func advanceBy(interval: TimeInterval) {
setDate(date: date().addingTimeInterval(interval))
}
brustolin marked this conversation as resolved.
Show resolved Hide resolved

public var timezoneOffsetValue = 0
public override func timezoneOffset() -> Int {
Expand Down
1 change: 1 addition & 0 deletions SentryTestUtils/TestTransport.swift
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import _SentryPrivate
import Foundation

@objc
Expand Down
3 changes: 3 additions & 0 deletions Sources/Configuration/SentryNoUI.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include "Sentry.xcconfig"

OTHER_SWIFT_FLAGS = -DSENTRY_NO_UIKIT
1 change: 0 additions & 1 deletion Sources/Sentry/Public/Sentry.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ FOUNDATION_EXPORT const unsigned char SentryVersionString[];
#import "SentryMessage.h"
#import "SentryNSError.h"
#import "SentryOptions.h"
#import "SentryReplayOptions.h"
#import "SentryRequest.h"
#import "SentrySDK.h"
#import "SentrySampleDecision.h"
Expand Down
15 changes: 7 additions & 8 deletions Sources/Sentry/Public/SentryOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ NS_ASSUME_NONNULL_BEGIN

@class SentryDsn, SentryMeasurementValue, SentryHttpStatusCodeRange, SentryScope,
SentryReplayOptions;
@class SentryExperimentalOptions;

NS_SWIFT_NAME(Options)
@interface SentryOptions : NSObject
Expand Down Expand Up @@ -271,14 +272,6 @@ NS_SWIFT_NAME(Options)
*/
@property (nonatomic, assign) BOOL enablePreWarmedAppStartTracing;

/**
* @warning This is an experimental feature and may still have bugs.
* Settings to configure the session replay.
* @node Default value is @c nil .
*/
@property (nonatomic, strong)
SentryReplayOptions *sessionReplayOptions API_AVAILABLE(ios(16.0), tvos(16.0));

#endif // SENTRY_UIKIT_AVAILABLE

/**
Expand Down Expand Up @@ -567,6 +560,12 @@ NS_SWIFT_NAME(Options)
*/
@property (nonatomic, copy) NSString *spotlightUrl;

/**
* This will agreggate options for all experimental features.
* Be aware that the options available for experimental can change at any time.
*/
@property (nonatomic, readonly) SentryExperimentalOptions *experimental;

@end

NS_ASSUME_NONNULL_END
38 changes: 0 additions & 38 deletions Sources/Sentry/Public/SentryReplayOptions.h

This file was deleted.

6 changes: 3 additions & 3 deletions Sources/Sentry/SentryBaseIntegration.m
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#import "SentryBaseIntegration.h"
#import "SentryCrashWrapper.h"
#import "SentryLog.h"
#import "SentryReplayOptions.h"
#import "SentrySwift.h"
#import <Foundation/Foundation.h>
#import <SentryDependencyContainer.h>
#import <SentryOptions+Private.h>
Expand Down Expand Up @@ -144,8 +144,8 @@ - (BOOL)shouldBeEnabledWithOptions:(SentryOptions *)options

if (integrationOptions & kIntegrationOptionEnableReplay) {
if (@available(iOS 16.0, tvOS 16.0, *)) {
if (options.sessionReplayOptions.replaysOnErrorSampleRate == 0
&& options.sessionReplayOptions.replaysSessionSampleRate == 0) {
if (options.experimental.sessionReplay.errorSampleRate == 0
&& options.experimental.sessionReplay.sessionSampleRate == 0) {
[self logWithOptionName:@"sessionReplaySettings"];
return NO;
}
Expand Down
5 changes: 3 additions & 2 deletions Sources/Sentry/SentryClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -504,8 +504,9 @@ - (void)captureReplayEvent:(SentryReplayEvent *)replayEvent
return;
}

SentryEnvelope *envelope = [[SentryEnvelope alloc] initWithHeader:[SentryEnvelopeHeader empty]
items:@[ videoEnvelopeItem ]];
SentryEnvelope *envelope = [[SentryEnvelope alloc]
initWithHeader:[[SentryEnvelopeHeader alloc] initWithId:replayEvent.eventId]
items:@[ videoEnvelopeItem ]];

[self captureEnvelope:envelope];
}
Expand Down
18 changes: 18 additions & 0 deletions Sources/Sentry/SentryCoreGraphicsHelper.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#import "SentryCoreGraphicsHelper.h"
#if SENTRY_HAS_UIKIT
@implementation SentryCoreGraphicsHelper
+ (CGMutablePathRef)excludeRect:(CGRect)rectangle fromPath:(CGMutablePathRef)path
{
# if (TARGET_OS_IOS || TARGET_OS_TV)
brustolin marked this conversation as resolved.
Show resolved Hide resolved
# ifdef __IPHONE_16_0
if (@available(iOS 16.0, tvOS 16.0, *)) {
CGPathRef exclude = CGPathCreateWithRect(rectangle, nil);
CGPathRef newPath = CGPathCreateCopyBySubtractingPath(path, exclude, YES);
return CGPathCreateMutableCopy(newPath);
}
# endif // defined(__IPHONE_16_0)
# endif // (TARGET_OS_IOS || TARGET_OS_TV)
return path;
}
@end
#endif // SENTRY_HAS_UIKIT
2 changes: 1 addition & 1 deletion Sources/Sentry/SentryDateUtil.m
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ + (NSDate *_Nullable)getMaximumDate:(NSDate *_Nullable)first andOther:(NSDate *_

+ (long)millisecondsSince1970:(NSDate *)date
{
return (NSInteger)([date timeIntervalSince1970] * 1000);
return (long)([date timeIntervalSince1970] * 1000);
brustolin marked this conversation as resolved.
Show resolved Hide resolved
}

@end
Expand Down
5 changes: 5 additions & 0 deletions Sources/Sentry/SentryEnvelope.m
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,11 @@ - (nullable instancetype)initWithReplayEvent:(SentryReplayEvent *)replayEvent
}

NSData *envelopeItemContent = [NSData dataWithContentsOfURL:envelopeContentUrl];

NSError *error;
if (![NSFileManager.defaultManager removeItemAtURL:envelopeContentUrl error:&error]) {
SENTRY_LOG_ERROR(@"Cound not delete temporary replay content from disk: %@", error);
}
return [self initWithHeader:[[SentryEnvelopeItemHeader alloc]
initWithType:SentryEnvelopeItemTypeReplayVideo
length:envelopeItemContent.length]
Expand Down
22 changes: 11 additions & 11 deletions Sources/Sentry/SentryOptions.m
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@
#import "SentryOptions+Private.h"
#import "SentrySDK.h"
#import "SentryScope.h"
#import "SentrySessionReplayIntegration.h"
#import "SentrySwift.h"
#import "SentrySwiftAsyncIntegration.h"

#import <objc/runtime.h>

#if SENTRY_HAS_UIKIT
# import "SentryAppStartTrackingIntegration.h"
# import "SentryFramesTrackingIntegration.h"
# import "SentryPerformanceTrackingIntegration.h"
# import "SentryReplayOptions+Private.h"
# import "SentryScreenshotIntegration.h"
# import "SentryUIEventTrackingIntegration.h"
# import "SentryViewHierarchyIntegration.h"
Expand Down Expand Up @@ -58,6 +58,9 @@ - (void)setMeasurement:(SentryMeasurementValue *)measurement
NSStringFromClass([SentryUIEventTrackingIntegration class]),
NSStringFromClass([SentryViewHierarchyIntegration class]),
NSStringFromClass([SentryWatchdogTerminationTrackingIntegration class]),
# if !TARGET_OS_VISION
NSStringFromClass([SentrySessionReplayIntegration class]),
# endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# endif
# endif // !TARGET_OS_VISION

#endif // SENTRY_HAS_UIKIT
NSStringFromClass([SentryANRTrackingIntegration class]),
NSStringFromClass([SentryAutoBreadcrumbTrackingIntegration class]),
Expand Down Expand Up @@ -103,7 +106,7 @@ - (instancetype)init
self.enableTimeToFullDisplayTracing = NO;

self.initialScope = ^SentryScope *(SentryScope *scope) { return scope; };

_experimental = [[SentryExperimentalOptions alloc] init];
_enableTracing = NO;
_enableTracingManual = NO;
#if SENTRY_HAS_UIKIT
Expand Down Expand Up @@ -401,13 +404,6 @@ - (BOOL)validateOptions:(NSDictionary<NSString *, id> *)options
[self setBool:options[@"enablePreWarmedAppStartTracing"]
block:^(BOOL value) { self->_enablePreWarmedAppStartTracing = value; }];

if (@available(iOS 16.0, tvOS 16.0, *)) {
if ([options[@"sessionReplayOptions"] isKindOfClass:NSDictionary.class]) {
self.sessionReplayOptions =
[[SentryReplayOptions alloc] initWithDictionary:options[@"sessionReplayOptions"]];
}
}

#endif // SENTRY_HAS_UIKIT

[self setBool:options[@"enableAppHangTracking"]
Expand Down Expand Up @@ -503,6 +499,10 @@ - (BOOL)validateOptions:(NSDictionary<NSString *, id> *)options
self.spotlightUrl = options[@"spotlightUrl"];
}

if ([options[@"experimental"] isKindOfClass:NSDictionary.class]) {
[self.experimental validateOptions:options[@"experimental"]];
}

return YES;
}

Expand Down Expand Up @@ -743,4 +743,4 @@ - (NSString *)debugDescription
}
#endif // defined(DEBUG) || defined(TEST) || defined(TESTCI)

@end
@end
6 changes: 3 additions & 3 deletions Sources/Sentry/SentryReplayEvent.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ - (NSDictionary *)serialize
}

result[@"urls"] = self.urls;
result[@"replay_start_timestamp"] =
@([SentryDateUtil millisecondsSince1970:self.replayStartTimestamp]);
result[@"replay_start_timestamp"] = @(self.replayStartTimestamp.timeIntervalSince1970);
result[@"trace_ids"] = trace_ids;
result[@"replay_id"] = self.replayId.sentryIdString;
result[@"replay_id"] = self.eventId.sentryIdString;
result[@"segment_id"] = @(self.segmentId);
result[@"replay_type"] = nameForSentryReplayType(self.replayType);
result[@"error_ids"] = @[];

return result;
}
Expand Down
51 changes: 0 additions & 51 deletions Sources/Sentry/SentryReplayOptions.m

This file was deleted.

Loading
Loading