Skip to content

Commit 1faf8e3

Browse files
Do not ignore require cycle logs for RN >= 0.70 (#4214)
* Do not ignore require cycle logs for RN > 0.70 --------- Co-authored-by: LucasZF <[email protected]>
1 parent 7b6b0bc commit 1faf8e3

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
### Fixes
1212

13+
- Skips ignoring require cycle logs for RN 0.70 or newer ([#4214](https://github.com/getsentry/sentry-react-native/pull/4214))
1314
- Enhanced accuracy of time-to-display spans. ([#4189](https://github.com/getsentry/sentry-react-native/pull/4189))
1415

1516
### Dependencies

packages/core/src/js/client.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { MOBILE_REPLAY_INTEGRATION_NAME } from './replay/mobilereplay';
2121
import { createUserFeedbackEnvelope, items } from './utils/envelope';
2222
import { ignoreRequireCycleLogs } from './utils/ignorerequirecyclelogs';
2323
import { mergeOutcomes } from './utils/outcome';
24+
import { ReactNativeLibraries } from './utils/rnlibraries';
2425
import { NATIVE } from './wrapper';
2526

2627
/**
@@ -37,7 +38,7 @@ export class ReactNativeClient extends BaseClient<ReactNativeClientOptions> {
3738
* @param options Configuration options for this SDK.
3839
*/
3940
public constructor(options: ReactNativeClientOptions) {
40-
ignoreRequireCycleLogs();
41+
ignoreRequireCycleLogs(ReactNativeLibraries.ReactNativeVersion?.version);
4142
options._metadata = options._metadata || {};
4243
options._metadata.sdk = options._metadata.sdk || defaultSdkInfo;
4344
// We default this to true, as it is the safer scenario
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
import { LogBox } from 'react-native';
22

3+
interface ReactNativeVersion {
4+
major: number;
5+
minor: number;
6+
}
7+
38
/**
49
* This is a workaround for using fetch on RN, this is a known issue in react-native and only generates a warning.
510
*/
6-
export function ignoreRequireCycleLogs(): void {
7-
LogBox.ignoreLogs(['Require cycle:']);
11+
export function ignoreRequireCycleLogs(version?: ReactNativeVersion): void {
12+
if (version && version.major === 0 && version.minor < 70) {
13+
// Do not ignore require cycle logs on React Native versions >= 0.70
14+
// https://github.com/getsentry/sentry-react-native/issues/3484#issuecomment-1877034820
15+
LogBox.ignoreLogs(['Require cycle:']);
16+
}
817
}

packages/core/test/client.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ describe('Tests ReactNativeClient', () => {
104104
});
105105

106106
await expect(client.eventFromMessage('test')).resolves.toBeDefined();
107-
await expect(RN.LogBox.ignoreLogs).toBeCalled();
107+
await expect(RN.LogBox.ignoreLogs).not.toBeCalled();
108108
});
109109

110110
test('invalid dsn is thrown', () => {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { LogBox } from 'react-native';
2+
3+
import { ignoreRequireCycleLogs } from '../../src/js/utils/ignorerequirecyclelogs';
4+
5+
jest.mock('react-native', () => ({
6+
LogBox: {
7+
ignoreLogs: jest.fn(),
8+
},
9+
}));
10+
11+
describe('ignoreRequireCycleLogs', () => {
12+
afterEach(() => {
13+
jest.clearAllMocks();
14+
});
15+
16+
it('should ignore logs for React Native version < 0.70', () => {
17+
ignoreRequireCycleLogs({ major: 0, minor: 69 });
18+
expect(LogBox.ignoreLogs).toHaveBeenCalledWith(['Require cycle:']);
19+
});
20+
21+
it('should not ignore logs for React Native version 0.70', () => {
22+
ignoreRequireCycleLogs({ major: 0, minor: 70 });
23+
expect(LogBox.ignoreLogs).not.toHaveBeenCalled();
24+
});
25+
26+
it('should not ignore logs for React Native version > 0.70', () => {
27+
ignoreRequireCycleLogs({ major: 0, minor: 71 });
28+
expect(LogBox.ignoreLogs).not.toHaveBeenCalled();
29+
});
30+
31+
it('should not ignore logs when no version is passed', () => {
32+
ignoreRequireCycleLogs();
33+
expect(LogBox.ignoreLogs).not.toHaveBeenCalled();
34+
});
35+
});

0 commit comments

Comments
 (0)