Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53150
ReactInstanceManager and ReactInstanceManagerBuilder are legacy architecture classes that will be deleted in the future, in this diff we are deprecating them
changelog: [Android][Changed] Deprecate legacy architecture classes ReactInstanceManager and ReactInstanceManagerBuilder, these classes will be deleted in a future release
Reviewed By: mlord93
Differential Revision: D79677828
fbshipit-source-id: 2d79736d94a55e44dd24056985f358e3650ddf6c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53331
Changelog: [internal]
This change was shipped 3 months ago so we can assume the native method will always have this method and don't need to keep backwards compatibility.
Reviewed By: rshest
Differential Revision: D80449031
fbshipit-source-id: 4ff11b81478701ad712b4e097625e569829f6480
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53330
Changelog: [internal]
These methods have been defined for a month, so it's safe to make then non-nullable already.
Reviewed By: GijsWeterings
Differential Revision: D80453413
fbshipit-source-id: 3fde076622dc9d510bad144300364401f2319507
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53318
Changelog: [internal]
This prepares the codebase for an eventual migration of `HostInstance` to `ReactNativeElement`, so the actual migration doesn't need to adjust so much existing code.
Reviewed By: rshest
Differential Revision: D80399739
fbshipit-source-id: 441d3e92ef6dff253343d1058b2027698e8ecb22
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53304
The headers from `react_performance_cdpmetrics` are currently missing in the libreactnative.so prefab.
They're actually references from `Scheduler.h` and this is causing `react-native-screens` to fail compiling
with:
```
In file included from /tmp/RNApp/node_modules/react-native-screens/android/src/main/cpp/NativeProxy.cpp:3:
/home/runner/.gradle/caches/8.14.3/transforms/97716233b9aa00728d9cac038eecaf3d/transformed/react-android-0.82.0-nightly-20250815-41029d8e9-SNAPSHOT-debug/prefab/modules/reactnative/include/react/renderer/scheduler/Scheduler.h:13:10: fatal error: 'react/performance/cdpmetrics/CdpMetricsReporter.h' file not found
13 | #include <react/performance/cdpmetrics/CdpMetricsReporter.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[4/6] Building CXX object CMakeFiles/rnscreens.dir/tmp/RNApp/node_modules/react-native-screens/cpp/RNSScreenRemovalListener.cpp.o
[5/6] Building CXX object CMakeFiles/rnscreens.dir/src/main/cpp/OnLoad.cpp.o
```
See here https://github.com/react-native-community/nightly-tests/actions/runs/16991637594/job/48172255960
I saw this was added on D78904748
Here I'm exposing the headers from `react_performance_cdpmetrics` to the prefab API so users in OSS can
access those headers as well.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D80344762
fbshipit-source-id: 29b09b94370b71a16ecf12d4cca9cd571c588e5c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53339
Changelog: [Internal] - onSizeChanged can be called independent of onLayoutChange. Right now this hasn't affeced anything because VirtualViews are visible by default.
Reviewed By: yungsters
Differential Revision: D80357397
fbshipit-source-id: 06b174791dec0d19da6bbe1a8144d35b93b8f6c1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53189
In addition to the menu button and long pressing fast forward option, adds long pressing back as an option to open DevTools for devices like the Chromecast remote.
Changelog:
[Android][Added] - Add long-press back as an option to open the DevMenu for devices that lack menu & fast-forward.
{F1981060943}
Reviewed By: alanleedev
Differential Revision: D79923779
fbshipit-source-id: b758d591ebe3b8e601dbf704212123451e3c32e1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53336
No longer needed as bridgeless is enabled everywhere.
Changelog:
[iOS][Deprecated] Remove bridge mode title and description from React Native Dev Menu title
Reviewed By: christophpurrer
Differential Revision: D80457504
fbshipit-source-id: bf21e44ed925f4777d0190313c6e4aad774abe42
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53335
No longer needed as bridgeless is enabled everywhere.
Changelog:
[Android][Deprecated] Remove bridge mode string from React Native Dev Menu title
Reviewed By: christophpurrer
Differential Revision: D80457625
fbshipit-source-id: 4cf602a90f29d5495a5e8a4ccaf49abb96e85f94
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52947
Wires up a `landingView` parameter to be passed to rn_fusebox.html that we can use to focus an arbitrary view on launch. Used from the new perf analyze scenario to open devtools on the performance panel.
Changelog:
[Android][Added] - Adds a landing view parameter to opening RNDT, enabling arbitrary view focus on launch.
Reviewed By: hoxyq
Differential Revision: D79329081
fbshipit-source-id: b1513a803f4add803100cebd08f53e59a08e64d4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53319
Changelog: [internal]
We have a microbenchmark for `ReactFabricHostComponent` vs. `ReactNativeElement` but the test code itself is so fast that a big part of its duration is just calling the test function (a noop is 300-500ns, while the duration of these benchmarks is between 800 and 1400ns).
Note that this affects all tests the same way, so the absolute difference in execution time in both tests was still accurate.
This changes how we execute the benchmarks so the test function runs the code under test multiple times and we then report the average of all the runs using the new `overriddenDuration` option.
Before:
| (index) | Task name | Latency avg (ns) | Latency med (ns) | Throughput avg (ops/s) | Throughput med (ops/s) | Samples |
| ------- | -------------------------- | ---------------- | ---------------- | ---------------------- | ---------------------- | ------- |
| 0 | 'noop' | '353.83 ± 0.03%' | '350.00 ± 10.00' | '2856842 ± 0.01%' | '2857143 ± 84034' | 2826221 |
| 1 | 'ReactNativeElement' | '1393.8 ± 1.15%' | '1332.0 ± 20.00' | '745853 ± 0.01%' | '750751 ± 11444' | 717480 |
| 2 | 'ReactFabricHostComponent' | '884.92 ± 0.59%' | '871.00 ± 21.00' | '1144283 ± 0.01%' | '1148106 ± 27029' | 1130046 |
After:
| (index) | Task name | Latency avg (ns) | Latency med (ns) | Throughput avg (ops/s) | Throughput med (ops/s) | Samples |
| ------- | -------------------------- | ---------------- | ---------------- | ---------------------- | ---------------------- | ------- |
| 0 | 'noop' | '400.11 ± 0.30%' | '391.00 ± 10.00' | '2532882 ± 0.07%' | '2557545 ± 67127' | 50000 |
| 1 | 'ReactNativeElement' | '868.04 ± 0.04%' | '859.39 ± 4.41' | '1153974 ± 0.03%' | '1163616 ± 6002' | 50000 |
| 2 | 'ReactFabricHostComponent' | '388.79 ± 0.08%' | '384.18 ± 1.91' | '2579763 ± 0.03%' | '2602947 ± 13006' | 50000 |
Reviewed By: rshest
Differential Revision: D80404122
fbshipit-source-id: 7dc6ad34b2e8aa3cb6d62008f97d1c44e325ab27
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53321
Changelog: [internal]
Just a rename to make it easier to understand.
Reviewed By: rshest
Differential Revision: D80404378
fbshipit-source-id: 3d7e89797be3b92599e07b4b64d2a720756a4f3b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53269
Changelog: [internal]
Just a small refactor of the tests for LogBox to take advantage of the new `document.getElementById` API in RN.
Reviewed By: rshest
Differential Revision: D69528892
fbshipit-source-id: 807f03364e260baa9c3a94cfb1831b7eb24e0d26
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53270
Changelog: [internal]
(Marked as internal because the DOM APIs haven't been released yet).
This implements `getElementById` in the DOM document API.
Reviewed By: rshest
Differential Revision: D69307133
fbshipit-source-id: 0c1454ae42fad92cddc705877b26052e887185bd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53272
Changelog: [internal]
`VirtualView` has been exposed as an unstable API in the `react-native` package but its public API is referencing the DOM APIs, which forces their definitions to also be public (but shouldn't because they haven't been released yet).
This replaces the reference with a reference to `HostInstance`, which will be updated to reference the DOM APIs when ready.
Reviewed By: yungsters
Differential Revision: D80254442
fbshipit-source-id: 254779c97c116ba08b6cc0c185906617ffd1269f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53294
Changelog: [internal]
Just adding a benchmark for `console.timeStamp`, which in normal circumstances will just measure a no-op. We can force installing the inspector and simulate that we're profiling in Fantom to force `console.timeStamp` to go through the tracing paths for the benchmark.
Reviewed By: rshest
Differential Revision: D80272873
fbshipit-source-id: 1e404525bb3390b96fae982c543478a26535a393
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53278
changelog: [internal]
C++ Animated should be in ReactCommon, it is code shared across all platforms.
Reviewed By: christophpurrer, zeyap
Differential Revision: D80261447
fbshipit-source-id: 8ad5d0bb65c9b499b1d9f60fc8babef8d4d90078
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53296
Following D79894702, update `__chromium_devtools_metrics_reporter` to correctly differentiate `InteractionEntry` and `INP` metrics, based on synchronisation with start of paint.
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D79898177
fbshipit-source-id: 92e805fc15b6c8bf3342f62914cca1b377b58397
Summary:
Fixed a typo in Performance.js where `measureName === 'string'` should be `typeof measureName === 'string'` for proper type checking.
## Changelog:
[GENERAL] [FIXED] - Fix typo in Performance.js type checking condition
Pull Request resolved: https://github.com/facebook/react-native/pull/53311
Test Plan: The change fixes a logical error where the condition was comparing the variable value to the string 'string' instead of checking its type. This ensures proper type checking for `measureName` parameter.
Reviewed By: rshest
Differential Revision: D80403225
Pulled By: rubennorte
fbshipit-source-id: 134920b2f95e997007d41451a8f8ad5fb8592d73
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53292
# Changelog:
[Internal] -
Adds a `testID` test for the Text component, by means of extracting and reusing already existing one for Image.
Reviewed By: andrewdacenko
Differential Revision: D80332473
fbshipit-source-id: 8e8bc2eae12f5f340817f3788f320aad3a6fff45
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53222
# Changelog:
[Internal] -
This factors out bits of the previously existing "Text.role" prop testing into the general accessibility props tests, so those can be reused, also making sure that we use correct types for both `.role` prop (`Role` type) and `.accessibilityRole prop (`AccessibilityRole`, correspondingly).
Note that the test suite for the `role` prop is a separate one, as `role` is only defined on the native side for certain component types (including `Text`), but not all.
Also, in the existing suite we weren't really testing `role`, but instead running the same test twice for `accessibilityRole`, that is corrected as well.
Reviewed By: andrewdacenko
Differential Revision: D80084731
fbshipit-source-id: 545f01c00e9ea5ca53f664888b9bb7b24ded315e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52971
Wires up the initial pass of the experimental V2 Perf Monitor UI.
Limitations:
- Does not yet clear last interaction.
- Only lightly tested.
Changelog: [Internal]
Reviewed By: rubennorte
Differential Revision: D78904767
fbshipit-source-id: c51c5f51d9267ec971c17dce465775a2a3e6cb2c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53288
This diff aligns the APIs ReactSurfaceImpl.view and ReactSurfaceImpl.attachView() to make sure they receive and return the same type
changelog: [Android][Changed] Changed return type of ReactSurfaceImpl.view to ReactSurfaceView to align with parameter recived by ReactSurfaceImpl.attachView()
Reviewed By: sammy-SC
Differential Revision: D80289764
fbshipit-source-id: cfd598a42298f56b6b8871611662fbfa5599a3d3