@sentry/react-native 5.33.2 → 5.35.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +8 -0
  3. package/RNSentry.podspec +1 -1
  4. package/android/build.gradle +1 -1
  5. package/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +35 -15
  6. package/android/src/main/java/io/sentry/react/RNSentryPackage.java +0 -1
  7. package/android/src/main/java/io/sentry/react/RNSentryTimeToDisplay.java +39 -0
  8. package/android/src/newarch/java/io/sentry/react/RNSentryModule.java +5 -0
  9. package/android/src/oldarch/java/io/sentry/react/RNSentryModule.java +5 -0
  10. package/dist/js/NativeRNSentry.d.ts +1 -0
  11. package/dist/js/NativeRNSentry.d.ts.map +1 -1
  12. package/dist/js/NativeRNSentry.js.map +1 -1
  13. package/dist/js/integrations/nativelinkederrors.js +7 -2
  14. package/dist/js/integrations/nativelinkederrors.js.map +1 -1
  15. package/dist/js/tracing/reactnavigation.d.ts.map +1 -1
  16. package/dist/js/tracing/reactnavigation.js +7 -7
  17. package/dist/js/tracing/reactnavigation.js.map +1 -1
  18. package/dist/js/tracing/timetodisplay.d.ts.map +1 -1
  19. package/dist/js/tracing/timetodisplay.js +3 -1
  20. package/dist/js/tracing/timetodisplay.js.map +1 -1
  21. package/dist/js/utils/sentryeventemitterfallback.d.ts +19 -0
  22. package/dist/js/utils/sentryeventemitterfallback.d.ts.map +1 -0
  23. package/dist/js/utils/sentryeventemitterfallback.js +78 -0
  24. package/dist/js/utils/sentryeventemitterfallback.js.map +1 -0
  25. package/dist/js/version.d.ts +1 -1
  26. package/dist/js/version.d.ts.map +1 -1
  27. package/dist/js/version.js +1 -1
  28. package/dist/js/version.js.map +1 -1
  29. package/dist/js/wrapper.d.ts +2 -1
  30. package/dist/js/wrapper.d.ts.map +1 -1
  31. package/dist/js/wrapper.js +43 -5
  32. package/dist/js/wrapper.js.map +1 -1
  33. package/ios/RNSentry.mm +18 -1
  34. package/ios/RNSentryTimeToDisplay.h +7 -0
  35. package/ios/RNSentryTimeToDisplay.m +43 -0
  36. package/package.json +2 -2
  37. package/sentry.gradle +3 -6
  38. package/src/js/NativeRNSentry.ts +2 -0
  39. package/ts3.8/dist/js/NativeRNSentry.d.ts +1 -0
  40. package/ts3.8/dist/js/utils/sentryeventemitterfallback.d.ts +19 -0
  41. package/ts3.8/dist/js/version.d.ts +1 -1
  42. package/ts3.8/dist/js/wrapper.d.ts +2 -1
@@ -0,0 +1,43 @@
1
+ #import "RNSentryTimeToDisplay.h"
2
+ #import <QuartzCore/QuartzCore.h>
3
+ #import <React/RCTLog.h>
4
+
5
+ @implementation RNSentryTimeToDisplay
6
+ {
7
+ CADisplayLink *displayLink;
8
+ RCTResponseSenderBlock resolveBlock;
9
+ }
10
+
11
+ // Rename requestAnimationFrame to getTimeToDisplay
12
+ - (void)getTimeToDisplay:(RCTResponseSenderBlock)callback
13
+ {
14
+ // Store the resolve block to use in the callback.
15
+ resolveBlock = callback;
16
+
17
+ #if TARGET_OS_IOS
18
+ // Create and add a display link to get the callback after the screen is rendered.
19
+ displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)];
20
+ [displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
21
+ #else
22
+ resolveBlock(@[]); // Return nothing if not iOS.
23
+ #endif
24
+ }
25
+
26
+ #if TARGET_OS_IOS
27
+ - (void)handleDisplayLink:(CADisplayLink *)link {
28
+ // Get the current time
29
+ NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970] * 1000.0; // Convert to milliseconds
30
+
31
+ // Ensure the callback is valid and pass the current time back
32
+ if (resolveBlock) {
33
+ resolveBlock(@[@(currentTime)]); // Call the callback with the current time
34
+ resolveBlock = nil; // Clear the block after it's called
35
+ }
36
+
37
+ // Invalidate the display link to stop future callbacks
38
+ [displayLink invalidate];
39
+ displayLink = nil;
40
+ }
41
+ #endif
42
+
43
+ @end
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@sentry/react-native",
3
3
  "homepage": "https://github.com/getsentry/sentry-react-native",
4
4
  "repository": "https://github.com/getsentry/sentry-react-native",
5
- "version": "5.33.2",
5
+ "version": "5.35.0-beta.0",
6
6
  "description": "Official Sentry SDK for react-native",
7
7
  "typings": "dist/js/index.d.ts",
8
8
  "types": "dist/js/index.d.ts",
@@ -69,7 +69,7 @@
69
69
  "dependencies": {
70
70
  "@sentry/babel-plugin-component-annotate": "2.20.1",
71
71
  "@sentry/browser": "7.119.1",
72
- "@sentry/cli": "2.36.6",
72
+ "@sentry/cli": "2.37.0",
73
73
  "@sentry/core": "7.119.1",
74
74
  "@sentry/hub": "7.119.0",
75
75
  "@sentry/integrations": "7.119.0",
package/sentry.gradle CHANGED
@@ -65,9 +65,6 @@ gradle.projectsEvaluated {
65
65
  def currentVariants = extractCurrentVariants(bundleTask, releases)
66
66
  if (currentVariants == null) return
67
67
 
68
- def variant = null
69
- def releaseName = null
70
- def versionCode = null
71
68
  def previousCliTask = null
72
69
  def applicationVariant = null
73
70
 
@@ -75,9 +72,9 @@ gradle.projectsEvaluated {
75
72
  def nameModulesCleanup = "${bundleTask.name}_SentryCollectModulesCleanUp"
76
73
  // Upload the source map several times if necessary: once for each release and versionCode.
77
74
  currentVariants.each { key, currentVariant ->
78
- variant = currentVariant[0]
79
- releaseName = currentVariant[1]
80
- versionCode = currentVariant[2]
75
+ def variant = currentVariant[0]
76
+ def releaseName = currentVariant[1]
77
+ def versionCode = currentVariant[2]
81
78
  applicationVariant = currentVariant[3]
82
79
 
83
80
  try {
@@ -9,6 +9,7 @@ import type { UnsafeObject } from './utils/rnlibrariesinterface';
9
9
  export interface Spec extends TurboModule {
10
10
  addListener: (eventType: string) => void;
11
11
  removeListeners: (id: number) => void;
12
+ getNewScreenTimeToDisplay(): Promise<number | undefined | null>;
12
13
  addBreadcrumb(breadcrumb: UnsafeObject): void;
13
14
  captureEnvelope(
14
15
  bytes: string,
@@ -16,6 +17,7 @@ export interface Spec extends TurboModule {
16
17
  hardCrashed: boolean;
17
18
  },
18
19
  ): Promise<boolean>;
20
+
19
21
  captureScreenshot(): Promise<NativeScreenshot[] | undefined | null>;
20
22
  clearBreadcrumbs(): void;
21
23
  crash(): void;
@@ -4,6 +4,7 @@ import type { UnsafeObject } from './utils/rnlibrariesinterface';
4
4
  export interface Spec extends TurboModule {
5
5
  addListener: (eventType: string) => void;
6
6
  removeListeners: (id: number) => void;
7
+ getNewScreenTimeToDisplay(): Promise<number | undefined | null>;
7
8
  addBreadcrumb(breadcrumb: UnsafeObject): void;
8
9
  captureEnvelope(bytes: string, options: {
9
10
  hardCrashed: boolean;
@@ -0,0 +1,19 @@
1
+ import type { SentryEventEmitter } from './sentryeventemitter';
2
+ export declare const FALLBACK_TIMEOUT_MS = 10000;
3
+ export type FallBackNewFrameEvent = {
4
+ newFrameTimestampInSeconds: number;
5
+ isFallback?: boolean;
6
+ };
7
+ export interface SentryEventEmitterFallback {
8
+ /**
9
+ * Initializes the fallback event emitter
10
+ * This method is synchronous in JS but the event emitter starts asynchronously.
11
+ */
12
+ initAsync: () => void;
13
+ onceNewFrame: (listener: (event: FallBackNewFrameEvent) => void) => void;
14
+ }
15
+ /**
16
+ * Creates emitter that allows to listen to UI Frame events when ready.
17
+ */
18
+ export declare function createSentryFallbackEventEmitter(emitter?: SentryEventEmitter, fallbackTimeoutMs?: number): SentryEventEmitterFallback;
19
+ //# sourceMappingURL=sentryeventemitterfallback.d.ts.map
@@ -1,4 +1,4 @@
1
1
  export declare const SDK_PACKAGE_NAME = "npm:@sentry/react-native";
2
2
  export declare const SDK_NAME = "sentry.javascript.react-native";
3
- export declare const SDK_VERSION = "5.33.2";
3
+ export declare const SDK_VERSION = "5.35.0-beta.0";
4
4
  //# sourceMappingURL=version.d.ts.map
@@ -46,7 +46,7 @@ interface SentryNativeWrapper {
46
46
  enableNativeFramesTracking(): void;
47
47
  addBreadcrumb(breadcrumb: Breadcrumb): void;
48
48
  setContext(key: string, context: {
49
- [key: string]: unknown;
49
+ [key: string]: any;
50
50
  } | null): void;
51
51
  clearBreadcrumbs(): void;
52
52
  setExtra(key: string, extra: unknown): void;
@@ -70,6 +70,7 @@ interface SentryNativeWrapper {
70
70
  captureReplay(isHardCrash: boolean): Promise<string | null>;
71
71
  getCurrentReplayId(): string | null;
72
72
  crashedLastRun(): Promise<boolean | null>;
73
+ getNewScreenTimeToDisplay(): Promise<number | null | undefined>;
73
74
  }
74
75
  /**
75
76
  * Our internal interface for calling native functions