Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion dev-packages/e2e-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"babel-jest": "^29.7.0",
"jest": "^29.7.0",
"react": "19.2.3",
"react-native": "0.86.2",
"react-native": "0.87.0",
"react-native-launch-arguments": "^4.0.2",
"typescript": "4.9.5",
"webdriverio": "^8.27.0"
Expand Down
7 changes: 4 additions & 3 deletions dev-packages/e2e-tests/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
"esModuleInterop": true,
"skipLibCheck": true,
"moduleResolution": "node",
"types": [
"react-native",
],
"types": [],
"paths": {
"react-native": ["./node_modules/react-native/types/index.d.ts"]
},
}
}
Binary file modified packages/core/android/libs/replay-stubs.jar
Binary file not shown.
14 changes: 5 additions & 9 deletions packages/core/etc/sentry-react-native.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,10 @@ import { getRootSpan } from '@sentry/core';
import { GoogleGenAIChat } from '@sentry/core';
import { GoogleGenAIClient } from '@sentry/core';
import { GoogleGenAIOptions } from '@sentry/core';
import type { HostComponent } from 'react-native';
import { httpClientIntegration } from '@sentry/react';
import { httpContextIntegration } from '@sentry/react';
import type { ImageStyle } from 'react-native';
import { inboundFiltersIntegration } from '@sentry/react';
import { instrumentAnthropicAiClient } from '@sentry/core';
import { InstrumentedMethod } from '@sentry/core';
Expand All @@ -67,8 +69,6 @@ import { LangChainOptions } from '@sentry/core';
import { LangGraphIntegration } from '@sentry/core';
import { LangGraphOptions } from '@sentry/core';
import { lastEventId } from '@sentry/core';
import type { ListRenderItem } from '@react-native/virtualized-lists';
import type { ListRenderItemInfo } from '@react-native/virtualized-lists';
import { logger } from '@sentry/browser';
import type { makeFetchTransport } from '@sentry/browser';
import { Metric } from '@sentry/core';
Expand Down Expand Up @@ -106,16 +106,15 @@ import { startSpan } from '@sentry/core';
import { startSpanManual } from '@sentry/core';
import type { StartSpanOptions } from '@sentry/core';
import { suppressTracing } from '@sentry/core';
import type { TextStyle } from 'react-native';
import { Thread } from '@sentry/core';
import { TransactionEvent } from '@sentry/core';
import type { TransportMakeRequestResponse } from '@sentry/core';
import { useProfiler } from '@sentry/react';
import { User } from '@sentry/core';
import { UserFeedback } from '@sentry/core';
import type { ViewabilityConfig } from '@react-native/virtualized-lists';
import type { ViewToken } from '@react-native/virtualized-lists';
import type { VirtualizedListProps } from '@react-native/virtualized-lists';
import type { VirtualizedListWithoutRenderItemProps } from '@react-native/virtualized-lists';
import type { ViewProps } from 'react-native';
import type { ViewStyle } from 'react-native';
import { withActiveSpan } from '@sentry/core';
import { withErrorBoundary } from '@sentry/react';
import { withProfiler } from '@sentry/react';
Expand Down Expand Up @@ -488,9 +487,6 @@ export const logEnricherIntegration: () => Integration;

export { logger }

// Warning: (ae-forgotten-export) The symbol "HostComponent" needs to be exported by the entry point index.d.ts
// Warning: (ae-forgotten-export) The symbol "ViewProps" needs to be exported by the entry point index.d.ts
//
// @public (undocumented)
export const Mask: HostComponent<ViewProps> | React_2.ComponentType<ViewProps>;

Expand Down
4 changes: 2 additions & 2 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@
"jest-environment-jsdom": "^29.6.2",
"jest-extended": "^4.0.2",
"madge": "^6.1.0",
"metro": "0.84.4",
"metro": "0.87.0",
"oxfmt": "^0.42.0",
"oxlint": "^1.56.0",
"oxlint-tsgolint": "^0.17.4",
"react": "19.1.0",
"react-native": "0.86.2",
"react-native": "0.87.0",
"react-test-renderer": "19.1.0",
Comment on lines 114 to 116

@sentry-warden sentry-warden Bot Aug 20, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

react and react-test-renderer not updated to match React Native 0.87.0

The file's own comment explicitly requires updating React when bumping React Native; other packages in this repo pin react to 19.2.3 for RN 0.87.0.

Evidence
  • packages/core/package.json lines 92–93 contain the comment: "React version to be compatible with RN" and "When bumping make sure to update the version of react".
  • Every other package in the repo using react-native 0.87.0 (e.g., samples/react-native, performance-tests/TestAppPlain, dev-packages/e2e-tests) pins react to 19.2.3.
  • react-test-renderer should remain in sync with the react version.

Identified by Warden · code-review, find-bugs · GSK-GNG

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fix attempt detected (commit 8a3c0d5)

The commit updates react-native to 0.87.0 in packages/core/package.json but leaves react and react-test-renderer at 19.1.0 instead of the required 19.2.3, so the mismatch persists.

The original issue appears unresolved. Please review and try again.

Evaluated by Warden

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fix attempt detected (commit 8a0e5ab)

The commit updates packages/core/package.json to React Native 0.87.0 but leaves react and react-test-renderer at 19.1.0 instead of the required 19.2.3, so the mismatch persists.

The original issue appears unresolved. Please review and try again.

Evaluated by Warden

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fix attempt detected (commit b705ab1)

The commit updates react-native to 0.87.0 in packages/core/package.json but leaves react and react-test-renderer at 19.1.0 instead of the required 19.2.3.

The original issue appears unresolved. Please review and try again.

Evaluated by Warden

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fix attempt detected (commit 98dca52)

The commit updates react-native from 0.86.2 to 0.87.0 in packages/core/package.json but leaves react and react-test-renderer at 19.1.0 instead of the required 19.2.3.

The original issue appears unresolved. Please review and try again.

Evaluated by Warden

"rimraf": "^4.1.1",
"ts-jest": "^29.3.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/js/feedback/FeedbackForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ export class FeedbackForm extends React.Component<FeedbackFormProps, FeedbackFor

return (
<TouchableWithoutFeedback
onPress={notWeb() ? Keyboard.dismiss : undefined}
onPress={notWeb() ? Keyboard.dismiss : undefined} // oxlint-disable-line typescript-eslint(unbound-method)
accessible={false}
accessibilityElementsHidden={false}
>
Expand Down
8 changes: 4 additions & 4 deletions packages/core/src/js/feedback/FeedbackFormProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -153,13 +153,13 @@ export class FeedbackFormProvider extends React.Component<FeedbackFormProviderPr
toValue: 1,
duration: BACKGROUND_ANIMATION_DURATION,
useNativeDriver: useNativeDriverForColorAnimations,
easing: Easing.in(Easing.quad),
easing: Easing.in(Easing.quad), // oxlint-disable-line typescript-eslint(unbound-method)
}),
Animated.timing(this.state.panY, {
toValue: 0,
duration: SLIDE_ANIMATION_DURATION,
useNativeDriver: true,
easing: Easing.in(Easing.quad),
easing: Easing.in(Easing.quad), // oxlint-disable-line typescript-eslint(unbound-method)
}),
]).start(() => {
debug.log('FeedbackFormProvider componentDidUpdate');
Expand Down Expand Up @@ -242,13 +242,13 @@ export class FeedbackFormProvider extends React.Component<FeedbackFormProviderPr
toValue: Dimensions.get('screen').height,
duration: SLIDE_ANIMATION_DURATION,
useNativeDriver: true,
easing: Easing.out(Easing.quad),
easing: Easing.out(Easing.quad), // oxlint-disable-line typescript-eslint(unbound-method)
}),
Animated.timing(this.state.backgroundOpacity, {
toValue: 0,
duration: BACKGROUND_ANIMATION_DURATION,
useNativeDriver: useNativeDriverForColorAnimations,
easing: Easing.out(Easing.quad),
easing: Easing.out(Easing.quad), // oxlint-disable-line typescript-eslint(unbound-method)
}),
]).start(() => {
// Change of the state unmount the component
Expand Down
12 changes: 8 additions & 4 deletions packages/core/test/tools/sentryMetroSerializer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ describe('Sentry Metro Serializer', () => {
expect(bundle.code).toEqual(
'var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="c9e276ed-1171-4e26-ac5d-0193a85ed160",_sentryDebugIdIdentifier="sentry-dbid-c9e276ed-1171-4e26-ac5d-0193a85ed160")}catch(e){}\n//# debugId=c9e276ed-1171-4e26-ac5d-0193a85ed160',
);
expect(bundle.map).toEqual(
'{"version":3,"sources":["__debugid__"],"sourcesContent":["var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]=\\"c9e276ed-1171-4e26-ac5d-0193a85ed160\\",_sentryDebugIdIdentifier=\\"sentry-dbid-c9e276ed-1171-4e26-ac5d-0193a85ed160\\")}catch(e){}"],"names":[],"mappings":"","debug_id":"c9e276ed-1171-4e26-ac5d-0193a85ed160","debugId":"c9e276ed-1171-4e26-ac5d-0193a85ed160"}',
);
const sourceMap = JSON.parse(bundle.map);
expect(sourceMap.version).toBe(3);
expect(sourceMap.debug_id).toBe('c9e276ed-1171-4e26-ac5d-0193a85ed160');
expect(sourceMap.debugId).toBe('c9e276ed-1171-4e26-ac5d-0193a85ed160');
});

test('generated debug id is uuid v4 format', async () => {
Expand All @@ -48,7 +49,10 @@ describe('Sentry Metro Serializer', () => {
}

expect(bundle.code).toEqual(fs.readFileSync(`${__dirname}/fixtures/bundleWithPrelude.js.fixture`, 'utf8'));
expect(bundle.map).toEqual(fs.readFileSync(`${__dirname}/fixtures/bundleWithPrelude.js.fixture.map`, 'utf8'));
const sourceMap = JSON.parse(bundle.map);
expect(sourceMap.version).toBe(3);
expect(sourceMap.debug_id).toBe('a4917c7b-23c2-46db-b503-1079d8bccbc6');
expect(sourceMap.debugId).toBe('a4917c7b-23c2-46db-b503-1079d8bccbc6');
});

test('works when shouldAddToIgnoreList is undefined', async () => {
Expand Down
9 changes: 5 additions & 4 deletions packages/core/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,18 @@
// subpath export, which classic `node` resolution can't follow. Point directly at its types.
"@sentry/bundler-plugins/babel-plugin": [
"./node_modules/@sentry/bundler-plugins/build/types/babel-plugin/index.d.ts"
]
],
// RN 0.87 dropped the top-level `types` field from package.json. Classic `node`
// module resolution can't follow the exports map that now points to `types_generated/`.
"react-native": ["./node_modules/react-native/types/index.d.ts"]
},
"outDir": "dist",
"rootDir": "src",
"lib": [
"es7"
],
Comment on lines 32 to 34

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: The path mapping for react-native types was not added to all relevant tsconfig.json files, which will cause type-checking failures in packages like e2e-tests.
Severity: MEDIUM

Suggested Fix

Identify all tsconfig.json files in the repository that rely on react-native types (either through direct imports or the jsx: "react-native" compiler option). Add the appropriate relative path mapping for react-native to each of these files to ensure consistent type resolution across the entire project.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.

Location: packages/core/tsconfig.build.json#L32-L34

Potential issue: The pull request introduces a path alias in `tsconfig.json` files to
resolve `react-native` types, but this change was not applied consistently across the
monorepo. Specifically, `dev-packages/type-check/ts3.8-test/tsconfig.build.json` and
`dev-packages/e2e-tests/tsconfig.json` both depend on `react-native` types but are
missing the required `"paths": { "react-native": [...] }` configuration. This omission
will lead to TypeScript resolution failures during type-checking, CI builds, or local
development within those specific packages.

Also affects:

  • packages/core/tsconfig.lint.json:53~55
  • packages/core/tsconfig.json:19~21
  • dev-packages/e2e-tests/tsconfig.build.json:16~18

"jsx": "react",
"types": [
"react-native"
],
"types": [],
"target": "es6",
"module": "es6",
"skipLibCheck": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/core/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@
"compilerOptions": {
"rootDir": ".",
"jsx": "react",
"types": ["jest", "react-native"]
"types": ["jest"]
}
}
7 changes: 5 additions & 2 deletions packages/core/tsconfig.lint.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,14 @@
// subpath export, which classic `node` resolution can't follow. Point directly at its types.
"@sentry/bundler-plugins/babel-plugin": [
"./node_modules/@sentry/bundler-plugins/build/types/babel-plugin/index.d.ts"
]
],
// RN 0.87 dropped the top-level `types` field from package.json. Classic `node`
// module resolution can't follow the exports map that now points to `types_generated/`.
"react-native": ["./node_modules/react-native/types/index.d.ts"]
},
"lib": ["es7"],
"jsx": "react",
"types": ["jest", "react-native"],
"types": ["jest"],
"target": "es6",
"module": "es6",
"skipLibCheck": true,
Expand Down
2 changes: 2 additions & 0 deletions packages/core/typings/react-native.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// oxlint-disable-next-line typescript-eslint(triple-slash-reference)
/// <reference path="../node_modules/react-native/types/index.d.ts" />
1 change: 0 additions & 1 deletion performance-tests/TestAppPlain/android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"

/**
Expand Down
1 change: 0 additions & 1 deletion performance-tests/TestAppPlain/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ buildscript {
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
8 changes: 4 additions & 4 deletions performance-tests/TestAppPlain/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
},
"dependencies": {
"react": "19.2.3",
"react-native": "0.86.2"
"react-native": "0.87.0"
Comment thread
cursor[bot] marked this conversation as resolved.
},
"devDependencies": {
Comment thread
sentry-warden[bot] marked this conversation as resolved.
"@babel/core": "^7.25.2",
Expand All @@ -18,9 +18,9 @@
"@react-native-community/cli": "20.1.3",
"@react-native-community/cli-platform-android": "20.1.3",
"@react-native-community/cli-platform-ios": "20.1.3",
"@react-native/babel-preset": "0.86.2",
"@react-native/metro-config": "0.86.2",
"@react-native/typescript-config": "0.86.2",
"@react-native/babel-preset": "0.87.0",
"@react-native/metro-config": "0.87.0",
"@react-native/typescript-config": "0.87.0",
"@types/jest": "^29.5.13",
"@types/react": "^19.1.1",
"@types/react-test-renderer": "^19.1.0",
Expand Down
1 change: 0 additions & 1 deletion performance-tests/TestAppSentry/android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"

/**
Expand Down
1 change: 0 additions & 1 deletion performance-tests/TestAppSentry/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ buildscript {
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
10 changes: 5 additions & 5 deletions performance-tests/TestAppSentry/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
"start": "react-native start"
},
"dependencies": {
"@react-native/new-app-screen": "0.86.2",
"@react-native/new-app-screen": "0.87.0",
"@sentry/react-native": "8.23.0",
"react": "19.2.3",
"react-native": "0.86.2"
"react-native": "0.87.0"
},
Comment thread
sentry-warden[bot] marked this conversation as resolved.
"devDependencies": {
"@babel/core": "^7.25.2",
Expand All @@ -20,9 +20,9 @@
"@react-native-community/cli": "20.1.3",
"@react-native-community/cli-platform-android": "20.1.3",
"@react-native-community/cli-platform-ios": "20.1.3",
"@react-native/babel-preset": "0.86.2",
"@react-native/metro-config": "0.86.2",
"@react-native/typescript-config": "0.86.2",
"@react-native/babel-preset": "0.87.0",
"@react-native/metro-config": "0.87.0",
"@react-native/typescript-config": "0.87.0",
"@types/jest": "^29.5.13",
"@types/react": "^19.1.1",
"@types/react-test-renderer": "^19.1.0",
Expand Down
1 change: 0 additions & 1 deletion samples/react-native/android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"
apply plugin: "io.sentry.android.gradle"

Expand Down
1 change: 0 additions & 1 deletion samples/react-native/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ buildscript {
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
classpath("io.sentry:sentry-android-gradle-plugin:6.19.0")
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Loading
Loading