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

Chore: Upgrade core to RN 0.75 #4173

Open
wants to merge 43 commits into
base: main
Choose a base branch
from
Open

Chore: Upgrade core to RN 0.75 #4173

wants to merge 43 commits into from

Conversation

antonis
Copy link
Collaborator

@antonis antonis commented Oct 15, 2024

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Based on: #4155

💡 Motivation and Context

See #4155 (comment)

💚 How did you test it?

CI and manual test

📝 Checklist

  • I reviewed submitted code
  • I added tests to verify changes
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled
  • All tests passing
  • No breaking changes

🔮 Next steps

#skip-changelog

Copy link
Contributor

github-actions bot commented Oct 15, 2024

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 488.57 ms 526.24 ms 37.67 ms
Size 17.74 MiB 20.07 MiB 2.34 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
34aba08 328.10 ms 342.84 ms 14.74 ms
8ae23a7 526.83 ms 513.38 ms -13.45 ms
abb7058 370.27 ms 389.58 ms 19.31 ms
e73f4ed+dirty 332.96 ms 354.33 ms 21.37 ms
62a750b 395.96 ms 423.36 ms 27.41 ms
31fcca2 391.22 ms 414.78 ms 23.56 ms
fe13591 478.92 ms 480.84 ms 1.92 ms
76d1baf+dirty 335.72 ms 355.52 ms 19.80 ms
5a22220 412.38 ms 447.35 ms 34.97 ms
8900e1a+dirty 430.68 ms 456.13 ms 25.44 ms

App size

Revision Plain With Sentry Diff
34aba08 17.73 MiB 19.80 MiB 2.07 MiB
8ae23a7 17.74 MiB 20.07 MiB 2.34 MiB
abb7058 17.73 MiB 19.83 MiB 2.10 MiB
e73f4ed+dirty 17.73 MiB 20.04 MiB 2.31 MiB
62a750b 17.73 MiB 19.93 MiB 2.20 MiB
31fcca2 17.73 MiB 19.90 MiB 2.17 MiB
fe13591 17.74 MiB 20.07 MiB 2.34 MiB
76d1baf+dirty 17.73 MiB 20.04 MiB 2.31 MiB
5a22220 17.73 MiB 19.93 MiB 2.20 MiB
8900e1a+dirty 17.73 MiB 19.75 MiB 2.01 MiB

Previous results on branch: antonis/rn-0.75.4-core

Startup times

Revision Plain With Sentry Diff
dd27cec 496.40 ms 521.70 ms 25.30 ms
1d9d09f 475.76 ms 476.40 ms 0.64 ms
40940de 475.86 ms 485.71 ms 9.86 ms
043095f 491.90 ms 492.22 ms 0.32 ms
2374c56 458.34 ms 442.32 ms -16.02 ms

App size

Revision Plain With Sentry Diff
dd27cec 17.74 MiB 20.07 MiB 2.34 MiB
1d9d09f 17.74 MiB 20.07 MiB 2.34 MiB
40940de 17.74 MiB 20.07 MiB 2.34 MiB
043095f 17.74 MiB 20.07 MiB 2.34 MiB
2374c56 17.74 MiB 20.07 MiB 2.34 MiB

Copy link
Contributor

github-actions bot commented Oct 15, 2024

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1227.06 ms 1229.17 ms 2.11 ms
Size 2.36 MiB 3.10 MiB 752.36 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
ac41368+dirty 1226.65 ms 1237.90 ms 11.24 ms
62a750b+dirty 1216.60 ms 1229.14 ms 12.54 ms
baa882f+dirty 1218.00 ms 1227.04 ms 9.04 ms
d361d38+dirty 1246.04 ms 1267.12 ms 21.08 ms
4cc5c27+dirty 1211.45 ms 1214.60 ms 3.16 ms
148f924+dirty 1214.76 ms 1215.73 ms 0.97 ms
8ae23a7+dirty 1230.02 ms 1227.62 ms -2.40 ms
31fcca2+dirty 1209.17 ms 1216.21 ms 7.04 ms
0db0c72+dirty 1275.02 ms 1285.84 ms 10.82 ms
3ffcddd+dirty 1244.47 ms 1264.14 ms 19.67 ms

App size

Revision Plain With Sentry Diff
ac41368+dirty 2.36 MiB 3.14 MiB 793.46 KiB
62a750b+dirty 2.36 MiB 2.92 MiB 570.00 KiB
baa882f+dirty 2.36 MiB 3.08 MiB 731.91 KiB
d361d38+dirty 2.36 MiB 2.85 MiB 499.84 KiB
4cc5c27+dirty 2.36 MiB 3.04 MiB 698.52 KiB
148f924+dirty 2.36 MiB 3.04 MiB 696.25 KiB
8ae23a7+dirty 2.36 MiB 3.10 MiB 752.42 KiB
31fcca2+dirty 2.36 MiB 2.90 MiB 552.95 KiB
0db0c72+dirty 2.36 MiB 2.84 MiB 487.01 KiB
3ffcddd+dirty 2.36 MiB 2.84 MiB 489.60 KiB

Previous results on branch: antonis/rn-0.75.4-core

Startup times

Revision Plain With Sentry Diff
40940de+dirty 1221.61 ms 1233.64 ms 12.03 ms
dd27cec+dirty 1210.13 ms 1210.23 ms 0.10 ms
2374c56+dirty 1207.74 ms 1218.33 ms 10.58 ms
043095f+dirty 1234.06 ms 1226.34 ms -7.72 ms
1d9d09f+dirty 1226.44 ms 1219.94 ms -6.50 ms

App size

Revision Plain With Sentry Diff
40940de+dirty 2.36 MiB 3.09 MiB 742.65 KiB
dd27cec+dirty 2.36 MiB 3.10 MiB 752.41 KiB
2374c56+dirty 2.36 MiB 3.09 MiB 742.66 KiB
043095f+dirty 2.36 MiB 3.09 MiB 742.35 KiB
1d9d09f+dirty 2.36 MiB 3.10 MiB 752.41 KiB

Copy link
Contributor

github-actions bot commented Oct 15, 2024

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 378.94 ms 411.15 ms 32.22 ms
Size 7.15 MiB 8.35 MiB 1.20 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
80b2ce3+dirty 271.29 ms 316.47 ms 45.18 ms
5446992+dirty 371.61 ms 390.00 ms 18.39 ms
31fcca2+dirty 366.64 ms 395.78 ms 29.14 ms
457e29f+dirty 591.49 ms 612.96 ms 21.47 ms
e73f4ed+dirty 262.98 ms 311.02 ms 48.04 ms
fe13591+dirty 539.51 ms 597.92 ms 58.40 ms
ad6c299+dirty 336.47 ms 362.89 ms 26.42 ms
148f924+dirty 347.36 ms 389.13 ms 41.77 ms
b1e8712+dirty 322.55 ms 331.84 ms 9.29 ms
6e8584e+dirty 383.37 ms 400.84 ms 17.47 ms

App size

Revision Plain With Sentry Diff
80b2ce3+dirty 7.15 MiB 8.04 MiB 911.02 KiB
5446992+dirty 7.15 MiB 8.12 MiB 999.45 KiB
31fcca2+dirty 7.15 MiB 8.18 MiB 1.03 MiB
457e29f+dirty 7.15 MiB 8.10 MiB 981.29 KiB
e73f4ed+dirty 7.15 MiB 8.09 MiB 965.94 KiB
fe13591+dirty 7.15 MiB 8.35 MiB 1.20 MiB
ad6c299+dirty 7.15 MiB 8.04 MiB 912.17 KiB
148f924+dirty 7.15 MiB 8.21 MiB 1.07 MiB
b1e8712+dirty 7.15 MiB 8.04 MiB 912.27 KiB
6e8584e+dirty 7.15 MiB 8.13 MiB 1002.18 KiB

Previous results on branch: antonis/rn-0.75.4-core

Startup times

Revision Plain With Sentry Diff
1d9d09f+dirty 441.04 ms 464.50 ms 23.46 ms
043095f+dirty 377.68 ms 416.38 ms 38.70 ms
dd27cec+dirty 399.07 ms 450.93 ms 51.87 ms
2374c56+dirty 420.22 ms 490.09 ms 69.87 ms
40940de+dirty 400.37 ms 450.55 ms 50.18 ms

App size

Revision Plain With Sentry Diff
1d9d09f+dirty 7.15 MiB 8.35 MiB 1.20 MiB
043095f+dirty 7.15 MiB 8.35 MiB 1.20 MiB
dd27cec+dirty 7.15 MiB 8.35 MiB 1.20 MiB
2374c56+dirty 7.15 MiB 8.35 MiB 1.20 MiB
40940de+dirty 7.15 MiB 8.35 MiB 1.20 MiB

Copy link
Contributor

github-actions bot commented Oct 15, 2024

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1223.80 ms 1223.87 ms 0.08 ms
Size 2.92 MiB 3.66 MiB 757.68 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
ac41368+dirty 1226.69 ms 1229.96 ms 3.27 ms
62a750b+dirty 1228.12 ms 1230.53 ms 2.41 ms
baa882f+dirty 1235.48 ms 1229.02 ms -6.46 ms
d361d38+dirty 1272.96 ms 1291.70 ms 18.74 ms
4cc5c27+dirty 1220.43 ms 1215.13 ms -5.30 ms
148f924+dirty 1220.72 ms 1221.30 ms 0.58 ms
8ae23a7+dirty 1233.67 ms 1229.52 ms -4.15 ms
31fcca2+dirty 1222.04 ms 1226.51 ms 4.47 ms
0db0c72+dirty 1258.88 ms 1262.52 ms 3.64 ms
3ffcddd+dirty 1272.22 ms 1273.98 ms 1.76 ms

App size

Revision Plain With Sentry Diff
ac41368+dirty 2.92 MiB 3.69 MiB 794.29 KiB
62a750b+dirty 2.92 MiB 3.48 MiB 575.59 KiB
baa882f+dirty 2.92 MiB 3.64 MiB 738.56 KiB
d361d38+dirty 2.92 MiB 3.41 MiB 503.57 KiB
4cc5c27+dirty 2.92 MiB 3.61 MiB 705.47 KiB
148f924+dirty 2.92 MiB 3.60 MiB 701.88 KiB
8ae23a7+dirty 2.92 MiB 3.66 MiB 757.67 KiB
31fcca2+dirty 2.92 MiB 3.46 MiB 557.31 KiB
0db0c72+dirty 2.92 MiB 3.40 MiB 492.71 KiB
3ffcddd+dirty 2.92 MiB 3.40 MiB 494.39 KiB

Previous results on branch: antonis/rn-0.75.4-core

Startup times

Revision Plain With Sentry Diff
40940de+dirty 1228.31 ms 1230.94 ms 2.62 ms
dd27cec+dirty 1243.82 ms 1248.04 ms 4.23 ms
2374c56+dirty 1240.96 ms 1232.04 ms -8.92 ms
043095f+dirty 1231.96 ms 1230.04 ms -1.91 ms
1d9d09f+dirty 1228.00 ms 1238.98 ms 10.98 ms

App size

Revision Plain With Sentry Diff
40940de+dirty 2.92 MiB 3.64 MiB 744.18 KiB
dd27cec+dirty 2.92 MiB 3.66 MiB 757.69 KiB
2374c56+dirty 2.92 MiB 3.64 MiB 744.19 KiB
043095f+dirty 2.92 MiB 3.64 MiB 743.91 KiB
1d9d09f+dirty 2.92 MiB 3.66 MiB 757.64 KiB

@antonis antonis marked this pull request as ready for review October 15, 2024 14:29
Copy link
Collaborator

@lucas-zimerman lucas-zimerman left a comment

Choose a reason for hiding this comment

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

Looks good to me, LGTM!

Base automatically changed from antonis/rn-0.75.4-no-flipper to main October 16, 2024 04:27
Comment on lines +3 to +7
plugins: [
['@babel/plugin-transform-class-properties', { loose: true }],
['@babel/plugin-transform-private-methods', { loose: true }],
['@babel/plugin-transform-private-property-in-object', { loose: true }]
],
Copy link
Member

Choose a reason for hiding this comment

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

Why are these plugins needed?

Copy link
Collaborator Author

@antonis antonis Oct 16, 2024

Choose a reason for hiding this comment

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

I added those to fix the following test failures

Log
       FAIL  test/tracing/integrations/stallTracking/stalltracking.background.test.ts
        ● BackgroundEventListener › Stall tracking should set _isBackground to false, update _lastIntervalMs, and call _iteration when state is active and _timeout is not null
      
          expect(received).toBeGreaterThanOrEqual(expected)
      
          Expected: >= 1729094935703
          Received:    1729094935702
      
            26 |     // Check if _isBackground is set to false and _lastIntervalMs is updated correctly
            27 |     expect(stallTracking['_internalState']['isBackground']).toBe(false);
          > 28 |     expect(stallTracking['_internalState']['lastIntervalMs']).toBeGreaterThanOrEqual(currentTime);
               |                                                               ^
            29 |     jest.runOnlyPendingTimers(); // Fast-forward the timer to execute the timeout function
            30 |   });
            31 |   it('Stall tracking should set _isBackground to true when state is not active', () => {
      
            at Object.<anonymous> (test/tracing/integrations/stallTracking/stalltracking.background.test.ts:28:63)
      
       FAIL  test/tracing/reactnavigation.ttid.test.tsx
        ● React Navigation - TTID › ttid enabled › should add ttfd span for application start up
      
          Trying to detect host component names triggered the following error:
      
          /Users/antonis/git/sentry-react-native/packages/core/node_modules/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.
            117 |   };
            118 |
          > 119 |   #findLowestParentFromRegistryForInstance(
                |   ^
            120 |     instance: ReactNativeElement,
            121 |   ): ?DebuggingOverlayRegistrySubscriberProtocol {
            122 |     let iterator: ?ReadOnlyElement = instance;
      
          There seems to be an issue with your configuration that prevents React Native Testing Library from working correctly.
          Please check if you are using compatible versions of React Native and React Native Testing Library.
      
            277 |       mockedEventEmitter.emitNewFrameEvent();
            278 |
          > 279 |       TestRenderer.render(<TimeToFullDisplay record />);
                |                    ^
            280 |       emitNativeFullDisplayEvent();
            281 |
            282 |       jest.runOnlyPendingTimers(); // Flush ttid transaction
      
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:56:11)
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:27:30)
            at renderInternal (node_modules/@testing-library/react-native/src/render.tsx:48:40)
            at Object.renderInternal (node_modules/@testing-library/react-native/src/render.tsx:29:10)
            at Object.<anonymous> (test/tracing/reactnavigation.ttid.test.tsx:279:20)
      
        ● React Navigation - TTID › ttid enabled › ttfd span duration and measurement should equal for application start up
      
          Trying to detect host component names triggered the following error:
      
          /Users/antonis/git/sentry-react-native/packages/core/node_modules/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.
            117 |   };
            118 |
          > 119 |   #findLowestParentFromRegistryForInstance(
                |   ^
            120 |     instance: ReactNativeElement,
            121 |   ): ?DebuggingOverlayRegistrySubscriberProtocol {
            122 |     let iterator: ?ReadOnlyElement = instance;
      
          There seems to be an issue with your configuration that prevents React Native Testing Library from working correctly.
          Please check if you are using compatible versions of React Native and React Native Testing Library.
      
            346 |       mockedEventEmitter.emitNewFrameEvent();
            347 |
          > 348 |       TestRenderer.render(<TimeToFullDisplay record />);
                |                    ^
            349 |       emitNativeFullDisplayEvent();
            350 |
            351 |       jest.runOnlyPendingTimers(); // Flush ttid transaction
      
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:56:11)
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:27:30)
            at renderInternal (node_modules/@testing-library/react-native/src/render.tsx:48:40)
            at Object.renderInternal (node_modules/@testing-library/react-native/src/render.tsx:29:10)
            at Object.<anonymous> (test/tracing/reactnavigation.ttid.test.tsx:348:20)
      
        ● React Navigation - TTID › ttid enabled › manual initial display api overwrites auto instrumentation
      
          Trying to detect host component names triggered the following error:
      
          /Users/antonis/git/sentry-react-native/packages/core/node_modules/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.
            117 |   };
            118 |
          > 119 |   #findLowestParentFromRegistryForInstance(
                |   ^
            120 |     instance: ReactNativeElement,
            121 |   ): ?DebuggingOverlayRegistrySubscriberProtocol {
            122 |     let iterator: ?ReadOnlyElement = instance;
      
          There seems to be an issue with your configuration that prevents React Native Testing Library from working correctly.
          Please check if you are using compatible versions of React Native and React Native Testing Library.
      
            444 |
            445 |       mockedNavigation.navigateToNewScreen();
          > 446 |       const timeToDisplayComponent = TestRenderer.render(<TimeToInitialDisplay />);
                |                                                   ^
            447 |
            448 |       mockedEventEmitter.emitNewFrameEvent();
            449 |       timeToDisplayComponent.update(<TimeToInitialDisplay record />);
      
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:56:11)
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:27:30)
            at renderInternal (node_modules/@testing-library/react-native/src/render.tsx:48:40)
            at Object.renderInternal (node_modules/@testing-library/react-native/src/render.tsx:29:10)
            at Object.<anonymous> (test/tracing/reactnavigation.ttid.test.tsx:446:51)
      
        ● React Navigation - TTID › ttid enabled › auto initial display api overwrites manual api if manual not initialized on time
      
          Trying to detect host component names triggered the following error:
      
          /Users/antonis/git/sentry-react-native/packages/core/node_modules/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.
            117 |   };
            118 |
          > 119 |   #findLowestParentFromRegistryForInstance(
                |   ^
            120 |     instance: ReactNativeElement,
            121 |   ): ?DebuggingOverlayRegistrySubscriberProtocol {
            122 |     let iterator: ?ReadOnlyElement = instance;
      
          There seems to be an issue with your configuration that prevents React Native Testing Library from working correctly.
          Please check if you are using compatible versions of React Native and React Native Testing Library.
      
            481 |
            482 |       // Initialized too late auto instrumentation finished before manual
          > 483 |       TestRenderer.render(<TimeToInitialDisplay record />);
                |                    ^
            484 |       emitNativeInitialDisplayEvent(secondInFutureTimestampMs());
            485 |
            486 |       jest.runOnlyPendingTimers(); // Flush transaction
      
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:56:11)
            at detectHostComponentNames (node_modules/@testing-library/react-native/src/helpers/host-component-names.tsx:27:30)
            at renderInternal (node_modules/@testing-library/react-native/src/render.tsx:48:40)
            at Object.renderInternal (node_modules/@testing-library/react-native/src/render.tsx:29:10)
            at Object.<anonymous> (test/tracing/reactnavigation.ttid.test.tsx:483:20)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants