Summary:
There is currently a bug with Modals with New Architecture where the first frame is rendered incorrectly, specifically not accounting for all the vertical insets (only the status bar). This fixes it.
Specifically:
1. I've removed the caching of the statusbar height from `ReactModalHostView` as that was not working correctly. Sometimes the value returned `0` meaning that it was not yet computed when Fabric was asking for it. In the updated implementation we now query `FabricUIManager` given the `surfaceId` of the modal.
2. I've modified the logic to account for all the vertical insets, not just the status bar.
## Changelog:
[ANDROID] [FIXED] - Correctly account for insets on first render of Modals on New Arch
Test Plan:
Tested on Marketplace Location Picker and the picker is still working correctly:
https://pxl.cl/7NjtJ
Reviewed By: mdvacca
Differential Revision: D78975126
Pulled By: cortinico
Summary:
- Switches fmt_config to fast_float_config so it matches what is used in the method
When trying to use a forked version of the Pod it is not possible to set a new repo for Fast Float. This was caused by a typo in the method used to update the configuration of where to find the Pod.
## Changelog:
[IOS] [FIXED] - Fixed variable naming error in set_fast_float_config method in react_native_pods.rb
Pull Request resolved: https://github.com/facebook/react-native/pull/53129
Test Plan: Add the line `set_fast_float_config({:git => 'some-git-repo'})` to an application's Podfile
Reviewed By: cortinico
Differential Revision: D79805939
Pulled By: cipolleschi
fbshipit-source-id: 9705e1f63e21b788362ca94b74e32bce0177a729
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53132
This will prevent the Firebase script from running at all. I'm removing it.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D79801691
fbshipit-source-id: 2705dff93fc9dbbcfaf97a1ba29b69d4d0a8143c
Summary:
This PR (initially created for edge-to-edge opt-in support, rebased multiple times) fixes the `Dimensions` API `window` values on Android < 15, when edge-to-edge is enabled.
Currently the window height doesn't include the status and navigation bar heights (but it does on Android >= 15):
<img width="300" alt="Screenshot 2025-06-27 at 16 23 02" src="https://github.com/user-attachments/assets/c7d11334-9298-4f7f-a75c-590df8cc2d8a" />
Using `WindowMetricsCalculator` from AndroidX:
<img width="300" alt="Screenshot 2025-06-27 at 16 34 01" src="https://github.com/user-attachments/assets/7a4e3dc7-a83b-421b-8f6d-fd1344f5fe81" />
Fixes https://github.com/facebook/react-native/issues/47080
## Changelog:
[Android] [Fixed] Fix `Dimensions` `window` values on Android < 15 when edge-to-edge is enabled
Pull Request resolved: https://github.com/facebook/react-native/pull/52738
Test Plan:
Run the example app on an Android < 15 device.
Rollback Plan:
Reviewed By: cipolleschi, Abbondanzo
Differential Revision: D78738516
Pulled By: alanleedev
fbshipit-source-id: fdb22f3cc76b0bda987db426cb015124bcacdc84
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53041
update `DisplayMetricsHolder.getWindowDisplayMetrics()` to `getScreenDisplayMetrics()`.
Where window width and height is not needed, prefer to use `screenDisplayMetrics` as with upcoming diff `windowDisplayMetrics` initialization only happen using UiContext and have potential to cause more issues if used unnecessarily.
Changelog: [Internal] Update `DisplayMetricsHolder.getWindowDisplayMetrics()` to use `.getScreenDisplayMetrics()`
Reviewed By: mlord93
Differential Revision: D79571226
fbshipit-source-id: d90fca36c119318e7a2dfa6953fc2148b35e83d4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53117
Sending the mode is no longer needed as you can't opt out of legacy arch any longer, and was only used for printing a (NOBRIDGE) prefix.
Changelog: [Internal]
Reviewed By: shwanton
Differential Revision: D79762592
fbshipit-source-id: 845aabf2a8365c88808990ea481503b23597a8a0
Summary:
Refactors the window focus detection feature flag logic in `VirtualView` (Android) to eliminate one instance property and instead utilize the existence of the focus listener to determine whether window focus detection is enabled.
Changelog:
[Internal]
Reviewed By: mdvacca
Differential Revision: D79743782
fbshipit-source-id: d12e70d8e52b72d546ff097c3b1bcfbd29fb9129
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52838
**Context**
Experimental V2 Performance Monitor prototype, beginning by bringing the [Interaction to Next Paint (INP)](https://web.dev/articles/inp) metric to React Native.
**This diff**
Wires up a client/subscriber for the `"__chromium_devtools_metrics_reporter"` runtime binding (to which we emit live metrics events since D78904748). This will be used to unpack these performance updates to send to the host platform.
- Creates a new `HostRuntimeBinding` helper, which establishes a local/private CDP session.
- Conditionally installs our perf metrics runtime binding in `HostTarget` when `perfMonitorV2Enabled` is set.
- Wires up a new `onPerfMonitorUpdate` event on `HostTargetDelegate` (unimplemented until the next diff).
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D78904766
fbshipit-source-id: 991f17a4cc69f574917750053a5da31bbc6dc0d5
Summary:
The `aria-label` prop was ignored on `TextInput` component. Which resulted in screen reader not able to read it.
This PR forwards `aria-label` to `accessibilityLabel` in a manner similar to e.g. `View` and `Text`
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[GENERAL] [FIXED] - a11y: fix `aria-label` on `TextInput`
Pull Request resolved: https://github.com/facebook/react-native/pull/53051
Test Plan:
Run RNTester => TextInput => Accessibility section under Accessibility Inspector or screen reader.
iOS fixed:
https://github.com/user-attachments/assets/68c3a2ef-7dfe-479c-97fc-cbe72108c45c
iOS baseline:
https://github.com/user-attachments/assets/2e8372ba-10dc-47d2-b6b1-9f664000de7d
Reviewed By: andrewdacenko
Differential Revision: D79635413
Pulled By: rshest
fbshipit-source-id: dd2f583d67c6c6c6393e02c5fe534308e1e2f921
Summary:
`react-native/codegen` uses `babel/parser` and `babel/core` but does not declare dependency on them. Depending on how packages are hoisted (and especially in pnpm setups), this causes crashes during codegen.
Resolves https://github.com/facebook/react-native/issues/52883
## Changelog:
[GENERAL] [FIXED] - Add missing Babel dependencies
Pull Request resolved: https://github.com/facebook/react-native/pull/52884
Test Plan: See https://github.com/facebook/react-native/issues/52883
Reviewed By: cortinico, christophpurrer
Differential Revision: D79103092
Pulled By: robhogan
fbshipit-source-id: ecaf690f994393a652ea7f0d4f30bbabeb23a434
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53055
Moves the C++ part of `InspectorNetworkReporter.kt` into the `react_devsupportjni` JNI library, and adds missing `SoLoader.loadLibrary` call.
Replaces D79568759 / https://github.com/facebook/react-native/pull/53036.
Changelog: [Internal]
Reviewed By: robhogan
Differential Revision: D79638331
fbshipit-source-id: 5df450ad80e4532d6ada1e4dab51a1de6418a4e0
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53059
# Changelog:
[Internal] -
This is a re-submit of the partially reverted https://github.com/facebook/react-native/pull/52905, which should work fine now on top of the changes stack that support the RN feature flags being safely used on the modules' top level.
Reviewed By: rubennorte
Differential Revision: D79640965
fbshipit-source-id: d8bda0dba662930d1343ea9d5155791a686b653b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53080
# Changelog: [Internal]
We were accidentally resetting this before calculating the timestampf for the TracingStartedInPage event, which is the left boundary for the timeline window.
Reviewed By: sbuggay
Differential Revision: D79670865
fbshipit-source-id: c6b5f869e185d6d3c80cb7153891c72283c82418
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53077
# Changelog: [Internal]
Stores the tracing::Mode on a TraceRecordingState and updates the logic for:
- InstanceTracingAgent to enable PerformanceTracer with a specified window size
- RuntimeTracingAgent to only enable sampling profiler for CDP-initiated sessions
Reviewed By: sbuggay
Differential Revision: D79670864
fbshipit-source-id: 2c4eacb29666b59acbc508848a0a3d859f21a403
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53039
# Changelog: [Internal]
We can now distinguish these 2 different modes.
Reviewed By: sbuggay
Differential Revision: D79565934
fbshipit-source-id: 780678d1f50d4c1d73d55ebc95da0ea328fa2cb3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53035
# Changelog: [Internal]
This adds an ability to distinguish different trace recordings, based on mode
Reviewed By: sbuggay
Differential Revision: D79557790
fbshipit-source-id: cbb216df86fa1a4692e1b82c8a14a6049b5c45ec
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52960
# Changelog: [Internal]
We never call `stopTracing()` on a HostTarget, if the Agent was destroyed.
This could only happen if the session was destroyed. There could me multiple sessions, so we have to keep the source of truth for recording status in a session state.
Reviewed By: sbuggay
Differential Revision: D79435494
fbshipit-source-id: db72ffdf6856974e980afa78d59dec4bf45df289
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52961
# Changelog: [Internal]
Now that we've implemented all required serializers and TraceRecordedState has everything needed, we can migrate TracingAgent to use this new infra.
Reviewed By: sbuggay
Differential Revision: D79433497
fbshipit-source-id: 8c63f0faa50844786b7af8860c22fc006dd38414
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52964
# Changelog: [Internal]
Now TraceRecordingState should capture everything we need in order to display a trace on a timeline.
We just need to serialize it properly into collection of serialized Trace Events that would be sent via `Tracing.dataCollected` CDP events.
This is what this serializer is doing.
Reviewed By: sbuggay
Differential Revision: D79434655
fbshipit-source-id: 6b6858db23077eb7305781b9b0d98af8dedd68ca
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52967
# Changelog: [Internal]
We would need this to correctly serialize Runtime Sampling Profiles.
In case of recording the trace in the background, this might not be the value we would want to use, we would probably add another field or calculate it dynamically, depending on the tracing mode.
This is not the case for now, will be solved separately on top of the stack.
Reviewed By: sbuggay
Differential Revision: D79433502
fbshipit-source-id: 172ff19985d325585590794fb2523a24a6860221
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52963
# Changelog: [Internal]
We are deprecating previous `InstanceTarcingProfile` struct, but not removing yet, since this is still used and we will migrate in one of the diffs at the top of the stack.
The `InstanceTracingProfile` will consist only of Trace Events that were captured by PerformanceTracer, and will not store Runtime Sampling Profiles.
There are multiple reasons for this:
1. As of right now, Runtime Sampling Profiles are completely independant from Instance Profiles and do not require anythings from Instance as a Target to be represented on a timeline.
2. Although PerformanceTracer is a singleton, it should be this way. It captures events for something that can only be dispatched if there is an allocated React Instance, so in the future PerformanceTracer could become a data-member of InstanceTarget.
Reviewed By: sbuggay
Differential Revision: D79433498
fbshipit-source-id: 0fdf09517488bc5c6c8eb604aee66535cdc19ffb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52968
# Changelog: [Internal]
Now that we've defined all actors and relationship between Agents, we can start recording profiles and store them on a recording state.
Reviewed By: sbuggay
Differential Revision: D79415396
fbshipit-source-id: 9639e59d619268d970b895da2e19dfd92c963a32
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52966
# Changelog: [Internal]
The current design for Tracing is flawed. Right now the logic is mostly scattered around CDP Agents, lifetime of which is tied to CDP session.
This diff introduces a new approach:
- The HostTarget will be the only Target that has public entrypoints to startTracing as part of the jsinspector backend.
- It will create and own TraceRecording that acts as a local session. We won't use wording session here, because it is already reserved for CDP case.
- Every Target will implement TracingAgent, lifetime of which will be limited by lifetime of either Target or TraceRecording.
- All these TracingAgent will have a reference to TraceRecordingState, which they can mutate
This approach unblocks:
- Recording traces without active CDP sessions, for example in a background.
- Recording full instance reloads and multiple profiles for Instances and Runtimes.
{F1980838032}
Reviewed By: sbuggay
Differential Revision: D79371359
fbshipit-source-id: 034e984fd7e977457bd41a980e5feb049db3339d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53072
Changelog: [internal]
This creates a test to make sure there are no changes in React Native dramatically increasing memory usage in simple scenarios.
Reviewed By: rshest
Differential Revision: D79646758
fbshipit-source-id: d7a863468adabb75de7ceb123d96131564bd0959
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53071
Changelog: [internal]
The current API to take JS heap snapshots has some problems:
1. Ergonomics: it requires you to input the filepath where you want to store the snapshot. This isn't aligned with the behavior we have for JS traces where the output path is provided to you.
2. It doesn't work in optimized builds, as it requires a specific option in Hermes.
For 1), this replaces `Fantom.saveJSMemoryHeapSnapshot(filePath)` with `Fantom.takeJSMemoryHeapSnapshot()` that outputs the snapshot in a predefined path and prints it to the console.
For 2), this adds a new environment variable to force building Hermes with memory instrumentation (`FANTOM_ENABLE_JS_MEMORY_INSTRUMENTATION`). This is exposed as an option and not set by default because it has a performance overhead at runtime that we don't want to pay (especially in benchmarks).
This option only works when using Buck in development, because we want to generate this new binary type on demand when necessary, instead of making it part of the prebuilts we do before running tests in OSS and CI.
Reviewed By: lenaic
Differential Revision: D79642314
fbshipit-source-id: a2980616a495bd6dca29c0709a9581db6fb3f2cc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53069
Changelog: [internal]
This changes the names of the JS traces from Fantom from using a unix timestamp in the file name to using the ISO date:
- From: `View-itest.js-1754406329686.cpuprofile`
- To: `View-itest.js-2025-08-05T15:05:29.686Z.cpuprofile`
Reviewed By: rshest
Differential Revision: D79646760
fbshipit-source-id: d8a654724c1abc2d3e285ee658c2d390d3241d82
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53091
# Changelog:
[Internal] -
This fixes some excessive printing from the benchmarking results, which happened even if there was no benchmarks ran.
Reviewed By: rubennorte
Differential Revision: D79719026
fbshipit-source-id: 0e75d97ae9c762cab25007bfab5ca8a6dc43e148
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53070
As per title, this change adds a warning if you call `pod install` with `RCT_NEW_ARCH_ENABLED` set to 0.
## Changelog:
[iOS][Added] - Add warning if RCT_NEW_ARCH_ENABLED is set to 0
Reviewed By: mdvacca
Differential Revision: D79655716
fbshipit-source-id: 516cc02f9b2dbddaae99c2d74bba249970641d1d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53065
Instead of checking results from the previous day, allow to go back up to 7
days in the past to check for previous runs.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D79568067
fbshipit-source-id: 5d6fac6a06b4e26e52de6fbf6187ec8f8e44e10e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53066
This diff introduces the mechanism for us to store the result of nightly 3p
library integration on Firebase.
Having the result store, we can now query the result from the previous day and
report if the build is newly broken or recovered overnight.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D79565536
fbshipit-source-id: ba839b2950462a7ca6186a163f93f062719304fb
Summary:
Pure cocoapods build with dyn frameworks was broken due to some missing dependencies with the new performance metrics of cdp
## Changelog:
[iOS][Fixed] - Fix pure cocoapods dynamic framework build
Pull Request resolved: https://github.com/facebook/react-native/pull/53075
Test Plan:
Tested locally in RNTester with
```
USE_FRAMEWORKS=dynamic bundle exec pod install
```
and then building from Xcode
Reviewed By: cortinico
Differential Revision: D79676186
Pulled By: cipolleschi
fbshipit-source-id: ae6b81138fcae66c67bedadb1e1ad9cd6c4b6c35
Summary:
Add filter to native animated allowlist.
## Changelog:
[GENERAL] [ADDED] - Allow filter usage with native animated driver.
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/52920
Test Plan: Tested on RNTester
Reviewed By: joevilches
Differential Revision: D79473929
Pulled By: lunaleaps
fbshipit-source-id: de6fcc0f18a1d656688dce513d2cf48a3c9d4f09
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53057
Changelog: [internal]
This adds a Fantom test to ensure that `setUpDefaultReactNativeEnvironment` doesn't read any feature flags. This prevents catching this as a runtime issue when the feature flag system complains that feature flags were accessed before being overridden, which always would happen if this module read any flags (as it runs before any product code that sets overrides).
Reviewed By: rshest
Differential Revision: D79639890
fbshipit-source-id: 6997609b7bf84947a6da53b58e68f9edd5654912
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53056
Changelog: [internal]
This exposes a utility method in `ReactNativeFeatureFlagsBase` to reset its internal state for testing purposes.
This is intentionally not exposed through `ReactNativeFeatureFlags` to avoid it being used at runtime.
Reviewed By: rshest
Differential Revision: D79639889
fbshipit-source-id: adfb6125d991994c9706d5952d309915fec8f815
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53026
This change prevents users from opting out of the New Architecure.
The change is non breaking with respect to building an app: all the functions are still there, even if they are unreachable, in case users will still call them explicitly.
We hardcoded all the values to enable the New Architecture, so there is no way to disable it.
This is a behavioral breaking change, though.
## Changelog:
[iOS][Removed] - Removed the opt-out from the New Architecture.
Reviewed By: cortinico
Differential Revision: D79090048
fbshipit-source-id: 9779bfedf50748d7adbef5f7ef038f469e30efc2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53063
Update `IO.read` CDP method handler to validate the received `size` parameter.
This now accepts a max value of 10MB — adding a layer of safety in front of our current Android implementation, which fails at around ~15MB due to OkHttp limits.
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D79646155
fbshipit-source-id: c777802105dc31cdcc7e9e960c880e689540fddd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53003
The new `onChildStartedNativeGesture` method accepts a nullable `ReactContext` value for the purpose of flushing active touch events. This change updates all callsites of that method to pass a `ReactContext`
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D79258727
fbshipit-source-id: 7b2950f514295dbe26822442c98079b8121cb3bf
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52925
# Changelog:
[Internal] -
This adds an extra "ranking" report when running Fantom benchmark vs different React Feature flag configurations.
It can be very useful when implementing some particular optimization, to streamline the before/after comparison wit this optimization enabled/disabled.
Reviewed By: andrewdacenko
Differential Revision: D79269601
fbshipit-source-id: f29e761e313d6857e5b3ac65faf2a387a84be9df
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53053
Changelog: [internal]
This adds a Fantom test to ensure that setting up the RN environment doesn't trigger the initialization for React components like View and Text, which should be lazy loaded when necessary.
Reviewed By: rshest
Differential Revision: D79636160
fbshipit-source-id: ef1fbd6cd531eb7082dce000ba74a5eed451e259
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53054
Changelog: [internal]
We eagerly require `AppRegistry` from environment initialization (`InitializeCore`) because it has some side-effects that are necessary for error reporting (see https://github.com/facebook/react-native/issues/34649 and https://github.com/facebook/react-native/pull/34650), but this change makes a lot of modules to be eagerly initialized.
This reduces that to avoid loading modules that not necessary for environment setup, which allows us to do things like setting up feature flags before modules like `View` and `Text` have been initialized.
Reviewed By: rshest
Differential Revision: D79636159
fbshipit-source-id: a3f1e0db3dd69112ceef3ea339167694e2457454
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52827
Changelog: [internal]
This adds **support for creating Hermes/JS sampling profiler traces in Fantom**, which is especially useful when running benchmarks.
Usage:
```
FANTOM_PROFILE_JS=1 yarn fantom Animated-benchmark
```
Output:
{F1980642216}
After this, the trace is fully symbolicated.
Can be opened directly in Google Chrome:
{F1980642229}
Or in the built-in viewer in VSCode:
{F1980642242} {F1980642240} {F1980642241}
When collapsing frames in the Flame Chart viewer in VSCode, we can quickly identify opportunities for optimizations.
This also supports multi-config environments. In that case, trace file names are created using a short representation of the configuration.
User guide for benchmarks in Fantom, including how to use this, will be done in a future diff.
NOTE: This still doesn't work in OSS because we don't support optimized mode there. In dev mode, there's a segmentation fault coming from this line: `hermesRuntime->sampledTraceToStreamInDevToolsFormat(fileStream)`
Reviewed By: sammy-SC
Differential Revision: D78905646
fbshipit-source-id: 382ddd5034db601309bd118cedde2fe0d57fde98
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53034
Changelog: [internal]
This is just a refactor to make sure that the constants we pass from the Fantom runner to its runtime are correct by using Flow to typecheck it.
Reviewed By: andrewdacenko
Differential Revision: D79565574
fbshipit-source-id: cbbab9cdec5ef5b3c82b929b8939c76c0ef41823
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52985
This class is essentially a wrapper of LayoutShadowNode with no extra logic added.
Let's remove it.
Changelog:
[Internal] [Changed] -
Reviewed By: alanleedev
Differential Revision: D79450688
fbshipit-source-id: 943e10e602cb9a5b77fca81e11d2333828b27813
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53025
It's now time to say goodbye to the Legacy Architecture :')
This change hardcodes the `newArchEnabled` property to true, and warns the users
if they're attempting to set it to false.
Changelog:
[Android] [Breaking] - Remove possibility to newArchEnabled=false in 0.82
Reviewed By: cipolleschi
Differential Revision: D78560296
fbshipit-source-id: ccfc45d2f7f21cc20e063cb901d76be3d41458d6
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53030
Changelog: [internal]
Removes `PerformanceEntryReporter::getCurrentTimeStamp` in favor of `HighResTimeStamp::now`, to make the source of truth more explicit.
Reviewed By: hoxyq
Differential Revision: D79560370
fbshipit-source-id: 0ccf2bf511781d3c47c6ddb4dd7f2061aab152b5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53028
Changelog: [internal]
Now that we have mocking at a more fundamental level (`HighResTimeStamp` API) we can replace other timing mocks with that one.
This does it for `PerformanceEntryReporter` and the `NativePerformance` module.
Reviewed By: hoxyq
Differential Revision: D79557640
fbshipit-source-id: 86579b8bb586190ab7cc8721f30e60b3ef789798
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53018
Changelog: [internal]
This makes the test for LongTasks API use the new API for mocking timers in Fantom to make it deterministic, and re-enables it on Github.
Reviewed By: rshest
Differential Revision: D79554724
fbshipit-source-id: 984c66ecd7c20eb972ba1e6b19944532acb82246
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53019
Changelog: [internal]
This adds support for mocking `HighResTimeStamp` values in Fantom tests via a new `Fantom.installHighResTimeStampMock` function.
See new tests for more details on how it works.
Reviewed By: rshest
Differential Revision: D79554723
fbshipit-source-id: 8b0fb292948be118c7616fde1a8a84014af82de8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53020
Changelog: [internal]
This adds a new feature to `HighResTimeStamp` to set a custom timestamp provider for "now" that can be useful for testing, only in debug builds to avoid potentially regressing performance.
Reviewed By: hoxyq, rshest
Differential Revision: D79554725
fbshipit-source-id: c325d05999b9e2d69f769b61f15c763446777a0a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53021
Changelog: [internal]
Moving the logic to set the default value for `HighResTimeStamp` to a shared function, to simplify further changes.
Reviewed By: rshest
Differential Revision: D79554726
fbshipit-source-id: cd0d4567ef63d386d28e0325203169323e97b207
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53033
This diff replaces the logic introduced in D72078450 to prevent `onPointerEnter`/`onPointerLeave` from firing when a button is pressed. The new approach trades off some complexity for reliability: instead of deferring `ACTION_HOVER_EXIT` handling to the next frame, we now suppress it immediately if any button is pressed (`buttonState != 0`). This simpler logic appears to work reliably on Quest devices, though it may behave differently on the Android emulator (something we’ll monitor).
The main reason for this change is that deferring ACTION_HOVER_EXIT introduces problems in newer Spatial React use cases, particularly when a single component hierarchy spans multiple roots. For example, when hovering between ReactSurfaceRoot and another root like VolumetricWindow, deferring ACTION_HOVER_EXIT can lead to incorrect enter/exit ordering:
* Cursor starts hovering over `ReactSurfaceRoot`
* Cursor moves to `VolumetricWindow`
* `ACTION_HOVER_EXIT` (`ReactSurfaceRoot`) — deferred
* `ACTION_HOVER_ENTER` (`VolumetricWindow`) — processed
* `ACTION_HOVER_EXIT` (`ReactSurfaceRoot`) — processed (too late)
This results in inconsistent hover state updates across roots, which this diff resolves by handling `ACTION_HOVER_EXIT` immediately when appropriate.
Changelog: [Internal]
Reviewed By: Abbondanzo
Differential Revision: D79504775
fbshipit-source-id: ea97bff48ddf4d3d09caf56ca29057c202b12409
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53027
Tweaks MIME type parsing in CDP Network messages, now matching Chrome.
This fixes response preview behaviour by the frontend for text response previews that are `base64Encoded` 🙌🏻 (we were observing these for JSON `fetch` calls on iOS).
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D79559495
fbshipit-source-id: 2565af7587fc6fbdd3ef6fcbb10c558341ddfbdc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53022
Following D77799617, D77927896, updates `InspectorNetworkReporter.kt` to check `isDebuggingEnabled` internally and avoid work/communication over the JNI layer — to minimise impact on the Android Network stack.
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D78004462
fbshipit-source-id: 2bea2ee0592d68d1cb330ac82e8b3b227b54a675
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53031
# Changelog:
[Internal] -
This partially reverts https://github.com/facebook/react-native/pull/52905, as in some configurations we don't appear to be able to use RN feature flags on the module level.
The usage is removed for now to unbreak the builds, with a follow up to resolve it in an adequate manner.
Reviewed By: hoxyq
Differential Revision: D79562056
fbshipit-source-id: 45bd896d572ff926a4c2dfa98334bf998718d86b
Summary:
This Diff simply adds some docs on how the secret must be formatted, and removes a print that would expose the triager IDs is anyone would look at the logs (not a big deal given that the ids are public on Discord, though).
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D79556988
fbshipit-source-id: 23d6e72141dff4e91242cc1d9f5b95ebaf5ca858
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52989
Adds a call to `NativeAnimatedModule`'s `userDrivenScrollEnded` method whenever a scroll event completes a smooth scroll animation. This is necessary in cases where Animated events control any layout properties of children and we need to force the shadow tree to resync with the native tree. For example, if a scroll view's child transforms its scale based on the scrollX or scrollY properties and the user triggers a `scrollToOffset` or `scrollToIndex` call, we don't update the layout of that child until the next state change.
Changelog: [Android][Fixed] - Fixed an issue where shadow tree and native tree layouts mismatch at the end of a scroll event
Reviewed By: sammy-SC
Differential Revision: D79464176
fbshipit-source-id: fee5f1c522714dbcddf8836de291c05d10e6e90e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53024
This class is Legacy Arch and is not used in OSS. Let's make it internal.
Changelog:
[Internal] [Changed] -
Reviewed By: RSNara
Differential Revision: D79556615
fbshipit-source-id: d157fe8f04784038d64657c6d240b0c51e41d82d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53014
# Changelog: [Internal]
This doesn't make sense, I've probably overlooked it while applying this to other methods.
Reviewed By: rubennorte
Differential Revision: D79552990
fbshipit-source-id: a7dc428dfcc86a08a9e52655f9878795b8e58c1c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52829
Changelog: [internal]
Just a small refactor to move the definitions of output paths to a specific module. We'll add more to this in a latter diff.
Reviewed By: sammy-SC
Differential Revision: D78905645
fbshipit-source-id: 011e6cec13396301dad8e76400b6f2b9e13568f0
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52786
Changelog: [internal]
It takes around 300ms to generate each source map file, and we really only need them if tests throw errors. Requesting source maps also increases contention to access the Metro server from each test worker.
This refactors the code so we only generate them in that case, which could save up to 20s in test execution time.
Reviewed By: rshest
Differential Revision: D78807672
fbshipit-source-id: af9f0f0377ddcf05014b5aca0b28db938dfb4ce2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52777
Changelog: [internal]
This significantly speeds up test execution in Fantom (around 2x in OSS and 6x at Meta) by starting a Metro server before all tests runs and reusing it across all tests to build test bundles, instead of spinning up a new Metro instance every time we run each test.
The architecture change (also considering the previous change in buck prebuilds) looks like this:
{F1980689532}
This is how is impacts execution times (compared to the baseline):
* OSS
* Before: 62s {F1980564286}
* After: 30s (**2x faster**) {F1980564265}
Reviewed By: andrewdacenko
Differential Revision: D78741903
fbshipit-source-id: b209f88925e49cc2a2067e8df9b7fa9a29b4c8d2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52758
Changelog: [internal]
This is a change to how Fantom tests run in Meta infra via Buck.
After this, the biggest opportunity will be optimizing how we generate bundles with Metro.
Reviewed By: christophpurrer
Differential Revision: D78672863
fbshipit-source-id: 1152907f3ba60e7d2e48bcc588f3c07aef7bb393
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52905
Similarly to [this PR](https://github.com/facebook/react-native/pull/51225), we do it for the Text component now: we don't set any non-default value props (most prominently, the accessibility ones) before passing this to native.
This saves bandwidth and potentially improves the prop parsing time, which existing Fantom benchmarks do confirm.
This is implemented behind a feature flag, which is false by default (will use it to run an experiment before rolling out).
**NOTE:** This implementation forks the whole text component, as suggested by rubennorte, in order to isolate the changes and with the ultimate goal of removing the old version once the experiment is concluded.
## Changelog:
[Internal] - Text no longer sets any default accessibility props, which should not result in visible changes in behaviour but may affect snapshot tests.
Reviewed By: rubennorte
Differential Revision: D79177652
fbshipit-source-id: a39430464fd5edec953b4c91be7ef9620ebd75ac
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52987
This class is unnecessary. Is also public for no real reason.
Instead we should use `ReactNoCrashSoftException` directly.
I'm not marking this as breaking as users hsould not be catching this class.
Changelog:
[Internal] [Changed] -
Reviewed By: mdvacca
Differential Revision: D79451567
fbshipit-source-id: 4d6f45b3006c79969fcf141002d34a72bf88901a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53009
Changelog: [internal]
This disables the test for LongTasks API on Github CI as the execution speed there is unreliable and makes the current tests flaky.
This happens because the test is timing dependent, but the alternative would be to mock some core behaviors that I think might be even worse.
Reviewed By: cortinico
Differential Revision: D79510480
fbshipit-source-id: 277e42e36aa6dfebf4745d094541a667f58a0996
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53010
Changelog: [internal]
Exposing this value so we can disable some tests in some scenarios in a following this.
Reviewed By: cipolleschi
Differential Revision: D79510481
fbshipit-source-id: 632d9a008943ed40c24878b5561065b6ede1d689
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52988
This class should be marked as `LegacyArchitecture` while it was not.
Changelog:
[Internal] [Changed] -
Reviewed By: mdvacca
Differential Revision: D79451041
fbshipit-source-id: 62c5d35821e354ea851eaccac909bf6bd9157f09
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53013
Quick fix to restore CI on `main`. `actions/setup-node` is now pulling Node.js `24.5.0`, which introduces a bug affecting `packages/dev-middleware/src/__tests__/` Jest tests.
Changelog: [Internal]
Reviewed By: cipolleschi
Differential Revision: D79551277
fbshipit-source-id: 51951ad8ffe376a478da268b50aa54ac2d9bba03
Summary:
This label was renamed at some point and it broke the issue template. This fixes it.
## Changelog:
[INTERNAL] -
Pull Request resolved: https://github.com/facebook/react-native/pull/52981
Test Plan: N/A
Reviewed By: mdvacca
Differential Revision: D79448155
Pulled By: cortinico
fbshipit-source-id: 2312fc5a0a82a65ca908af58dc74348141c16ca2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52995
Fabric retains views by ID when `JSTouchDispatcher` receives a touch event, but does not sweep these same views if a child native gesture is started between the `ACTION_DOWN` and `ACTION_UP` actions of the touch. As a result, we never end up calling into that view's manager's `onDropViewInstance` method and can't perform reliable teardown of the view since it's stuck in this "touched" state.
This is change adds a new condition to check if `JSTouchDispatcher` should sweep active touches when a child native gesture is started, and only applies the check to `ReactSurfaceView` to start. The check is also only enabled if the `sweepActiveTouchOnChildNativeGesturesAndroid` flag is set.
Changelog: [Internal]
Reviewed By: jehartzog
Differential Revision: D79230277
fbshipit-source-id: c15b888ec932319f1bda05b8ef5eec39e5d08710
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52972
Fabric retains views by ID when `JSTouchDispatcher` receives a touch event, but does not sweep these same views if a child native gesture is started between the `ACTION_DOWN` and `ACTION_UP` actions of the touch. As a result, we never end up calling into that view's manager's `onDropViewInstance` method and can't perform reliable teardown of the view since it's stuck in this "touched" state.
This is the first of a few changes to add a new feature flag `sweepActiveTouchOnChildNativeGesturesAndroid` to allow the `JSTouchDispatcher` to sweep active touches when a child native gesture is started. Running experiments internally to confirm that there are no unintended side effects from flushing the active touch.
Changelog: [Internal]
Reviewed By: jehartzog
Differential Revision: D79257465
fbshipit-source-id: 1ca79e77b21d8086c4df6753b16b1d8d922cd8d5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52992
changelog: [internal]
do not log on every frame to make logs more readable. The callbacks are only set during construction and there is no value in logging on every commit props.
Reviewed By: rshest
Differential Revision: D79436988
fbshipit-source-id: 26c6cbadd5ae0efa8575c7f85e4c0d90e2ef6215
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52982
Changelog: [internal]
Just adding a few tests for `View` refs, to show as an example of what a test for a public component should have.
Reviewed By: rshest
Differential Revision: D79447449
fbshipit-source-id: 75b9dbb45824d927bcf63472da25c7c5a52c7eb6
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52983
Changelog: [internal]
Just moving some tests that were defined under `<View>` that were related to styles, to under `<View> > props > style`.
Reviewed By: rshest
Differential Revision: D79447450
fbshipit-source-id: e97cc4e058ffc8170b7fa74176cc8dc27e26cfde
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52974
Changelog: [internal]
The test for LongTasks is flaky on Github and I made a change to figure out why (D79366370 / https://github.com/facebook/react-native/pull/52948). It seems that the long task happens before the artificial task we're using for testing, so we can update the test to filter those out.
Reviewed By: cortinico
Differential Revision: D79441987
fbshipit-source-id: 99296d704cfec2e61ca29d06878df171231f4e78
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52944
changelog: [internal]
this should be in ReactCommon, not in cxx platform as it is not platform specific.
Reviewed By: rubennorte, christophpurrer
Differential Revision: D79184118
fbshipit-source-id: 141f0ce7b993d229c5d832d22c54471d32681173
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52949
## Changelog:
[Internal] [Changed] - cleanup TODOs in fantom tests around cxxNativeAnimatedRemoveJsSync
Previous attempt to remove js sync so far is working expectedly since https://github.com/facebook/react-native/pull/52904 / D79080739
Reviewed By: sammy-SC
Differential Revision: D79373130
fbshipit-source-id: e310b9250ba5da2e55435468f46b75977e46f111
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52935
Changelog: [internal]
This implements a new option for `PerformanceTracer::startTracing` to specify a maximum duration for the recording, keeping only the last record events.
This will allow us to implement an "always-on" profiling mode for RN with a low overhead. In the future, we can extend this with a `maxBufferSize` option.
See the comment in `PerformanceTracer.cpp` for implementation details.
Reviewed By: hoxyq
Differential Revision: D79340014
fbshipit-source-id: 3260724a775a574fe5e52d47358a3a5abd0d2ee7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52938
Changelog: [internal]
Minor refactor to simplify changing the logic for how events are buffered.
Reviewed By: hoxyq
Differential Revision: D79340013
fbshipit-source-id: efd295b1583929580fbe7441ec7eb06e828ca514
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52937
Changelog: [internal]
Minor refactor to log the synthetic events for trace start when the trace finishes. This is to simplify future work to implement a sliding window for trace events.
Reviewed By: hoxyq
Differential Revision: D79271692
fbshipit-source-id: 9e923ac36fff850a3aeede7304fb2d721bb9f16c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52934
Changelog: [internal]
Right now, the `PerformanceTracer` API has a method to stop the trace and a separate one to collect serialized events. This refactors the API to return the collected events when calling `stopTracing` instead.
The caller (in this case `TracingAgent`) is responsible for serializing and sending the events in chunks through CDP.
Reviewed By: hoxyq
Differential Revision: D79271690
fbshipit-source-id: bdb48c80be4fd07d96e381e6bb4d099cae91f8de
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52936
Changelog: [internal]
This method is unused and we're no longer planning to use it.
Reviewed By: hoxyq
Differential Revision: D79271691
fbshipit-source-id: 1a0be464928a199cfe4a57cb5c44255b127264c2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52948
Changelog: [internal]
Not sure why this test is flaky, but this tries to add some more assertions to see where the problem comes from.
Reviewed By: hoxyq
Differential Revision: D79366370
fbshipit-source-id: d66b30e502dbc80d3e972ed93a91bb7f703de9c4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52942
# Changelog:
[Internal] -
Adds another test clause to the Text benchmark test, to test the case when the component doesn't have any props altogether, which can be useful to establish a baseline.
Reviewed By: rubennorte
Differential Revision: D79352849
fbshipit-source-id: fbfeb53d3ede59631548eb2fe76a4debd5927900
Summary:
This pull request resolves a critical accessibility bug on Android where custom `accessibilityActions` fail to execute when activated via TalkBack's swipe gestures.
**The Problem:**
- When a user focuses a component with custom `accessibilityActions` (like a `TouchableOpacity`), TalkBack correctly announces the action labels as the user swipes up or down.
- However, when the user double-taps to activate the selected action, TalkBack reports an "incompatible action," and the `onAccessibilityAction` event is never triggered.
**The Root Cause:**
The investigation revealed that the `ReactAccessibilityDelegate` was generating **new, unstable IDs** for custom actions on every UI update. This instability prevents the Android accessibility service from reliably tracking and invoking the selected action.
**The Solution:**
This change introduces a static, thread-safe cache (`ConcurrentHashMap`) within `ReactAccessibilityDelegate`. This ensures that each unique action name is mapped to a single, stable ID for the entire lifecycle of the application. This provides the consistency required by TalkBack to function correctly.
This addresses the issue described in https://github.com/facebook/react-native/issues/47268.
---
## Changelog:
[Android] [Fixed] - Stabilize custom accessibility action IDs to prevent "incompatible action" errors in TalkBack.
---
Pull Request resolved: https://github.com/facebook/react-native/pull/52724
Test Plan:
The fix was validated extensively using the RNTester app on a physical Android device and an Android emulator.
### Steps to Reproduce (Before Fix)
1. Enable TalkBack on an Android device.
2. Navigate to a `TouchableOpacity` component with several custom `accessibilityActions`.
3. Swipe up or down to cycle through the actions. TalkBack correctly announces them (e.g., "add to cart").
4. Double-tap to execute the selected action.
5. **Result (Bug):** TalkBack announces *"incompatible action"*, and the `onAccessibilityAction` event is not triggered.
### Validation Steps (After Fix)
1. Follow the same steps as above on the patched version.
2. **Result (Fixed):** After double-tapping, the `onAccessibilityAction` event is **correctly triggered** with the appropriate action name. The "incompatible action" issue is fully resolved.
*A screen recording demonstrating the successful fix can be provided if needed.*
Uploading fixed bugs view problems (1).mp4…
Fixes https://github.com/facebook/react-native/issues/47268
Reviewed By: jorge-cab
Differential Revision: D78737471
Pulled By: cipolleschi
fbshipit-source-id: 877b196597472ac6a4f6df81a05a43956fb34629
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52940
# Changelog: [Internal]
This is required for storing these Trace Events somewhere outside of PerformanceTracer, in case these events will be dispatched later.
Reviewed By: rubennorte
Differential Revision: D78741192
fbshipit-source-id: 3cc2eacd922855231fafb93c32d326b150b3c19b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52916
# Changelog: [Internal]
Align with other serializers in `jsinspector-modern` to have just static public method.
Reviewed By: rubennorte
Differential Revision: D79131985
fbshipit-source-id: 3f1f08641bb96a9fbd067992b8ce294af9d27688
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52915
# Changelog: [Internal]
This removes the use of `PerformanceTracer` instance in a serialization logic.
Reviewed By: rubennorte
Differential Revision: D78919220
fbshipit-source-id: 5c663ea77eb36eb7664623c1595308a9450f7825
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52917
# Changelog: [Internal]
Just an aliases for referencing these ids, instead of raw uint64_t.
Reviewed By: rubennorte
Differential Revision: D78741191
fbshipit-source-id: 1ee403ff19ed95361366c76c1fb52e70ec67f16e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52914
# Changelog: [Internal]
We can't rely on RuntimeExecutor to actually tell us what JavaScript thread number is. Although this would work correct in most of the cases, this is not the solution we should go with.
Instead, we should fetch a map <id, name> of threads from the Host. This is what we will lazily call at the start of the Trace. I will add later on top of the stack.
Reviewed By: rubennorte
Differential Revision: D78990872
fbshipit-source-id: e41ebd35273c6741ebbc3fe3b851018c9f3275dc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52894
Adds the following boolean pragma modes for more granular control:
```
fantom_native_opt true|false
fantom_js_opt true|false
fantom_js_bytecode true|false
```
Previously these were all set together with `fantom_mode`. These modes are mutually exclusive with `fantom_mode`.
Changelog: [Internal]
Reviewed By: rubennorte
Differential Revision: D79151687
fbshipit-source-id: 59c3f20bccb570c0293ffd037609946a1a9bbb8f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52821
Hardens RN to running in mismatched opt/dev modes.
While adding an opt native/dev js mode to fantom, LogBox was trying to load NativeDevSettings when it didn't exist because of mode mismatch.
This is the only location it's happening, so this just moves the NativeDevSettings load into the one function that needs it.
Changelog: [Internal]
Reviewed By: rubennorte
Differential Revision: D78952284
fbshipit-source-id: e68667cb28fae7cb6f985305e8885f271ef5d3af
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52923
Follow-up to D78904748, where CI was broken on `main` for the `run_fantom_tests` job. It turns out this Android build uniquely included the new `react_performance_cdpmetrics` dependency, and this had an incorrect dep.
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D79263124
fbshipit-source-id: 3e38e0cebe53520ea50e6d11a571e01c52e34874
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52840
**Context**
Experimental V2 Performance Monitor prototype, beginning by bringing the [Interaction to Next Paint (INP)](https://web.dev/articles/inp) metric to React Native.
**This diff**
Completes populating a full `InteractionEntry` Live Event payload by implementing remaining fields sufficient to be rendered by Chrome DevTools.
Changelog: [Internal]
Reviewed By: rubennorte
Differential Revision: D78904747
fbshipit-source-id: 7473602f6f1efe3ac71e07a2b88e6ad7020dcbbf
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52839
**Context**
Experimental V2 Performance Monitor prototype, beginning by bringing the [Interaction to Next Paint (INP)](https://web.dev/articles/inp) metric to React Native.
**This diff**
Adds and configures a `CdpMetricsReporter` class to report `InteractionEntry` live metrics over CDP via the `"__chromium_devtools_metrics_reporter"` runtime binding.
**Notes**
- Introduces a new `react/performance/cdpmetrics` package, and a listener API on `PerformanceEntryReporter` (both to avoid a `jni` dependency in `react/performance/timeline`).
Changelog: [Internal]
Reviewed By: rubennorte
Differential Revision: D78904748
fbshipit-source-id: c75971aba43d9929912b3d1dba7576c2a2342214
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52912
This diff throws an Exception if ReactApplication.reactNativeHost is not overriden. This field is deprecated and it will be deleted in the near future.
The goal of this diff is to be able to remove usages of reactNativeHost for classes that implement ReactApplication
changelog: [Android][Breaking] Throw Exception if ReactApplication.reactNativeHost is not overriden
Reviewed By: mlord93
Differential Revision: D79186336
fbshipit-source-id: 9f8f34739c0f04056ff3d795bda45bc0dbca7624
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52904
changelog: [internal]
There is a race condition in `FabricUIManagerBinding::schedulerDidFinishTransaction`. Until it is addressed properly, let's do synchronisation Fabric commits through JavaScript thread.
It can have pretty serious consequences: a crash in better case and undefined behaviour in worse case.
The race is between acquiring two mutexes:
1. One inside of `MountingCoordinator::pullTransaction`
2. Second one inside of `FabricMountingManager::executeMount`
The logic inside of `FabricUIManagerBinding::schedulerDidFinishTransaction` depends on the fact that whichever thread acquires mutex number 1, will acquire mutex number 2 without interruption. But that is not always the case as threads may be interrupted.
Reviewed By: zeyap
Differential Revision: D79080739
fbshipit-source-id: c86885aba25825030dc44b60144beb3e3ba18306
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52903
changelog: [internal]
disable subview clipping traversal when view culling is enabled.
Subview clipping is already disabled by preventing prop from being set to true: https://fburl.com/code/bynvtwfs but we found a crash where the traversal leads to memory corruption with view culling enabled.
Reviewed By: lenaic
Differential Revision: D79168116
fbshipit-source-id: 9dcb624ca12bc2d94b265681795604ee0ac3fe00
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52902
changelog: [internal]
These values must not change during view's life cycle.
Reviewed By: rshest
Differential Revision: D79165823
fbshipit-source-id: dff85d369e4f79ba88740b0f3a23b71af5ec0c5e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52901
I'm removing this class as we should not expose it publicly.
It's not used at all inside react-native and can potentally be moved internally.
The only usage I've found in OSS is patched with this PR:
- https://github.com/fabOnReact/react-native-wear-connectivity/pull/46
Changelog:
[Android] [Removed] - Remove the `com.facebook.react.bridge.JSONArguments` class
Reviewed By: javache, mdvacca
Differential Revision: D78265165
fbshipit-source-id: 704575e7b9cfd6d40980511d6064d39991b3eb48
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52887
Syncs Reac 19.1.1 into React Native.
This commit should contains the fix for:
- React owner stack in React Native
- An issue with React holding shadow node for longer than it needed
- An issue that made `startTransition` not working with React Native.
## Changelog:
[General][Changed] - Bumped React to 19.1.1
bypass-github-export-checks
Reviewed By: cortinico
Differential Revision: D79096406
fbshipit-source-id: cbb2f846b1f08ba5ff482cfed5aaddc16df075cc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52898
Changelog: [internal]
This test is flaky on Github and I haven't been able to reproduce it locally to debug exactly why, but I think it might be because there might be cross-tests pollution.
This tries to reduce that making sure we clean up everything between tests.
Reviewed By: cortinico
Differential Revision: D79163809
fbshipit-source-id: fe59315373ab74ccedd7e031816a84f0566b4aa0
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52885
Since we recently touched the `MatrixMathHelper` class, as we're looking into moving more matrix operations from Kotlin to C++,
I'm going to add more tests to make sure that those matrix math function are behaving correctly.
Changelog:
[Internal] [Changed] -
Reviewed By: mdvacca
Differential Revision: D79094323
fbshipit-source-id: 34967b42dc92338724dd20fb7f70a68734f6db28
Summary:
- The changelog docs has broken links for the pre v0.80 markdowns due to missing extension
- There are links without corresponding changelogs
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[INTERNAL] [FIXED] - fix changelog links and remove versions without corresponding changelogs
Pull Request resolved: https://github.com/facebook/react-native/pull/52849
Test Plan: Click on each link to see if it opens the corresponding page at the specific section
Reviewed By: christophpurrer, cortinico
Differential Revision: D79097825
Pulled By: cipolleschi
fbshipit-source-id: a92e709ccbb45a042175bd198326132bfbf37c65
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52876
Our tooling detected a couple of vulnerabilities in our package.json.
- undici
- on-headers
This change fixes these vulnerabilities.
For the on-headers vulnerabilitiy specifically, it comes from the following dependency chain:
- rn-tester > react-native-community/cli > compression > on-headers.
To fix it, we have to force the resolution to both on-headers and compression.
## Changelog:
[General][Fixed] - Fixed vulnerability on undici and on-headers
Reviewed By: cortinico
Differential Revision: D79086335
fbshipit-source-id: 44f14403196165f5f823030304102dbd0facd0ce
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52651
Changelog: [Internal]
Last year the `hermes-canary` profile was used to enable certain apps to use Static Hermes by enabling regenerator because debugger support for generator wasn't finished yet. However, we actually could have just keyed off of `options.dev` and still kept using `hermes-stable`.
The `hermes-canary` profile is actually meant to be used to run experiments. We should free up this profile to return it to the original intended purpose.
This diff makes all hermes profiles' dev mode use regenerator. Existing SH apps using `hermes-canary` should be unaffected. And apps using Hermes will change to use regenerator in dev mode, but that should be ok.
Reviewed By: robhogan
Differential Revision: D78450695
fbshipit-source-id: eb6a87fbc1f0e08d490fd0d1baa3611248f95764
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52891
Right now these are tightly coupled for no reason. The device helper just asks the root view to send the event out, which it uses ReactContext for. We can just have that be passed in and accomplish the same task.
Changelog: [Internal]
Reviewed By: Abbondanzo, rozele
Differential Revision: D79007328
fbshipit-source-id: ef0a5ac4ec0acb52fc7c2a26010811767e3c1e67
Summary:
The `EXPECT_EQ` was leading to potentially ambiguous use of `<<` when
gtest tries to print information.
Changelog: [Internal]
Reviewed By: tsaichien
Differential Revision: D78823354
fbshipit-source-id: d26de07f02eb8bb53a4dec34b5fb302681bfbef8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52889
This brings back ContextContainer::Shared (but marks it as deprecated which was removed in https://github.com/facebook/react-native/pull/52750
Changelog: [General][Fixed] Bring back ContextContainer::Shared = std::shared_ptr<const ContextContainer> alias
Reviewed By: lenaic
Differential Revision: D79112609
fbshipit-source-id: 1cb9114b98d745b846d5ddc56a01786527049e50
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52886
RNTester was using just a plain `by lazy{}` which gets flagged by our internal linter over and over.
This fixes it.
Changelog:
[Internal] [Changed] -
Reviewed By: mdvacca
Differential Revision: D79094496
fbshipit-source-id: 856864bf8b5e4ec1254d1793dba9e97377696408
Summary:
Update `RCTTextInputComponentView` to recycle and properly clean its `inputAccessoryView` dependency. Currently, `RCTTextInputComponentView` does not clean up this dependency during recycling, which can result in the `inputAccessoryView` being incorrectly applied to `TextInput` components that do not use an accessory view."
Related issue: https://github.com/facebook/react-native/issues/52824
Snack of the issue: https://snack.expo.dev/arturkalach/privileged-blue-sodahttps://github.com/user-attachments/assets/46a1f172-a75c-4e88-beee-059d4d2e1d0c
## Changelog:
[IOS][FIXED] Update recycling logic to clean up the `inputAccessoryView` dependency.
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/52825
Test Plan:
```
1. Render more than eight TextInput components on the screen, each with an AccessoryView.
2. Unmount the TextInput components using conditional rendering.
3. Open a Modal that contains a KeyboardAvoidingView and a TextInput.
4. Focus on the TextInput inside the Modal.
```
https://github.com/user-attachments/assets/8be1fdef-e8ab-4030-a2c5-e952c22ef743
Reviewed By: christophpurrer
Differential Revision: D78966221
Pulled By: cipolleschi
fbshipit-source-id: 35b6748cc44c41056051b2eecd626d61c4641cdf
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52877
We moved the HelloWorld package from `packages`to `private` but we didn't update the path to React Native that is consumed by metro.
This change fixes this.
## Changelog:
[Internal] -
Reviewed By: huntie
Differential Revision: D78493478
fbshipit-source-id: 8795c2963dec036693a73a16c18be381f19e11c4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52870
# Changelog: [Internal]
Defines a set of static serializers for parts of the "Profile" and "ProfileChunk" Trace Events.
Mainly for 2 reasons:
1. To follow the same pattern of static serializers for Tracing.
2. To save on string copying, since ProfileChunk could contain hundreds of unique frames, all of them could have unique function names. The previous approach would copy the strings and populate a new `folly::dynamic` object.
Reviewed By: huntie
Differential Revision: D78919218
fbshipit-source-id: 303a4fc259d6b1720ce982e144037ee56cd47e9b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52869
# Changelog: [Internal]
We are exctracting a logic for serialization of TraceEvent into a dedicated serializer class.
Conceptually:
- PerformanceTracer would be a local TraceEvent engine that is responsible for constructing and buffering TraceEvents.
- TraceEventSerializer will have a single responsibility: transforming from local structs to serialized json objects that are ready to be dispatched over CDP Tracing domain.
This would help avoid scenarios, where we are passing around `folly:dynamic` between internal subsystems: serialization should only happen right before emtting a CDP message.
Reviewed By: huntie
Differential Revision: D78738370
fbshipit-source-id: a8e33e857192a02dc048d504abe072679ef8ce82
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52868
# Changelog: [Internal]
Mainly, 2 changes:
- Callback that emits `Tracing.dataCollected` events will receive chunks as rvalues refs (`&&`), instead of `const &`.
- The RuntimeSamplingProfile will be passed to the serializer as rvalue ref.
Reviewed By: huntie
Differential Revision: D78919223
fbshipit-source-id: 7f65e0627c8839d507e6b2d088fdb0b560906b6a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52867
# Changelog: [Internal]
There are currently no reasons for these struct not to be plain, plus this would allow us avoiding potentially expensive copying, when returning `const &`.
Reviewed By: huntie
Differential Revision: D78919222
fbshipit-source-id: 7b39d754c05b25915f07202d7e4839b10a08a47c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52866
# Changelog: [Internal]
There are currently no reasons for these struct not to be plain, plus this would allow us avoiding potentially expensive copying, when returning `const &`.
Reviewed By: huntie
Differential Revision: D78919221
fbshipit-source-id: 7d3628bb213fdecadbdafa9b2b5c42472ebd77be
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52865
# Changelog: [Internal]
These doesn't have any custom internal logic, so can be flattened for simplicity.
Reviewed By: huntie
Differential Revision: D76986727
fbshipit-source-id: cf23adf43eefda92674a46217a7269399cf81f0a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52878
Now that Metro is bumped to also support node >= 20.19.4
we should be able to run test_js on `main` against 20.19.4
Changelog:
[Internal] [Changed] -
Reviewed By: robhogan, motiz88
Differential Revision: D79087608
fbshipit-source-id: 2161a893ab2fd88dc7eb1b35aa385704962018e8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52871
## Changelog:
[Internal] -
As in the title, this adds a basic Fantom benchmark test for the Image component.
Reviewed By: rubennorte
Differential Revision: D79085957
fbshipit-source-id: 4098415353c8a04992c39e39d9a1dd20270f20d7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52861
Changelog: [internal]
We added this mode recently to support all local Hermes variants, but this doubles the number of build type combinations which regresses test execution time and give us little benefit, so we're removing it.
Reviewed By: rshest
Differential Revision: D79080370
fbshipit-source-id: e1b536427acb98ec01edfd44829e2fef9be9b18d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52863
Changelog: [internal]
We're seeing some issues in stress runs for Fantom tests in optimized mode, failing when compiling the bytecode with Hermes. The specific error in the Hermes compiler isn't clear, but this started failing when we changed the folders for output. It's possible that it's due to race conditions in stress runs, where multiple workers are attempting to compile in the same locations.
This forces every output in every runner to be in a different file to prevent these possible collisions.
Reviewed By: rshest
Differential Revision: D79084242
fbshipit-source-id: b4540e2e6c5378c7fc8630ac2fea674e0ef78a14
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52848
This diff declares the `DataDetectorType` enum and defined the `dataDetectorType` property on the Android Paragraph props.
The conversions.h file holding the state conversion to MapBuffer was renamed to stateConversions.h so that it wouldn't clash with the Android conversions.h file.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D79025294
fbshipit-source-id: 52dc519ea51191f28745d91fe31e36eaba29a731
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52847
Adding the missing Android Text selectionColor prop to the `ParagraphProps` to correctly support the prop with Props 2.0
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D79023868
fbshipit-source-id: 10e04d438d9d118e6b80e8d8854e0bbb76b430ee
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52846
Adding the Paragraph `disabled` property for RN Android.
This diff also adds a new Text example to RNTester for disabled text.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D78990840
fbshipit-source-id: dd25b890597bc9f728f929b38c2f680631b7f476
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52845
With Android having its own props for the Paragraph component, we need to create a Host Platform specific version for the `ParagraphProps` to hold those platform specific properties.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D78990838
fbshipit-source-id: 722777a338f960fcc54846d8e8f106f51cac162c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52837
# Changelog
[Internal] -
This feature has been enabled by default for a while, and has been proven to both not cause correctness issues, and also provide tangible performance improvements.
We can remove the corresponding feature flag to improve code maintainability.
Reviewed By: rubennorte
Differential Revision: D78978302
fbshipit-source-id: 45cb865321f6e0eb449427845772fc522221514a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52225
## Changelog:
[Internal] - Fantom in RN CLI
This diff prepares the RN CI to build and run Fantom Tests
Reviewed By: cortinico
Differential Revision: D70097944
fbshipit-source-id: 163cb3f5204f7e5491f94f2fbebe11b514919cdf
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52842
## Changelog:
[Internal] [Fixed] - keep track of last direct manipulation props
* so that at next time there's a ShadowTree commit (regardless of which thread), they're merged into the update mutation
* the props will stay until the view is disconnected from props node via Animated API or the view is removed/deleted. This should be expected behavior, because in RN we expect that once Animated changes a prop, subsequent react commits should not change the value.
Reviewed By: sammy-SC
Differential Revision: D78702843
fbshipit-source-id: b5e6e01a7a4f6caeea4cc1eeafaef9c3c7e51691
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52809
**Context**
Experimental V2 Performance Monitor prototype, beginning by bringing the [Interaction to Next Paint (INP)](https://web.dev/articles/inp) metric to React Native.
**This diff**
Add two new feature flags:
- `fuseboxInteractionMetricsEnabled` — Will configure sending of interaction live metrics to CDP clients, independent of an active performance profiling session.
- `perfMonitorV2Enabled` — Will enable the backend + UI for the V2 Perf Monitor.
Changelog: [Internal]
Reviewed By: motiz88
Differential Revision: D78894857
fbshipit-source-id: 7605357b3cc9255d76f66bde605f9e520dda9750
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52836
# Changelog
[Internal] -
This adds a basic benchmarking test for `Text` component creation, similarly to the one we already have for the e.g. `View`.
Reviewed By: rubennorte
Differential Revision: D78975332
fbshipit-source-id: e1b54e59a54e8c7f8f19738f2ffeaa02ca5c09ee
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52832
# Changelog
[Internal] -
Make use of `Fantom.unstable_benchmark.testArg` API added in D78970312 for the existing View benchmark test - this makes it more succinct/maintainable.
Reviewed By: rubennorte
Differential Revision: D78970311
fbshipit-source-id: 2db35cb2edfa366311d62c4b1d141c3813a31e53
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52831
# Changelog
[Internal] -
The corresponding `testWithArg` API is similar to the existing `test` one for the Fantom benchmarks, except it would allow to run the same test several times in a parametrized manner, with the set of parameters specified as an array (for now, of numbers).
This allows to easily implement testing patterns such as we have in a View benchmark test, whereas we have a mostly duplicated test body doing a similar thing with 100, 1000, 1500 view component instances etc.
Reviewed By: rubennorte
Differential Revision: D78970312
fbshipit-source-id: 504b7aada648c7213ce698f088ac71d9fde8884b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52813
Changelog: [General][Changed] CDP backend now accepts addBinding and removeBinding methods earlier, before a Runtime exists.
Allows managing CDP binding subscriptions at any point in time, including at the very beginning of a session when a `RuntimeAgent` doesn't yet exist (due to `registerRuntime` not having been called yet).
"Adding" a binding with the `Runtime.addBinding` method is actually two actions in one:
1. Subscribing the current session to events from a particular binding name, from one or more Runtime(s) that may exist now or in the future (optionally targetable by execution context ID/name).
2. Installing a JSI function with the given `name` on the global object of the targeted Runtime(s), if they exist at the time of the method call.
NOTE: "Removing" a binding only involves managing the subscription and never causes the corresponding JSI function to be uninstalled - presumably because it may have been captured by user code anyway.
We currently do both (1) and (2) in `RuntimeAgent`, but this means subscriptions can't be managed before a `RuntimeTarget` has been created, which can cause problems if we want to set up certain bindings programmatically during React Native's initialisation. As this is an unnecessary restriction, here we move (1) to `HostAgent` and keep only (2) in `RuntimeAgent`.
Reviewed By: huntie
Differential Revision: D78739067
fbshipit-source-id: 9a39f4503d1b5e7c7a6e4c80dfbaabdd2549fb8d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52807
changelog: [internal]
Fixes a crash that occurs when event driven animation is attached to a view that is unmounted.
Reviewed By: zeyap
Differential Revision: D78889689
fbshipit-source-id: 6bc534c3d80a7ed2fc5e0ac378e58343fef45430
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52834
changelog: [internal]
we have seen some problems with the fabric commit and believe there is a race condition in the implementation.
Here, we introduce an option to disable it.
Reviewed By: rozele
Differential Revision: D78972655
fbshipit-source-id: 99005c77dbe4dde3816b9e6a692f170cf287f7cd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52828
Changelog: [internal]
Just a small quality of life improvement. It forces the test functions in benchmarks to have the name of the test case if it's an anonymous function, so it shows better in stack traces.
Reviewed By: sammy-SC
Differential Revision: D78924769
fbshipit-source-id: 9b44a49feaae93ccfa90cc726274f0ea013654b1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52826
Changelog: [internal]
This is just an intermediate change to simplify how we format Fantom configs, so we can extend it to use other formatting formats (e.g.: short format to use in file names).
Reviewed By: lenaic
Differential Revision: D78924771
fbshipit-source-id: 4886a800a6836dc6a66539b1df079adb6c9c52e1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52788
Changelog: [internal]
Minor change to just create a single output directory for generated JS code in Fantom per Jest run.
Reviewed By: lenaic
Differential Revision: D78808564
fbshipit-source-id: 70e1a60dfcdcc3fc6ee5f08ced1e9c8f8cab2782
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52817
X-link: https://github.com/facebook/yoga/pull/1828
X-link: https://github.com/facebook/litho/pull/1070
This diff makes the Yoga/Yoga.h header an umbrella header, which means that it includes all of Yoga's public headers. The code changes in each file include adding the IWYU pragma export to each header file, which is a way to tell the compiler to export the header file's symbols to other files that include it. This is necessary for the header file to be used as an umbrella header.
Changelog:
[General][Added] - Code quality fixes
Reviewed By: corporateshark
Differential Revision: D78692457
fbshipit-source-id: 7fcd53d2a6f268fa4377dbd5bd6ba6eebc94b5f8
Summary:
Hello, I work on [Radon IDE](ide.swmansion.com) I encountered an issue while adding support for react native 81, this PR solves it:
In https://github.com/facebook/react-native/issues/51023 EvanBacon removed `displayName` filed from `View` component adding the following comment:
>Remove displayName in favor of component name. I'm not 100% sure this is a full fallback but it is valid according to react/display-name eslint rule—https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md
Unfortunately the Fabric renderer uses the `displayName` property to generate the name of the component for the inspector functionality and in absence of it generates a name that might be confusing to the end user:
<img width="351" height="283" alt="Screenshot 2025-07-17 at 21 27 37" src="https://github.com/user-attachments/assets/852246aa-6586-4684-b80e-5d70b9678c6e" />
Problem is not specific to Radon and happens in chrome devtools as well:
<img width="501" height="130" alt="Screenshot 2025-07-17 at 22 16 52" src="https://github.com/user-attachments/assets/3514dd02-59f7-473a-87b1-6ed325d2034c" />
This PR brings back the `displayName` property to fix that.
## Changelog:
[INTERNAL] [FIXED] - Bring back the displayName property to the View component
Pull Request resolved: https://github.com/facebook/react-native/pull/52688
Test Plan:
- Run the application
- open chrome devtools and navigate to "components" tab
- before changes the View components would show up as `View_withRef` after they are named `View`
Rollback Plan:
Reviewed By: lunaleaps, cortinico
Differential Revision: D78512254
Pulled By: alanleedev
fbshipit-source-id: 46e4a224b09fe3fb938c055a675f687c86d7ddcb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52814
Changelog: [Internal]
The handling of `Tracing.start` was needlessly split between `HostAgent` and `TracingAgent` because `TracingAgent` did not have a reference to the session state (which, being an Agent, it's allowed to have). This diff cleans that up.
Reviewed By: huntie
Differential Revision: D78799899
fbshipit-source-id: b05e6dae2e9b287b8708debe756b19f81d5dae06
Summary:
Metro release notes: https://github.com/facebook/metro/releases/tag/v0.83.1
The only public-facing change is a lowering of the minimum Node.js version from 22.14 to 20.19.
This will need picking to RN `0.81-stable`
Changelog: [General][Changed] Metro to ^0.83.1
Reviewed By: huntie
Differential Revision: D78895160
fbshipit-source-id: b9ccffe972249b73897f51c14873861e57a97161
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52815
Changelog: [Internal]
Refactors `HostAgent::handleRequest` to make the control flow more explicit and the state (`isFinishedHandlingRequest`, `shouldSendOKResponse`) immutable.
Reviewed By: huntie
Differential Revision: D78799898
fbshipit-source-id: 0bcf6c364466a91ad3075b67e4f2ac9a4e7a69a7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52812
1. Fix forward from D76486572 (cc christophpurrer) - `#include <format>` is, for whatever reason, not available in fbcode (?) but `fmt` is an adequate, working substitute that is also used elsewhere RN (specifically in ReactCxxPlatform). Also removed the `folly/Format` include that had erroneously been left in, and the `fbobjc_ios_propagated_target_sdk_version` setting that was added purely to support `<format>`.
2. Fixes a dangling reference to an immediately-destroyed `MockHostTargetDelegate` in `ReactInstanceIntegrationTest`, caught by ASAN.
3. Adds a missing `#include <stdexcept>` to `Utf8.h`.
Changelog: [Internal]
Reviewed By: huntie
Differential Revision: D78756286
fbshipit-source-id: d9428c54fc512f5ab33d31300aba9bf5c3e619b2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52767
Changelog: [Internal]
Currently tests that depend on hermes dev bytecode will fail because in OSS this case was not handled. We need to skip them for now before we integrate hermes compiler properly.
Reviewed By: christophpurrer, rubennorte
Differential Revision: D78750791
fbshipit-source-id: 5b55bc9acbd6ee5aad874ad57607325cb1373c2e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52803
I've just realized that our build suffer from a race condition. Specifically
libraries codegen needs to be executed before the app starts the evaluating CMake files.
Otherwise this could lead to a lot of missing files or folders.
Changelog:
[Android] [Fixed] - **rngp:** Fix a race condition with codegen libraries missing sources
Reviewed By: huntie
Differential Revision: D78886347
fbshipit-source-id: f59c201d2eab651bc4a08cf5a795acd379d18186
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52743
We can build an accessibility tree for Talkback by overriding addChildrenForAccessibility of ViewGroup.
With this we just manually build a tree that contains the elements we care about in the order we want.
We also try to keep most of the tree intact so that coopting works properly
Changelog: [Internal]
EDITS: After backout, fixed the issue where we were incorrectly setting the `accessibility_order_parent` tag the ReactAxOrderHelper class instead of the actual view. Also, made the cast safe to prevent any unexpected issues.
Also refactored the ReactAxOrderHelper functions to not have the block scoped `traverse` functions in favor of just looping through the children of a view when calling them
Reviewed By: joevilches
Differential Revision: D78669715
fbshipit-source-id: e714367c28e722ce42895531cf18e6f2dc926556
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52791
Changelog: [internal]
This cleans up this feature flag as it doesn't work as intended. We'll try another approach with a different flag instead.
Reviewed By: sammy-SC
Differential Revision: D78815892
fbshipit-source-id: 4c651a3a225de9cfb54d00346343c7f2e3bea1d5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52792
With view recyling enabled only on a subset of the components, a recyclabe view could still be attached to its parent if that parent is not recyclable. This diff removes any recycled view from its parent. This will allow the view to be attached to a new parent on mount.
This diff removes the assert checking for parents still set on views pushed on the recycle stack.
Changelog: [Internal]
Reviewed By: mdvacca, sammy-SC
Differential Revision: D78814943
fbshipit-source-id: bb754ce5f526acbf263f23646335228447278562
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52763
The ui manager proxy shouldn't depend on the legacy ui manager.
We plan to compile out the legacy ui manager soon. But, the ui manager proxy is supposed to linger around for longer.
Changelog: [internal]
Reviewed By: cipolleschi
Differential Revision: D78697148
fbshipit-source-id: 249c63aae63daf653627e3e449b442b5ddaa5afe
Summary:
bypass-github-export-checks
Pull Request resolved: https://github.com/facebook/react-native/pull/52783
This change reverts D78158734 which was a patch to make the dynamic frameworks work properly because we were not exporting the FBReactNativeSpec headers in prebuilds correctly.
This change fixes this, by exposritng those headers correctly.
## Changelog:
[Internal] -
bypass-github-export-checks
Reviewed By: cortinico
Differential Revision: D78803425
fbshipit-source-id: 5613ed0c790455ea86668eeb436f7b78a0c80918
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52789
I'm adding those 2 feature flags as enabled for the experimental channel of React Native so that partners
can report back to us and let us know if there are significant regressions.
Changelog:
[Internal] [Changed] -
Reviewed By: rshest
Differential Revision: D78810737
fbshipit-source-id: dc51106e2167aa92d4a275be78abb2c6984b7ffb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52771
Changelog: [Internal]
It seems we can simply use a std::shared_ptr here
(This was some initial over-engineering which isn't needed as it turns out)
Reviewed By: cipolleschi
Differential Revision: D78771904
fbshipit-source-id: 2925c424d2061ca727636c683ec783ed56e3f0c9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52779
Changelog: [internal]
Adds validation for Fantom environment variables at runtime, to catch typos or variables that no longer have an effect.
Reviewed By: rshest
Differential Revision: D78803045
fbshipit-source-id: efb28a4f3fd6a4be35fb525d91fb093a1e88f7e4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52766
Changelog: [internal]
Just a minor refactor so adding more logic that should work both at Meta and in OSS is easier in the next diff
Reviewed By: christophpurrer
Differential Revision: D78741904
fbshipit-source-id: 3abda5d5b7be157bf381e26dad2fd4b064a0f556
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52778
Changelog: [internal]
Jest has an option to select a specific project when running tests:
```
jest --selectProjects fantom
```
But for this to work, a `displayName` option needs to be set in the project configuration. This adds that for Fantom tests (using `fantom`).
Reviewed By: rshest
Differential Revision: D78802516
fbshipit-source-id: 483e7c1450b1f97961e4e43c963fac3ce82cee58
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52776
Changelog: [internal]
`FANTOM_FORCE_CI_MODE` is just an explicit way to indicate that we're on CI, so we'd run benchmarks in test mode, for example.
`FANTOM_DEBUG_CPP` is just an alias for `FANTOM_ENABLE_CPP_DEBUGGING` which is unnecessarily long.
Reviewed By: rshest
Differential Revision: D78801918
fbshipit-source-id: 8e60bdd911067c6b0b92be7e90553fd5209c9ca9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52759
Changelog: [internal]
This introduces a new environment variable for Fantom to disable benchmarks (`FANTOM_FORCE_TEST_MODE`), without having to run in CI mode.
Reviewed By: rshest
Differential Revision: D78672864
fbshipit-source-id: ef445bd8b36703594658529da2436c75d5b87179
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52765
Changelog: [internal]
Reported locations for errors in Fantom is wrong, because it seems it's not ignoring "infra" frames.
This was caused by the `stack` property in `ErrorWithCustomBlame` being set on the error objects and shadowing the getter that removes the necessary frames. This fixes that by forcing that property to be deleted.
Reviewed By: christophpurrer
Differential Revision: D78747119
fbshipit-source-id: 81d6ce74041382d7582e2066409e839d28d91052
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52610
This diff removes `ReactNativeFeatureFlags` from `react-native/Libraries/ReactNative` and migrates
`shouldPressibilityUseW3CPointerEventsForHover` to common `ReactNativeFeatureFlags` in `src/private/featureflags`. The `shouldEmitW3CPointerEvents is removed as it is used in `rn-tester` to hide some examples.
Changelog:
[General][Breaking] - Migrate `shouldPressibilityUseW3CPointerEventsForHover` to common private feature flags and remove `shouldEmitW3CPointerEvents` flag.
Reviewed By: robhogan
Differential Revision: D75448698
fbshipit-source-id: 03942c9504b855f2054c9a5948c0521ce17365b5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52772
ReactYogaConfigProvider is an internal legacy unused class, I'm just deleting it
There are no usages of this class
changelog: [internal] internal
Reviewed By: NickGerleman
Differential Revision: D78516728
fbshipit-source-id: f694e9cd66ebe6cf97b343ce971b61fbd42f956f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52716
ReactPackageLogger is not supported in the new architecture
changelog: [Android][Changed] ReactPackageLogger is not supported in the new architecture and being deprecated
Differential Revision: D78501563
fbshipit-source-id: 3fef9dc80b8fce4d5a2067cfe171abb8ea6e1aca
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52770
Prettier v3 has an async API. This diff adds in async and await ahead of the upgrade to prepare for the API change.
Changelog: [Internal]
Reviewed By: pieterv
Differential Revision: D78752906
fbshipit-source-id: 2deeecfc283be30fd0840b2a089604f4e6804af5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52768
Prettier v3 has an async API. This diff adds in await ahead of the upgrade to prepare for the API change.
Changelog: [Internal]
Reviewed By: pieterv
Differential Revision: D78752354
fbshipit-source-id: c0d27a6c863747b71852e72a22687d1fe1d9f76f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52734
# Changelog: [Internal]
We are going to need it at the top of the stack, once we will capture the Trace Events as part of the Tracing Profile for the whole Host.
This is also would be used for always-on tracing.
Reviewed By: sbuggay
Differential Revision: D78660071
fbshipit-source-id: 4f876bed992b8a794e561940ad12405fef88cb62
Summary:
There are some duplicated function calls in `PerformanceEntryReporter::reportMark()` . I know this is a micro optimization but I feel this way the code is cleaner.
This is called through `performance.mark` so there is potentially a tiny little performance improvement here?
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[INTERNAL] [FIXED] - Removed redundant checks in `PerformanceEntryReporter::reportMark()`
Pull Request resolved: https://github.com/facebook/react-native/pull/52756
Test Plan: The existing testing infrastructure should cover these callsites i believe
Reviewed By: rubennorte
Differential Revision: D78731441
Pulled By: cortinico
fbshipit-source-id: e0de12c3c6f55e12eb454ea4b7081f3d6003126c
Summary:
`new_architecture.rb` script looks for `Info.plist` files in IOS directory, and adds RCTNewArchEnabled field to each one, except for those explicitly excluded. Framework files should remain unchanged, so I've extended the excluded_info_plist dict.
Modifying framework's Info.plist can break pod installation with errors like:
```
[!] An error occurred while processing the post-install hook of the Podfile.
invalid byte sequence in UTF-8
```
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[IOS] [FIXED] Fix overriding (xc)framework Info.plist files with RCTNewArchEnabled field
Pull Request resolved: https://github.com/facebook/react-native/pull/52520
Test Plan: Add any .framework or .xcframework to the iOS directory, install pods. If *.(xc)framework/Info.plist remains unchanged it works as intended.
Reviewed By: cortinico
Differential Revision: D78731439
Pulled By: cipolleschi
fbshipit-source-id: a04dfc0e282294e3e16d8292281f2c3369008551
Summary:
This module is currently unused, so we can clean it up.
## Changelog:
[INTERNAL] -
Pull Request resolved: https://github.com/facebook/react-native/pull/52705
Test Plan: CI
Reviewed By: cipolleschi
Differential Revision: D78555763
Pulled By: cortinico
fbshipit-source-id: 0a6152ab3d357cac0c6d7669f292680af7b87074
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52746
The config is needed for build, so I renamed it. In this way, the formatting of js code in react-native repo will be consistently controlled by the prettier config in the root. This change will make prettier v3 upgrade easier.
Changelog: [Internal]
Reviewed By: pieterv
Differential Revision: D78700564
fbshipit-source-id: 392ed490bf814870f285c8372ff68b454e228802
Summary:
There are symbolic link issues with ktfmt after building the rn-tester. Putting back this patch to address that issue.
## Changelog:
[INTERNAL] - Fix ktfmt symbolic links issues
Pull Request resolved: https://github.com/facebook/react-native/pull/52721
Test Plan:
1. Build the rn-tester:
```sh
yarn android
```
2. Unformat a file manually and then:
```sh
yarn lint-kotlin-check
yarn lint-kotlin
```
Reviewed By: cipolleschi
Differential Revision: D78647797
Pulled By: cortinico
fbshipit-source-id: b2f230741466be0a95c21a9b98f3d15b865c2b83
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52711
The ccache cache is not really working. That's because we don't have a way to
properly compute the cache.
I'm adding has `hashFiles` to collect all the C++ and CMake files that are used
by ccache to fix this.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D78560946
fbshipit-source-id: 8d521d01386b62d3cfbd485f8e6fcf5f66eba71b
Summary:
I've noticed that test_js (20) and test_js (24) are actually running on Node 22.
That's because the `yarn-install` action is invoking setup-node again with the default value (22).
This changes it. Also I'm cleaning up the workflows so that every `yarn-install` invocation is happening just after the `setup-node` invocation.
## Changelog:
[INTERNAL] -
Pull Request resolved: https://github.com/facebook/react-native/pull/52737
Test Plan: CI which will most likely be red for test_js (20) so will need a follow-up
Reviewed By: cipolleschi
Differential Revision: D78664671
Pulled By: cortinico
fbshipit-source-id: c73390930d1511d1bf0f2d4ea92e83f50b10247f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52197
This Diff enables E2E tests to run on every PR.
We estimated that, now that we removed JSC and the legacy arch, the cost of running E2E tests on each PR should not be that high.
## Changelog:
[Internal] - Run E2E tests on each PR
Reviewed By: cortinico
Differential Revision: D77148473
fbshipit-source-id: 68191ff81c197d4c4ff9d6e71a41b7253971ddfb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52729
The Modal view creation contains initial properties when using Props 2.0. This diff adds support for Modal view creations having initial properties by allowing the `updateProperties` fast path only if the dialog is already initialized.
Without the change, the fast path gets called before the dialog could be initialized which leads to throwing an exception when the dialog is being checked to see if it is initialized.
Changelog: [Internal]
Reviewed By: sammy-SC
Differential Revision: D78638902
fbshipit-source-id: 61ad007b82867fa8b35648e3d8c930ee0e86c80d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52704
Stack traces for console calls are passed to the debugger when they are relative to device. (e.g. 10.0.2.2 for Android emulator)
Changelog: [android][fixed] fix stack trace linkifying failing when using Android emulator and other situations where the device and debugger have different bundle urls
Reviewed By: motiz88
Differential Revision: D78553183
fbshipit-source-id: 91d7e7ccc99d12ec7d06f4201237ecf557a46c4f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52702
Quick pass over some of the main files in `jsinspector-modern` now that C++ lint warnings have become more prevalent / auto-fixable.
Changelog: [Internal]
Reviewed By: motiz88
Differential Revision: D78490415
fbshipit-source-id: 32debcf5f217e847d326498709d50f695902bb5c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52653
Changelog: [Internal]
This adds an example of Unit Testing a C++ Turbo Module with Google GTest and also adds necessary and useful utility classes for testings
This is GTEST / C++ version of the same tests added in https://github.com/facebook/react-native/pull/52477
Reviewed By: alanleedev
Differential Revision: D78250302
fbshipit-source-id: 278655779dd17550be9c579d84cc1f7b6e45230d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52719
This is really a nit. We don't need to list all the variants here,
we can instead use `allVariants()` which we also use for hermes-engine,
to publish every buildVariant from React Android.
Changelog:
[Internal] [Changed] -
Reviewed By: alanleedev
Differential Revision: D78561729
fbshipit-source-id: 35989051ce966ea07caf26a218eb43c1a2bcac2d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52714
If we also have prepared text layout enabled, this cache will fill up with the last 1000 TextInput AttributedString, which isn't very useful. Let's assume we want to get rid of this cache, when we have the prepared layout cache as well.
Changelog: [Internal]
Reviewed By: rshest
Differential Revision: D78534088
fbshipit-source-id: e9020ebfb7e1210f19e0b31f7423e7a9a90a89d1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52692
D77341994 added a global cache for Facsimile layouts, where we will reuse an existing `android.text.Layout`, and `Spannable`, if one already existed for a same AttributedString, under same layout constraints. An error here, is that we consider a layout reusable, even when shadow views are different, which means there may be different react tags in the underlying AttributedString.
This leaks into the layout itself, and means that if a layout is reused, we can hit test against a stale/incorrect react tag.
The solution to allow reuse here, is to avoid embedding react tag directly into the `android.text.Layout` structure. Instead, we replace references to react tags, with a fragment index, and embed the list of fragment indices in each PreparedLayout. We can hide this "cleverness" within the boundary of `TextLayoutManager`, such that an invalid `PreparedLayout` is never allowed to escape.
Changelog: [Internal]
Reviewed By: joevilches
Differential Revision: D78516079
fbshipit-source-id: 2d9fe9d80f60e6d7e7e40080a0817a08b51c3153
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52709
We want to make user for folks in OSS to try
`preventShadowTreeCommitExhaustionWithLocking`. Therefore I'm updating the OSS
release channel for this flag to experimental.
Changelog:
[Internal] [Changed] - Rollout `preventShadowTreeCommitExhaustionWithLocking` in experimental
Reviewed By: rubennorte
Differential Revision: D78558655
fbshipit-source-id: 02a9d216c7b2f8f7bdc1340213f82b70c5692dc7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52706
This just prepares the repo for the next branch cut.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D78558445
fbshipit-source-id: 2132d560dad447b3685874438387a519587f8554
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52648
This creates a `debugOptimized` build type for React Native Android, meaning that we can run C++ optimization on the debug build, while still having the debugger enabled. This is aimed at improving the developer experience for folks developing on low-end devices or emulators.
Users that intend to debug can still use the `debug` variant where the full debug symbols are shipped.
Changelog:
[ANDROID] [ADDED] - Create a debugOptimized buildType for Android
Reviewed By: cipolleschi
Differential Revision: D78425138
fbshipit-source-id: c1e9ea3608e7df10fb871a5584352f0747cf560b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52647
This removes the need to specify 2 Manifests for apps and we can just use the `main` manifes to toggle if `usesCleartextTraffic` should be enabled or not.
This will have to be replicated in the template repository.
Changelog:
[Android] [Added] - Add support to specify a single Manifest rather than 2 (main/debug) by using the `usesCleartextTraffic` manifest placeholder which is autoconfigured by RNGP.
Reviewed By: cipolleschi
Differential Revision: D78425139
fbshipit-source-id: 9173a014b387d5aed5f7087fa69b7bd49c220f2c
Summary:
This creates a `debugOptimized` build type for React Native Android, meaning that we can run C++ optimization on the debug build, while still having the debugger enabled. This is aimed at improving the developer experience for folks developing on low-end devices or emulators.
Users that intend to debug can still use the `debug` variant where the full debug symbols are shipped.
## Changelog:
[ANDROID] [ADDED] - Create a debugOptimized buildType for Android
Pull Request resolved: https://github.com/facebook/react-native/pull/52620
Test Plan:
Tested locally with RNTester by doing:
```
./gradlew installDebugOptimized
```
This is the output of the 3 generated .aar. The size difference is a proof that we're correctly stripping out the C++ debug symbols:
<img width="193" height="54" alt="Screenshot 2025-07-15 at 17 49 50" src="https://github.com/user-attachments/assets/584a0e8d-2d17-40d4-ac29-da09049d6554" />
<img width="235" height="51" alt="Screenshot 2025-07-15 at 17 49 39" src="https://github.com/user-attachments/assets/eda8f9e7-3509-4334-8c16-990e55caa04d" />
<img width="184" height="52" alt="Screenshot 2025-07-15 at 17 49 32" src="https://github.com/user-attachments/assets/a5c94385-bc00-4484-b43e-088ee039827f" />
Rollback Plan:
Reviewed By: cipolleschi
Differential Revision: D78351347
Pulled By: cortinico
fbshipit-source-id: 568a484ba8d2ee6e089cabc95451938e853fbc54
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52595
Changelog: [ANDROID][FIXED] Update font scale when recreating `RootView`
At the moment `enableFontScaleChangesUpdatingLayout` flag only works when the activity is configured to handle font scale changes by itself (`configChanges="fontScale"` in the manifest).
When that configuration is missing, the OS handles the font scale changes by recreating the activity, but in this case the path responsible for updating internally kept font size isn't executed.
This diff updates the RootView, so that the display metrics are also updated when it's created. Alternative approach would be to do that on the Activity, but that assumes usage of `ReactActivity`.
Reviewed By: NickGerleman
Differential Revision: D78323174
fbshipit-source-id: e48583091767497b5dfd4f2d938329530de4068d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52668
Changelog: [internal]
These methods have been available for months so no need to consider backwards compatibility with older binaries.
Reviewed By: huntie
Differential Revision: D78412932
fbshipit-source-id: 0f1d541c36c98a4cc8c847d1ee7a08a9d0f4b849
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52678
From partner feedback, there's still appetite to support Node 20.x for the next <1y of life. Lower min version to `20.19.4` (Jul 2025) and widen test matrix in CI.
Changelog:
[General][Breaking] - Our new minimum Node version is Node.js 20 (Overrides #51840)
Reviewed By: cortinico
Differential Revision: D78494491
fbshipit-source-id: c8d9dc6250cb11f8a12ca7e761b65f4a8dae9265
Summary:
In this diff, we migrated IntersectionObserver to tokens: D74262804.
So that we wouldn't have to store shadow nodes on the javascript side.
Storing shadow nodes lead to a memory leak in the past.
Changelog: [internal]
Reviewed By: rubennorte
Differential Revision: D78494075
fbshipit-source-id: 38923ca4b265de6ff81ea20e5649e0bd2e39afc9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52691
Unannotated array literals are unsound in Flow right now. This diff adds in annotations and makes a few things readonly, to reduce future errors.
Changelog: [Internal]
Reviewed By: marcoww6
Differential Revision: D78519638
fbshipit-source-id: d98a7668ecf97bcc87dcb3fad25ade736d885d9a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52686
Enables the `enableVirtualViewRenderState` feature flag by default.
Also, fixed classification for this and the `enableVirtualViewWindowFocusDetection` feature flags. (They were incorrect.)
Changelog:
[Internal]
Reviewed By: lunaleaps
Differential Revision: D78500846
fbshipit-source-id: 099adaa4ed0026c8bb7438df869564d76a999007
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52685
Cleans up the `scheduleAnimatedCleanupInMicrotask ` feature flag and deletes code paths that are now unreachable.
Changelog:
[Internal]
Reviewed By: mdvacca
Differential Revision: D78498600
fbshipit-source-id: 307562030373742e64968ae4c92d6bfbb48ddc71
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52684
Cleans up the `disableInteractionManager` feature flag and deletes code paths that are now unreachable.
Changelog:
[Internal]
Reviewed By: mdvacca
Differential Revision: D78498348
fbshipit-source-id: a3128c1e5ca9c5879080df54b7683a3c916cec13
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52683
Cleans up the `avoidStateUpdateInAnimatedPropsMemo` feature flag and deletes code paths that are now unreachable.
Changelog:
[Internal]
Reviewed By: mdvacca
Differential Revision: D78497862
fbshipit-source-id: 26406e713ca5b7b194159638a20dcfca877ba380
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52625
Changes `react-native/babel-preset` so that by default, `hermes-parser` is configured with `reactRuntimeTarget: "19"`. This changes the compiled output of Component Syntax to not use `forwardRef` when a `ref` prop is present.
Additionally, this adds a new preset option property, `hermesParserOptions`. This object allows users of `react-native/babel-preset` to supply overrides for any `hermes-parser` options.
Changelog:
[General][Changed] - Configures `react-native/babel-preset` to target React 19 by default, meaning Component Syntax will not compile to `forwardRef` calls when a `ref` prop is present.
[General][Added] - Added support to `react-native/babel-preset` for a `hermesParserOptions` option, that expects an object that enables overriding `hermes-parser` options.
Reviewed By: SamChou19815
Differential Revision: D78383269
fbshipit-source-id: 1e6b66b9bfbeaf8a06fdc39031cb6de7e921765f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52681
Changelog: [internal]
In the original change I made in D78418504 / https://github.com/facebook/react-native/pull/52645 I made 2 mistakes:
1. Used a lock that would try to re-lock on itself without it being recursive (which would cause a deadlock). I didn't see that because when testing I didn't hit the case where we'd exhaust the options.
2. The `attemps` variable wasn't incremented, so we never left the loop in case of exhaustion.
This propagates a flag to `tryCommit` to indicate we've already locked on the commitMutex_ so we don't need to lock again in that case and increases the counter, fixing the issue.
Reviewed By: cortinico
Differential Revision: D78497509
fbshipit-source-id: 546ccd0c84aed5416ce1aef47d79419b4fe06f66
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52680
Changelog: [internal]
Reverting to make the fix easier to pick. Will land again on top.
Original commit changeset: 91d7f5d88a90
Original Phabricator Diff: D78487202
Reviewed By: cortinico
Differential Revision: D78497511
fbshipit-source-id: 58379787786cadcbcbe354feb97bc400a24f9d58
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52679
Changelog: [internal]
Reverting to make the fix easier to pick. Will land again on top.
Original commit changeset: c18e967488de
Original Phabricator Diff: D78480136
Reviewed By: cortinico
Differential Revision: D78497510
fbshipit-source-id: 8037276cb70d27ff695c76cd9575b525568c4489
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52592
Changelog: [Internal] - Expose VirtualViewExperimental in JS, use in a test surface
Reviewed By: yungsters
Differential Revision: D78027899
fbshipit-source-id: d3d9808b8ba8e36c5fdb0c831c0855ed318d0a30
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52590
Changelog: [Internal] - Fix a couple of bugs with VirtualViewExperimental
1. `also` side-effect bug where we were accessing `scrollView` before it was assigned
2. Handling empty `rect`. Now, we don't add the virtualView until it has a non-empty rect layout
Reviewed By: yungsters
Differential Revision: D78287690
fbshipit-source-id: 1806b748a0117e51c7a201191396d79db3a8d205
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52673
We should be incrementing the `attempts` variable as otherwise this loop with never stop.
Created from CodeHub with https://fburl.com/edit-in-codehub
Changelog:
[Internal] -
Reviewed By: rubennorte
Differential Revision: D78487202
fbshipit-source-id: 91d7f5d88a90bdfa806195fd35897f2f51c1deb9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52633
Changelog: [internal]
Now that we have the correct type definition for `console.timeStamp` we can remove the unnecessary `$FlowFixMe` annotations we had to add to use the new arguments.
Reviewed By: hoxyq
Differential Revision: D78405312
fbshipit-source-id: 29378ee6fa5986e22d0dfdfb85b7e25375361dc9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52632
Changelog: [internal]
This improves the type definitions for methods in the global `console` object, most importantly:
- Removes use of `any`.
- Defines correct typing for `console.timeStamp`, including new parameters for the Chrome Extensibility API.
Reviewed By: hoxyq
Differential Revision: D78405314
fbshipit-source-id: 6f31cc3005ff708ef6aa155bcd150d53a845e66c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52631
Changelog: [internal]
Just a small improvement in the type definitions to serve as documentation for the expected arguments for custom tracks in RNDT.
Reviewed By: hoxyq
Differential Revision: D78405313
fbshipit-source-id: 75d250ea27f2e55e172aaf6e72399b85cecd43f4
Summary:
This PR fixes logging of rejections, which stopped working with the transition from using `LogBox` for warnings to directing users to use React Native Debugger, where warnings can be viewed in the `Console` tab.
Rejected promises before this PR used `LogBox.addLog` with the `level: warn` directly without `console.warn`, which notified users to open debugger to view a warning (after rejected promise) without actually printing any warnings to the console.
This PR uses `ExceptionsManager.handleException(error, false /* isFatal */);` for promise rejections that correctly raising an error to the console if needed.
### Rejected Promise in Chrome
Displaying the error as long as it's uncaught in the form:
`Uncaught (in promise) Error`
and if there's a message in that error:
`Uncaught (in promise) Error: ${message}`
once the error is handled, this error disappears:
{F1978806409}
This is done with `Runtime.exceptionThrown`, and `Runtime.exceptionRevoked`:
{F1979815326}
## Changelog:
[General][Breaking] unhandled promises are now handled by ExceptionsManager.handleException, instead of being swallowed as Logbox Warnings.
----
This is a breaking change because we changed the wording for these errors and because some systems (like Sentry) might start monitoring a new set of errors when this code is adopted.
Pull Request resolved: https://github.com/facebook/react-native/pull/51594
Test Plan:
Use `Promise.reject` and observe that the rejection is now shown symbolicated in LogBox and also printed in React Native Debugger Console.
```
<Button
title="Uncaught Promise Rejection"
onPress={() => {
const err = new Error('test error');
err.cause = new Error('cause');
const promise = Promise.resolve().then(() => {
throw err;
// also test with throwing a string / object:
// throw 'aa';
// throw {test: 'object'};
// return Promise.reject();
});
setTimeout(() => {
promise.catch(e => {
console.log('promise error caught', e);
});
}, 4000);
}}
/>
```
### Before
There's no indication whatsoever there's an uncaught promise.
### After
An error is logged:
Error-
{F1979749366}
Text-
{F1979749350}
Object-
{F1979749351}
Promise.reject() or undefined-
{F1979749826}
Reviewed By: hoxyq
Differential Revision: D75442651
Pulled By: vzaidman
fbshipit-source-id: bf6c56e643f03997f5a604b85c543aad62648a29
Summary:
When switching between debug/release we run a small script to make sure to copy the correct version of the RNDeps xcframework.
This script was missing a resolve function that fixed up some path issues that we do when installing in the podspec.
## Changelog:
[IOS] [FIXED] - Fixed issue with RNDeps release/debug switch failing
Pull Request resolved: https://github.com/facebook/react-native/pull/52664
Test Plan:
- Create new RN App
- Install pod with prebuilt deps
- Build (success)
- Switch to release
- Build (success)
Reviewed By: cortinico
Differential Revision: D78481590
Pulled By: cipolleschi
fbshipit-source-id: 2d02b0bc55e8aef6f3fafb4f7aa193c4cf00414e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52662
Changelog: [internal]
In the original change I made in D78418504 / https://github.com/facebook/react-native/pull/52645 I made a mistake and used a lock that would try to re-lock on itself without it being recursive (which would cause a deadlock). I didn't see that because when testing I didn't hit the case where we'd exhaust the options.
This propagates a flag to `tryCommit` to indicate we've already locked on the `commitMutex_` so we don't need to lock again in that case, fixing the issue.
Reviewed By: sammy-SC
Differential Revision: D78480136
fbshipit-source-id: c18e967488de14e73e6abf6f6e82c16bc42a12c6
Summary:
When switching between release/debug we're running a script to copy the correct xcframework. This script for the React-Core prebuilts was not part of the package.json file.
This caused the build to fail after trying to switch from debug -> release.
## Changelog:
[IOS] [FIXED] - Fixed missing script for resolving prebuilt xcframework when switching between release/debug
Pull Request resolved: https://github.com/facebook/react-native/pull/52663
Test Plan:
- Create new RN App
- Install pod with prebuilt deps and core
- Build (success)
- Switch to release
- Build (success)
Reviewed By: cortinico
Differential Revision: D78481302
Pulled By: cipolleschi
fbshipit-source-id: 1c7181e63219098ae140d77ff1cb2c0c9b9642e5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52661
The CI is currently red on main due to a missing dependency on `rrc_view`
from the recent TransformHelper.cpp addition.
This fixes it.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D78479785
fbshipit-source-id: 3d2b698d9ce46cf22c15ad43005f621526590145
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52660
The documentation for those methods mention that users should override them to
provide their own implementation.
However those vals are not `open` so users cannot really override them.
This fixes it.
See more context on https://github.com/facebook/react-native/pull/48800#issuecomment-3082665024
So this was practically a breaking change, that I'm attempting to mitigate.
Changelog:
[Android] [Fixed] - Make accessors inside HeadlessJsTaskService open again
Reviewed By: cipolleschi
Differential Revision: D78479162
fbshipit-source-id: eefc7332e2004198cd6bd64b60a66215f137ad4a
Summary:
Changelog: [Internal]
Adds a basic `--version` command line flag to the RNDT shell. This will be used in code paths (including tests) that need to verify that the shell is executable, but do not need to actually display a window or hand over control to the main shell instance.
bypass-github-export-checks
Reviewed By: huntie
Differential Revision: D78351936
fbshipit-source-id: e8982cfea6435da0ac9ea5f50d57c7642a8e2edb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52640
Not having `TransformHelper.cpp` included in CMake is causing the C++ code to fail compiling.
This diff fixes it.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi, javache
Differential Revision: D78414015
fbshipit-source-id: 4900427a86eb38bfec10e5e385296d89c73e9051
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52639
Add feature flag in the attempt to address the pile of tasks reporting the following error in panelapps:
> Error: android_crash:java.lang.AssertionError:com.facebook.react.runtime.ReactHostImpl.onHostPause
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D78339196
fbshipit-source-id: 9ef748e7ea85f179d8f8c418a978bd5c99f70601
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52612
changelog: [internal]
View Culling is purely performance optimisation but it must work correctly with accessibility features like VoiceOver and Switch Control.
In this diff, View Culling is lazily disabled whenever use of an accessibility feature is detected to make sure all views are present in the view hierarchy.
Reviewed By: NickGerleman, philIip
Differential Revision: D78336010
fbshipit-source-id: 7a201afc8e2ffd8b586d75ed4de2c03d7966750c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52604
changelog: [internal]
For Fabric View Culling to work correctly, content offset changes must be applied synchronously to avoid UI flicker.
The flicker happens because content offset update happens asynchronously and the OS paints scroll position update before React Native has a chance to adjust view hierarchy for the new scroll position.
Reviewed By: lenaic
Differential Revision: D78334322
fbshipit-source-id: dc1f1b3f9db9f9547e5a588dc184fcf21cca2727
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52603
Processing transforms is expensive in Java, as it requires bridging the entire ReadableNativeArray/Map. Instead, we can use the existing parser logic `resolveTransform` logic to perform this operation in C++.
Ideally, we actually re-use the existing parsed transform from Props, that could be something we revisit after Props 2.0.
As a follow-up, we should consider also moving the matrix decomposition logic from MatrixMathHelper here, and make that the only information we send back to Java.
Changelog: [Internal]
Reviewed By: NickGerleman
Differential Revision: D78298588
fbshipit-source-id: a698ac8587ccfb2be04665747082398ccdde9294
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52611
We compare the current transform (represented as a ReadableArray) with the incoming one to know whether to invalidate. This can be expensive as it requires to materialize the entire transform data structure over JNI. Instead, we can delegate this comparison to native code, which can compare the underlying folly::dynamic directly.
Changelog: [Internal]
Reviewed By: NickGerleman
Differential Revision: D78340288
fbshipit-source-id: f44a054e234694c316fb080fe2dbc2017780123a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52613
Changelog: [internal]
This adds first-class support for the `detail` field in `performance.mark` and `performance.measure`.
Now that we have access the JS entry in native, we can access the `detail` field to propagate it to DevTools (and use it to extract track names for Perfetto).
In order to avoid the performance overhead of always having to extract the `detail` field from the entry, this is done lazily only if we're actively profiling with DevTools or Perfetto.
Reviewed By: sbuggay
Differential Revision: D78340911
fbshipit-source-id: 383dd1cb6fcc8a04be9e65038503986f196e23c9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52614
Changelog: [internal]
We're adding first-class support for custom tracks, so we can remove the legacy mechanism to specify tracks with the "Tracks:" prefix in the event names.
Reviewed By: sbuggay
Differential Revision: D78340910
fbshipit-source-id: cbbadd519baf7bb50072cb97d8cd1ccc87a8a35c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52588
Changelog: [internal]
This adds tests to show how `performance.measure` isn't spec compliant when `end` and `duration` are used. This will be fixed in the following diff.
Reviewed By: javache
Differential Revision: D78193069
fbshipit-source-id: 30ba4874c4d2b4adb20608fc8d5ed61bfd6d92d8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52587
Changelog: [internal]
This just re-organizes the tests for the `Performance` API and `PerformanceObserver` as the previous organization didn't make much sense. Now it's a test for `PerformanceObserver` and another for the User Timing API.
Reviewed By: huntie
Differential Revision: D78193070
fbshipit-source-id: f15524bf07d2dc9edc155214279ce3af705cde67
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52621
In D77261958, I made a typo when implementing the cleanup of window focus detection in `onDetachedFromWindow`. This fixes it.
Changelog:
[Internal]
Reviewed By: mdvacca
Differential Revision: D78366506
fbshipit-source-id: 2a377cd7e8ec08f0c899dbd9cb3757bec580d30f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52583
Changelog: [Internal]
OSS build is broken atm as there is rn-tester dep in Fantom, needed for Meta only purposes.
Platformizing code to allow for Meta only implementation here and also for OSS only. Using this approach over ifdef.
Reviewed By: christophpurrer
Differential Revision: D78275698
fbshipit-source-id: c3234bb61b4591c0a5045fdb84aa0316f6382ecc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52607
changelog: [internal]
The current design of enableSynchronousStateUpdates is not correct and breaks <Modal /> on Android. let's delete it.
Reviewed By: philIip
Differential Revision: D78332201
fbshipit-source-id: 109909ebc706168372c565e8ff6e0c95d7565b10
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52617
The `test-release-local` script was failing to execute the npx rreact-native run-ios command for some issues with cocoapods.
That command tries to reinstall the pods so there might be some issues when testing.
As an alternative, we can avoid duplicated work by dropping the npx react-native command and, instead, build the app with xcodebuild and install it in the simulator with xcrun.
This is a backport of [this PR](https://github.com/facebook/react-native/pull/52609)
## Changelog:
[Internal] -
Reviewed By: vzaidman
Differential Revision: D78344397
fbshipit-source-id: cf2d9c032966a9be05670259e9532789829349f2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52618
In 0.81 we dropped the JSC configuration in CI. That means that the artifacts we generate in CI have a slightly different name. The current e2e script failed to run with the ci flag because it was still using the old artifacts name and it was not finding them.
This change adress the problem by:
- using the right artifact names
- removing the --hermes parameter which controlled the Hermes vs JSC scenario.
It is also a port to main of [this PR](https://github.com/facebook/react-native/pull/52606)
## Changelog:
[Internal] -
Reviewed By: cortinico, vzaidman
Differential Revision: D78344244
fbshipit-source-id: a658ba161b867bbad773fe093df9679ea92579b3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52584
The method `_initializeUIRefreshControl` creates a new instance of `UIRefreshControl` which has the default values for things like tint color.
However the props that we are keeping in the component are the `_props` before recycling. The actual state of the newly created UIRefreshControl is out of sync w.r.t the props the component thinks to have.
By introducing a `_recycled` state variable, we can force the first `updateProp` call to apply all the props to the newly created component.
## Changelog:
[iOS][Fixed] - Make sure that the recycled refresh control have the right props setup.
Reviewed By: sammy-SC
Differential Revision: D78278207
fbshipit-source-id: 4be20aa43f96eb87828b44a4deedd33a23d1d17f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52615
The refresh control has some issues that this change addresses.
- Issue with zIndex not propagating to RefreshControl.
- Issue when RefreshControl being mounted as refreshing.
- Issue with color props not applied
## Changelog:
[iOS][Fixed] - Correctly propagate props to RefreshControl
Reviewed By: sammy-SC
Differential Revision: D76668478
fbshipit-source-id: c3a5ff04b1b2654d25c9053973c5cff0002a804a
Summary:
We should use indent size 2 everywhere. While we were using 4 for some old reasons. This is causing editing of .kts files and BUCK files inside OSS Android Studio quite painful.
Changelog:
[Internal] -
Reviewed By: cipolleschi
Differential Revision: D78348532
fbshipit-source-id: 97e0e1f54fdc76c8a9cdc44e1f67684c9e97a08f
Summary:
This PR adds the basic `ktfmt` setup in OSS to lint Kotlin files before they're imported into the Meta codebase, making collaboration with external contributors smoother for Android related PRs.
I tried to put together certain rules that mimic the current code style and it seems to work well as I get no errors for properly formatted files but this still might need some input to have the correct configuration.
Added two scripts to the main package.json:
- To check the files format you can run: `yarn lint-kotlin-check`
- To apply formatting fixes, run: `yarn lint-kotlin`
## Changelog:
[INTERNAL] - Kotlin: Set up ktfmt in OSS
Pull Request resolved: https://github.com/facebook/react-native/pull/52064
Test Plan:
Unformat any random Kotlin file inside ReactAndroid and then run:
```sh
yarn lint-kotlin-check
yarn lint-kotlin
```
Reviewed By: cipolleschi
Differential Revision: D78272876
Pulled By: cortinico
fbshipit-source-id: 0cf6b976968dfc5c6c478e88d17eb21c18961a34
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52602
changelog: [internal]
fixes RTL issue in View Culling where scroll view offset was not correctly adjusted for RTL. The example failing case is described in a test.
Reviewed By: lenaic
Differential Revision: D78322759
fbshipit-source-id: d60d98aa45d4d9b576b133990f64ef941e6618e8
Summary:
for IOS and React native windows we can observe that the macro conversion is incorrect in ParagraphProps particularly for selectable prop.
current conversion
```
case ([]() constexpr -> RawPropsPropNameHash { return facebook::react::fnv1a("isSelectable"); }()): fromRawValue(context, value, isSelectable, defaults.isSelectable); return;
```
issue is that isSelectable is not the raw prop therefore JS to native flow for the prop is not correct .
(Note : this works for Android as ReactProp(name = "selectable"): https://github.com/facebook/react-native/blob/bbc1e121c71d14803d29a931f642bf8ea6ee2023/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.kt#L97-L100 )
fix
```
RAW_SET_PROP_SWITCH_CASE(isSelectable, selectable)
```
Current implementation selectable prop is not working for IOS and React native windows as the macro conversion is incorrect in ParagraphProps particularly for selectable prop.
## Changelog:
Updated ParagraphProps macro conversion for isSelectable , keeping it backward compatible.
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[IOS] [FIXED] - Fix selectable prop not working correctly
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/52599
Test Plan:
Tested on react native windows playground
Sample code
```
export default class Bootstrap extends React.Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.header}>Selectable vs Non-Selectable Text</Text>
<Text selectable={true} style={styles.text}>
✅ This text is selectable. You can long-press and copy it.
</Text>
<Text selectable={false} style={styles.text}>
❌ This text is not selectable. You cannot copy it.
</Text>
</View>
);
}
}
```
before fix debug output , native unaware of selectable prop values from JS
```
ReactNative ['Samples\text'] (info): ''[Text.js] NativeText _selectable:', true'
ReactNative ['Samples\text'] (info): ''[Text.js] NativeText _selectable:', false'
[ParagraphComponentView] updateProps - old isSelectable: 0, new isSelectable: 0
[ParagraphComponentView] DrawText - isSelectable: 0
[ParagraphComponentView] DrawText - selection logic would be DISABLED here.
[ParagraphComponentView] updateProps - old isSelectable: 0, new isSelectable: 0
[ParagraphComponentView] DrawText - isSelectable: 0
[ParagraphComponentView] DrawText - selection logic would be DISABLED here.
[ParagraphComponentView] updateProps - old isSelectable: 0, new isSelectable: 0
[ParagraphComponentView] DrawText - isSelectable: 0
[ParagraphComponentView] DrawText - selection logic would be DISABLED here.
```
after fix debug output , native picks up selectable prop values from JS correctly
```
ReactNative ['Samples\text'] (info): ''[Text.js] NativeText _selectable:', true'
ReactNative ['Samples\text'] (info): ''[Text.js] NativeText _selectable:', false'
[ParagraphComponentView] updateProps - old selectable: 0, new selectable: 0
[ParagraphComponentView] DrawText - selectable: 0
[ParagraphComponentView] DrawText - selection logic would be DISABLED here.
[ParagraphComponentView] updateProps - old selectable: 0, new selectable: 1
[ParagraphComponentView] DrawText - selectable: 1
[ParagraphComponentView] DrawText - selection logic would be enabled here.
[ParagraphComponentView] updateProps - old selectable: 0, new selectable: 0
[ParagraphComponentView] DrawText - selectable: 0
[ParagraphComponentView] DrawText - selection logic would be DISABLED here.
```
Reviewed By: rozele
Differential Revision: D78333906
Pulled By: javache
fbshipit-source-id: 4d2f9ea591e991b1aed126e9fed72fdfe1a49ce9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52598
Defining this as {50%, 50%} mean we do unnecessary work as part of every transform. Instead set it to undefined, which means we'll ignore it when determining the final transform.
Changelog: [Internal]
Reviewed By: sammy-SC
Differential Revision: D78298587
fbshipit-source-id: 9d3b7375fc3bd9ea04f0a6d7e314fbba0fba6949
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52601
Changelog: [internal]
Fixes a bug in Fantom when throwing a value that's not an instance of `Error` in a test.
Reviewed By: javache
Differential Revision: D78332756
fbshipit-source-id: 350479dcb7bcea399070c6851aca76a1d1cc2629
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52597
Add a Flow lib def for `memfs`, for use in internal and subsequently Metro tests, now that `metro-memory-fs` is deprecated.
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D78268713
fbshipit-source-id: f714000f2071f4bf45b4436cbd63fc6d74939f98
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52446
The logic for retrieving metrics from a placeholder character is kind of insane, and has been around since inline views were added built into TextView in Paper.
One of the workarounds, for old versions of Android on Samsung phones (no more info to bound the versions) causes incorrect behavior, at least in the case where we have RTL text in LTR layout.
Another, explicitly mentions `singleLine` with RTL para, a deprecated TextView prop, that doesn't apply to us here (and also could never apply to BoringLayout, since RTL chars are not boring).
We don't have these workarounds anywhere else (though we have some other workarounds for bidi crash in old Android), including other frameworks I could find.
Let's bias to cleaning this old code up.
Changelog:
[Android][Fixed] - Fix incorrect positioning of inline view at the end of string when RTL text in LTR container
Reviewed By: javache
Differential Revision: D77703906
fbshipit-source-id: f25a5e2f05100f0288f3889132b658cdabf26f22
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52574
Changelog: [Internal]
The main change here is to catch *all* exceptions in:
- loadScriptFromDevServer
- loadScriptFromBundlePath
so that we can make the `loadScript(...` method `noexcept`
Other methods which only call into `noexcept` methods have been marked with `noexcept` as well
Reviewed By: lenaic
Differential Revision: D78222989
fbshipit-source-id: 174ac2420e88c913662f857c875fef996959c564
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52582
Continues integration of `NetworkReporter` (jsinspector-modern) on Android, to enable the Network panel in React Native DevTools.
NOTE: As with iOS, all changes are gated behind the `enableNetworkEventReporting` and `fuseboxNetworkInspectionEnabled` feature flags.
**This diff**
Updates the Android inputs to `NetworkReporter` to support incremental string data HTTP responses (`Transfer-Encoding: chunked`).
Implemented:
- Incremental response case for `Network.getResponseBody` (fetch response previews).
- `Network.dataReceived` (incremental response update event).
This means that incremental responses, such as Metro bundle requests, can be displayed as previews in React Native DevTools.
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D77927896
fbshipit-source-id: 6eff2e7b94d3f784bbc33b1fecdc20242f98b39f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52487
Continues integration of `NetworkReporter` (jsinspector-modern) on Android, to enable the Network panel in React Native DevTools.
NOTE: As with iOS, all changes are gated behind the `enableNetworkEventReporting` and `fuseboxNetworkInspectionEnabled` feature flags.
**This diff**
Integrates `Network.storeRequestBody` on Android (CDP: [`Network.getResponseBody`](https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-getResponseBody) CDP event) to populate the "Preview" and "Response" tabs in the React Native DevTools Network panel.
This is integrated with `NetworkingModule.kt` to support synchronously received `text` or `blob` data types, with incremental response support added next in D77927896.
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D77799617
fbshipit-source-id: 495baebbb3b447d1ea86705c1680578eed796d78
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52566
This bumps the plugin we use to publish to Maven Central from 1.3.0 to 2.0.0
as it has better support for the latest Gradle feature.
We're not affected by the breaking changes so we should be good to go (nightlies will tell).
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D78161579
fbshipit-source-id: de5178b2cc17885636f17eabdb0eea4e5b1515dd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/51493
Changelog: [IOS][FIXED] Don't retain cached images in state after `RCTImageComponentView` gets recycled
Fixes https://github.com/facebook/react-native/issues/51198
Crosspost from the task comment:
From what I've been able to figure out, it seems like the image shadow nodes (keeping the loaded image in state) are being kept in memory by shadow node reference wrappers. It doesn't seem strictly like a memory leak - manually triggering garbage collection causes those nodes to be deallocated, but since Hermes isn't aware of the memory they are retaining, I think, it doesn't trigger it automatically.
This diff releases the image data when the observers are notified and adds a new (`Consumed`) status to signify that.
Reviewed By: sammy-SC
Differential Revision: D75137263
fbshipit-source-id: 97eda7e6d1ef5cd633c4a5a4c37babc5e08968fb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52545
Pull Request resolved: https://github.com/facebook/react-native/pull/51735
This diff refactors the ViewManagerInterfaces codegen to generate kotlin classes,
As a consequence of this change, there are some ViewManagerInterfaces that have changed their APIs
## Changelog: [Android][Breaking] - Migrate ViewManagerInterfaces to kotlin. Some types in code generated ViewManagerInterfaces might differ. e.g. this will start enforcing nullability in parameters of viewManagerInterface methods (e.g. String commands parameters are not nullable, view params are not nullable in any method, etc)
Reviewed By: cortinico
Differential Revision: D78118738
fbshipit-source-id: cdd9e660e55397bd0936efce1c5aaf90c2946b7a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52571
This diff fixes the following warning:
```
The corresponding parameter in the supertype 'XYZViewManager' is named 'value'. This may cause problems when calling this function with named arguments.
```
changelog: [Android][Changed] Changed method arguments names for Core ViewManagers to match the names of ViewManagerInterfaces
Reviewed By: cortinico
Differential Revision: D78170316
fbshipit-source-id: 29a2611eabb4e260bd6126aeca95516912ea4b4d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52485
Begins integrating `NetworkReporter` (jsinspector-modern) on Android, to enable the Network panel in React Native DevTools.
Since the larger lift of initial setup and the C++ subsystem has been done for iOS, this will be a lighter stack of changes solely setting up necessary integration points in the Android Networking stack.
NOTE: As with iOS, all changes are gated behind the `enableNetworkEventReporting` and `fuseboxNetworkInspectionEnabled` feature flags.
**This diff**
Initially integrates the `NetworkReporter` methods corresponding to the `Network.requestWillBeSent`, `Network.requestWillBeSentExtraInfo`, `Network.responseReceived`, `Network.loadingFinished` CDP events, which are sufficient for populating a minimally rendered Network request list.
- Create JNI `InspectorNetworkReporter` helper class (may also become the later public API for 3P reporting into the `Network` domain).
- Renames `ResponseUtil.kt` as `NetworkEventUtil.kt`.
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D71897099
fbshipit-source-id: 90972a5bfa34a095252b7e745e5f4afeb53b0ebe
Summary:
Bump Metro to 0.83.0.
This release contains some breaking changes for integrators, and a minimum Node.js version of 22.14.
Full release notes: https://github.com/facebook/metro/releases/tag/v0.83.0
Changelog: [General][Changed] Bump Metro to ^0.83.0
Test Plan:
Imported from GitHub, without a `Test Plan:` line.
Rollback Plan:
Differential Revision: D78171925
Pulled By: robhogan
fbshipit-source-id: 7ea5e04d285632a14dd71ba00da872d60f283840
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52572
We'd like to stop supporting `metro-memory-fs` - there are better alternatives out there.
This replaces the one usage of `metro-memory-fs` in `react-native` with `memfs`, and swaps the dependency.
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D78161921
fbshipit-source-id: 139233adac413a4f47a0d56d9e08ec841abaf47c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52543
Prefixing "eager" to the name makes it less confusing. React native already has main queue modules: they're just lazy.
Changelog: [Internal]
Reviewed By: lunaleaps
Differential Revision: D78109287
fbshipit-source-id: 5fa6095d2dd8fcf74fdda64e05483eb487bc8f56
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52544
Let's remove these runtime errors for now. We can re-introduce this later, if needed.
Main queue coordinator will make "unsafe execute on main queue sync" not deadlock.
Changelog: [Internal]
Reviewed By: lunaleaps
Differential Revision: D78109286
fbshipit-source-id: 7c3acc2e560e341889d8ede4665bc70fefc2f058
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52570
JSONArguments is a set of utility methods that are not part of the legacy architecture, removing the annotation.
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D78168536
fbshipit-source-id: 25fcc41441df6c71f9a96ec0ba82c42e8f6af80c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52564
Currently, `metro-babel-register` has a function as its default export, to which we've tagged on various properties.
This tidies that up to a more idiomatic object of named exports, with `register` as a new one of them.
This also serves to make it more compatible with automatic TypeScript generation.
This is semver breaking, but `metro-babel-register` has very little usage outside Meta projects so isn't expected to be disruptive.
Changelog: [Internal]
Metro changelog:
```
- **[Breaking]**: Move metro-babel-register's main function to a named export `register`
```
Reviewed By: huntie
Differential Revision: D78157559
fbshipit-source-id: c59c9820e9895007345561fed9ccec2273b925c8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52561
The removed code comment is pretty clear that this workaround is in place for a specific bug, which was closed in a Node.js 8.x minor: https://github.com/nodejs/node/issues/13391
A related issue descibed a problem that still existed in Node 10:
https://github.com/nodejs/node/issues/27363
Subsequent comments reporting problems with newer Node.js versions all seem to relate to mismatched configuration with load balancers, not directly relevant to Metro.
Reproducers for the original bugs no longer repro on new Node.js (tested with 22.14), so I think it's safe to conclude this is fixed.
Changelog: [Internal]
Reviewed By: huntie
Differential Revision: D78158427
fbshipit-source-id: 0be5dbc4334ac7b0bbccde44a840caac43deb4df
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52548
Changelog: [Internal]
While this does not cause real crashes as the code is already gated via
```
bool haveRHS = j < rhs.operations.size();
```
it still represents a bug in the logic
Reviewed By: rshest
Differential Revision: D78133364
fbshipit-source-id: 80efc97b5174e3d0d7efe33604255a96bc856e87
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52565
When we implemented caching in prebuilds for RN core for iOS, we were naïve in choosing the cache key. The current cache key does not consider the source code that is built and this can be problematic.
Imagine a contributor that changes a file in a React folder in their PR, but CI reuses a binary created from `main` and so everything will work well in CI even if the change contains an error.
This change globs over the header and implementation files in the React, ReactCommon and Libraries folder to ensure that we rebuild the code when iOS code changes.
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D78161427
fbshipit-source-id: e612b76232308835eb88c3776122bebd1316f751
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52560
Changelog: [internal]
This migrates the profiling logic for `XMLHttpRequest` from `performance.measure` to `console.timeStamp` with built-in support for tracks.
Reviewed By: hoxyq
Differential Revision: D78157407
fbshipit-source-id: 0ef060557a00e7973ef7f0478b26b81471d38226
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52542
Changelog: [internal]
This adds support to propagate performance entries logged to `console.timeStamp` to Perfetto, if enabled. It also modifies the Perfetto integration to support track groups, in addition to track names.
Reviewed By: hoxyq
Differential Revision: D78092596
fbshipit-source-id: 76b0fe2738d856fd75ee941de223d6a6a73d8e1c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52535
Those constructors are no longer necessary. They're deprecated + the class is internal so they're not breaking changes.
I'm just cleaning them up as they're not needed anymore.
Changelog:
[Internal] [Changed] - Remove deprecated constructors for TextInput *Event classes
Reviewed By: javache
Differential Revision: D78095748
fbshipit-source-id: 2dc6c750f8470a88918d8a69b68364f38251d79e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52562
This change use the prebuilds we build in CI i other iOS jobs to speed-up the iOS CI
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D78159367
fbshipit-source-id: 64486c99fdbc54487dbcff786209cacac304b9b7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52563
The test_ios_rntester_dynamic_frameworks is identical to the test_ios_rntester but for the framework parameter.
This change unifies the two, using a matrix to test all the configurations:
- Debug / Static Libraries
- Release / Static Libraries
- Debug / Dynamic Frameworks
- Release / Dynamic Frameworks
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D78159366
fbshipit-source-id: b321f295477fe3ae6e43c7518d47afb0714bddb8
Summary:
This change tries to use the prebuilds we build in CI i other iOS jobs to speed-up the iOS CI
bypass-github-export-checks
## Changelog:
[Internal] -
Pull Request resolved: https://github.com/facebook/react-native/pull/52531
Test Plan:
Build rntester using prebuilds:
```
# after downloading the prebuilds from CI and unzipping them
export HERMES_ENGINE_TARBALL_PATH=~/Downloads/hermes-ios-Debug.tar.gz
export RCT_USE_LOCAL_RN_DEP=~/Downloads/reactnative-dependencies-debug.tar.gz
export RCT_TESTONLY_RNCORE_TARBALL_PATH=~/Downloads/React.xcframework.tar.gz
USE_FRAMEWORKS=dynamic bundle exec pod install
open RNTesterPods.xcworkspace
```
And then build from Xcode.
Reviewed By: rshest
Differential Revision: D78158734
Pulled By: cipolleschi
fbshipit-source-id: 43cbb66bd44fa621292b69de0dadde5ed20c4574
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52549
Changelog: [Internal]
- The #includes are not used
- `enum class` is C++, (enum is C)
Reviewed By: rshest
Differential Revision: D78135339
fbshipit-source-id: 1a35301ea063ce17c195be7dc373132d342f111a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52556
Changelog: [internal]
This adds a new benchmark for `performance.measure` to measure the performance of calling it without arguments.
Reviewed By: hoxyq
Differential Revision: D78013563
fbshipit-source-id: 84e2151d9d91cfc2e85d310f42010483e7304648
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52557
Changelog: [internal]
`PerformanceEntry.detail` should be `null` if not defined, not undefined as it is currently. This fixes that.
Reviewed By: hoxyq
Differential Revision: D78013568
fbshipit-source-id: b22dfdd8d582594fc1e5199264e8af92c26bb0ea
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52558
Changelog: [internal]
Small refactors for `$ReadOnly`, move `getCurrentTimeStamp` to utils so it can be reused, etc.
Reviewed By: hoxyq
Differential Revision: D78013570
fbshipit-source-id: f73d119f22dd4dc9aaa5efef76a1156821ecd8de
Summary:
Resolves https://github.com/microsoft/react-native-windows/issues/14797
We were facing a type conversion error in the DynamicEventPayload::extractValue() method. The function signature declares a return type of std::optional<double>, but when handling INT64 values, but when handling `INT64` values, the code was directly returning `dynamic.asInt()` without proper type conversion
We faced the issue while integrating https://github.com/microsoft/react-native-windows/pull/14791
## Changelog:
[General][Fixed]
Pull Request resolved: https://github.com/facebook/react-native/pull/52525
Test Plan:
The fix involved wrapping the dynamic.asInt() call with static_cast<double>(), creating the corrected line: return static_cast<double>(dynamic.asInt())
Tested E2E in RNW
Reviewed By: andrewdacenko
Differential Revision: D78083842
Pulled By: rshest
fbshipit-source-id: 8dbedd67fa7c21e89b863d8b1bc7b9e0d7978b9f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52530
This PR fixes two issues with `display: contents` implementation:
1. When a node with `display: contents` set is a leaf, it won't be cloned after the initial tree is built. The added test case covers this scenario.
2. It was possible for the subtree of `display: contents` nodes not to be cloned during layout. I don't have a minimal reproduction for this one, unfortunately. It was discovered in the Expensify app: https://github.com/Expensify/App/issues/65268, along with a consistent reproduction. In that specific case, it seems to be heavily tied to `react-native-onyx`, which is a state management library.
Changelog: [GENERAL][FIXED] - Fixed nodes with `display: contents` set being cloned with the wrong owner
X-link: https://github.com/facebook/yoga/pull/1826
Reviewed By: adityasharat, NickGerleman
Differential Revision: D78084270
Pulled By: j-piasecki
fbshipit-source-id: eb81f6d7dcd1665974d07261ba693e2abea239bb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52532
Since we updated TypeScript in https://github.com/facebook/react-native/pull/51831, ESLint has printed a warning that `typescript/eslint` doesn't support our TS version.
This updates it to fix the warning.
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D77833826
fbshipit-source-id: 29a5179c4f223a8cc0ab2c8071f0a5efa09e5edc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52533
This method is deprecated in the JavaDoc but not correctly annotated as Deprecated, let's fix it.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi
Differential Revision: D78092468
fbshipit-source-id: 31e4cb958a51b20f5105a4bec3366d67402e5419
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52528
This was a breaking change that is currently breaking `react-native-safe-area-context` so we can't ship it as it is, especially because all the apps in OSS will be affected by this.
Changelog:
[General] [Changed] - Revert breaking change due to the removal of `ShadowNodeTraits::Trait::DirtyYogaNode`
Original commit changeset: 869e81f0ae00
Original Phabricator Diff: D75324251
Reviewed By: huntie
Differential Revision: D78085848
fbshipit-source-id: f7fcc5e33d59cc966a4ee88dfdbedca4f4c580e0
Summary:
This PR fixes the following build error while trying to build `react-native@0.81.0-rc.0` app with `react-native-screens@4.10.0` installed using react-native prebuilds (AAR) due to a missing `react/renderer/bridging/bridging.h` file in `prefab/modules/` inside `react-android-0.81.0-rc.0-debug.aar`.
```
In file included from /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/react-native-screens/android/src/main/cpp/NativeProxy.cpp:2:
In file included from /Users/tomekzaw/.gradle/caches/8.14.1/transforms/75e7f8f7b5ef763e687a16737daf01b6/transformed/react-android-0.81.0-rc.0-debug/prefab/modules/reactnative/include/react/fabric/Binding.h:12:
In file included from /Users/tomekzaw/.gradle/caches/8.14.1/transforms/75e7f8f7b5ef763e687a16737daf01b6/transformed/react-android-0.81.0-rc.0-debug/prefab/modules/reactnative/include/react/fabric/FabricUIManagerBinding.h:22:
/Users/tomekzaw/.gradle/caches/8.14.1/transforms/75e7f8f7b5ef763e687a16737daf01b6/transformed/react-android-0.81.0-rc.0-debug/prefab/modules/reactnative/include/react/renderer/uimanager/primitives.h:14:10: fatal error: 'react/renderer/bridging/bridging.h' file not found
14 | #include <react/renderer/bridging/bridging.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.
```
## Changelog:
[ANDROID] [CHANGED] - Expose `react_renderer_bridging` headers via prefab
Pull Request resolved: https://github.com/facebook/react-native/pull/52529
Reviewed By: cipolleschi
Differential Revision: D78092428
Pulled By: cortinico
fbshipit-source-id: de8208ae7545201f600c277a0c8907575c310c58
Summary:
Fixes #T228219721
This commit adds the debug/release switch script like we have for rn deps and hermes for react-core prebuilt:
- Added script: replace-rncore-version-js
- Inserted script into React-Core-prebuilt podspec
- Updated rncore.rb with correct filenames
bypass-github-export-checks
## Changelog:
[IOS] [ADDED] - add release/debug switch script for React-Core-prebuilt
Pull Request resolved: https://github.com/facebook/react-native/pull/52498
Test Plan: Run in RNTester and switch between release/debug
Reviewed By: rshest
Differential Revision: D78012917
Pulled By: cipolleschi
fbshipit-source-id: 71cad23cd41484a8253fc89d5dce8653649657a0
Summary:
Instead of returning when creating the list of header files from our podspecs, we now call `continue`. This is a bug that causes all subsequent globs in the header file list to be omitted after the first omitted glob.
bypass-github-export-checks
## Changelog:
[IOS] [FIXED] - Fixed premature return in header file generation from podspec globs
Pull Request resolved: https://github.com/facebook/react-native/pull/52490
Test Plan: Run prebuild scripts and verify that React-Fabric podspec headers are included in the resulting xcframework.
Reviewed By: mdvacca
Differential Revision: D78012399
Pulled By: cipolleschi
fbshipit-source-id: 2d334f4f7ff966ea4c778786a7056e13a255a708
Summary:
When using prebuilts the USE_FRAMEWORKS setting is not really relevant for the React Native code, since there will not be any source code to build frameworks for - and because we already have a framework for the code in React.XCFramework.
This commit adds a new command to the React Native podspecs like we did with the ReactNativeDependencies framework. The method is called `add_rncore_dependency` and it does nothing when building from source - but when linking with the React.XCFramework it explicitly adds linking with the framework.
In addition there are a few places in the ruby code where we check for the USE_FRAMEWORK value and changes some settings - where needed this commit will add a separate check to ensure we're building from source when making these changes.
bypass-github-export-checks
## Changelog:
[IOS] [ADDED] - Added support for using USE_FRAMEWORKS with prebuilt React Native Core
Pull Request resolved: https://github.com/facebook/react-native/pull/52489
Test Plan:
RNTester:
- Builds without USE_FRAMEWORKS as before with/without prebuilt
- Builds with USE_FRAMEWORKS=dynamic as before with source - and now also with prebuilt code.
- Same goes for the static variant.
Reviewed By: mdvacca
Differential Revision: D78012332
Pulled By: cipolleschi
fbshipit-source-id: ea942738ae52b9dceae48fb78a5026f04b7545b8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52519
Changelog: [Internal] - Experiment with intersection logic for VirtualViews in scrollView. Currently only on Android
### Changes in detail
`VirtualViewContainer` is held by the ScrollView and is lazily instantiated once a VirtualView tries to access.
Upon initial layout, a VirtualView will add itself to the container and report its updated `rect`. `VirtualViewContainer` holds a sorted list of VirtualViews and iterates through them to update mode
Reviewed By: yungsters
Differential Revision: D77313890
fbshipit-source-id: 30843143bf1828dcac9091479964e83934bf330c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52521
Progress is moving quickly on the cxxNativeAnimatedEnabled flag, which this animatedShouldSignalBatch was intended to de-risk. We no longer need this flag to de-risk issues with animated batch flushing.
## Changelog
[Internal]
Reviewed By: christophpurrer
Differential Revision: D78005971
fbshipit-source-id: 719f1dfb0594fbe90dd6f08dea21ad20665832df
Summary:
accessibilityRole is not getting the default value from sourceProps.
This change will fix https://github.com/facebook/react-native/issues/52396
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Fixed accessibilityRole parsing.
Pick one each for the category and type tags:
[GENERAL] [FIXED] - Added fix for setting the default value for accessibility props
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/52397
Test Plan: After this change accessibilityRole will get the default value from sourceProps.
Reviewed By: joevilches
Differential Revision: D77879025
Pulled By: NickGerleman
fbshipit-source-id: c2fd10dd34462e2cd01488b720ba91e4f1998000
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52474
1. Enables the feature flags for fragment refs on fbsource
2. Adds a test with Fantom for usage of `FragmentInstance#observeUsing` and `FragmentInstance#unobserveUsing`.
3. Exposes the `ReactFragmentInstance` type with the common methods that are used on native. We can override the DOM only methods in www libdefs.
Changelog: [Internal]
Reviewed By: rubennorte
Differential Revision: D74326262
fbshipit-source-id: e35ee45b23179ad3ba5527763567c9b04c127eff
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52514
As per title, this change add the `ENTERPRISE_REPOSITORY` env variable so that users can use their owm maven mirror to consume artifacts rather than the official url.
This is helpful as:
- we can reduce the traffic toward maven central
- companies can speed up their builds by relying on local/closer replicas
## Changelog:
[iOS][Added] - Add the `ENTERPRISE_REPOSITORY` env variable to cocopaods infra
Reviewed By: cortinico
Differential Revision: D78011424
fbshipit-source-id: 24b83b4866095d7fe3318362afc5075b99b146e7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52511
# Changelog: [Internal]
This is actually used in React for logging triggers, like Mount / Unmount / Reconnect / Disconnect.
Reviewed By: huntie
Differential Revision: D78008351
fbshipit-source-id: 9d39d45da499ce78172531c00cc7465b985c2646
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52494
Changelog: [Internal]
- Use C++ private namespace instead of C static methods
- Strongly type C++ TM functions via AsyncCallback
Reviewed By: javache
Differential Revision: D77978354
fbshipit-source-id: 2274b95cfc5b65392fc3c808bbdf54ec4ab3a37e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52512
The way Maven works is that the artifacts are uploaded and available way before the browsing UI will allow us to browse them.
By trying to download the `.pom` file instead of checking for the browsing website to be visible, we can shave some minutes during the release
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D78008635
fbshipit-source-id: 96516163628d6d25db385d996a11b4af78db764a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52513
We bumped the requirement for cocoapods to use Xcode 16.1 or greater.
This job was not update and therefore it failed when releasing 0.81.0-rc.0.
This change should fix it and it should be cherry picked in the release branch too.
By default, the macos executor in github actions are using Xcode 15.2
## Changelog
[Internal] -
Reviewed By: cortinico, fabriziocucci
Differential Revision: D78008316
fbshipit-source-id: 4d05233ca3b936cf128400030328124c453963ea
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52509
When building the CI Workflow to build React Native prebuilds, we were reading the react-native's version from the root package.json. This package.json is not updated by the release script, so the version is always 1000.
This makes the build process fail for stable releases.
With this change, we read the version from the right package.json file
## Changelog:
[Internal] - Read React Native version from the right package.json file
Reviewed By: cortinico
Differential Revision: D78007906
fbshipit-source-id: 35f868a1c203245fdcf518ee81957352e3ab1de7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52505
changelog: [internal]
there is a race condition where `startRenderCallbackIfNeeded` may be called from JS thread and the main thread at the same time, leading to a crash. To address this, this diff adds uses a boolean to make sure `startOnRenderCallback_` is only called once and `stopOnRenderCallback_` is only called after start was called.
Reviewed By: javache
Differential Revision: D77871230
fbshipit-source-id: 6d7fba596e7146adaff6f8dbe1f436ddd59950c6
Summary:
Resolves https://github.com/microsoft/react-native-windows/issues/14666
We faced this issue while integrating [0.79.0-nightly-20250220-41b597c73](https://github.com/microsoft/react-native-windows/pull/14662/files#top)
This warning is treated as error and should be fixed here as well.
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[GENERAL] [FIXED] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/52496
Test Plan:
Fixed error:
##[error]node_modules\react-native\ReactCommon\react\renderer\css\CSSHexColor.h(39,12): Error C4244: 'return': conversion from 'int' to 'uint8_t', possible loss of data
2>D:\a_work\1\s\node_modules\react-native\ReactCommon\react\renderer\css\CSSHexColor.h(39,12): error C4244: 'return': conversion from 'int' to 'uint8_t', possible loss of data [D:\a_work\1\s\vnext\Microsoft.ReactNative\Microsoft.ReactNative.vcxproj]
(compiling source file '../../node_modules/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp')
Tested E2E in RNW
Reviewed By: javache
Differential Revision: D78000818
Pulled By: rshest
fbshipit-source-id: 5caafc5e92540f722b009480f030276e526355af
Summary:
This is a backport of a fix we applied to the 0.81 branch.
Changelog:
[Internal] [Changed] -
bypass-github-export-checks
Reviewed By: vzaidman
Differential Revision: D78000573
fbshipit-source-id: 64a4e90632158c1f52c45f9fbc3452e848271e94
needs:[prepare_hermes_workspace, build_hermes_macos, prebuild_apple_dependencies]# prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs
needs:[prepare_hermes_workspace, build_hermes_macos, prebuild_apple_dependencies, prebuild_react_native_core]# prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs
env:
PROJECT_NAME:iOSTemplateProject
HERMES_WS_DIR:/tmp/hermes
@@ -565,7 +564,7 @@ jobs:
test_ios_helloworld:
runs-on:macos-14
needs:[prepare_hermes_workspace, build_hermes_macos, prebuild_apple_dependencies]# prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs
needs:[prepare_hermes_workspace, build_hermes_macos, prebuild_apple_dependencies, prebuild_react_native_core]# prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs
- **JSC:** Clean up RCTBridgeDelegate to remove shouldBridgeUseCustomJSC method ([c8f1506f13](https://github.com/facebook/react-native/commit/c8f1506f13310ffafe370273805684e696d72d50) by [@zhongwuzw](https://github.com/zhongwuzw))
- **Layout:** Remove no longer needed UISceneDelegate ([a033cf9d5e](https://github.com/facebook/react-native/commit/a033cf9d5e8ffbda8b6f86cf3ce152b4ccb73187) by [@okwasniewski](https://github.com/okwasniewski))
## v0.78.3
### Added
#### Android specific
- **Gradle:** RNGP - Add support for `exclusiveEnterpriseRepository` to specify an internal Maven mirror. ([6cb8dc37c7](https://github.com/facebook/react-native/commit/6cb8dc37c74995cba3f9f0a845919f305de53c3d) by [@cortinico](https://github.com/cortinico))
### Fixed
- **DevTools**: Temporarily disable eager evaluation and live expressions in the console tab ([07717b5275](https://github.com/facebook/react-native/commit/07717b5275d80cde7b2b4edbe032ab629127fbf0) by [@huntie](https://github.com/huntie))
- **InteropLayer:** Fixed adding child views to a native view using the interop layer ([d53a60dd23](https://github.com/facebook/react-native/commit/d53a60dd23c5df8afca058a867c50df8b61f62e2) by [@chrfalch](https://github.com/chrfalch))
- **Runtime:** Align timer IDs and timer function argument error handling with web standards. ([480a4642e5](https://github.com/facebook/react-native/commit/480a4642e5a644becf1c477d3d239f9b57efff3a) by [@kitten](https://github.com/kitten))
#### Android specific
- **StyleSheet:** Wrong `borderBottomEndRadius` on RTL ([68d6ada448](https://github.com/facebook/react-native/commit/68d6ada44893701b6006a6b1753131c7e880a30a) by [@riteshshukla04](https://github.com/riteshshukla04))
#### iOS specific
- **Codegen:** Skip codegen for selectively disabled libraries in react-native.config.js ([be8595b18a](https://github.com/facebook/react-native/commit/be8595b18a46635bf679d8e7473f2960c33530fa) by [@ismarbesic](https://github.com/ismarbesic))
- **Layout:** Layout direction changes are now honored on bundle reload ([36f29beac4](https://github.com/facebook/react-native/commit/36f29beac47259768612bf56e5d9acfa4b94ab1a) by [@chrsmys](https://github.com/chrsmys))
- **Runtime:** Re-enable enableFixForViewCommandRace feature flag ([ae59702f8e](https://github.com/facebook/react-native/commit/ae59702f8ee89e7bddec971e0a041744cb91e65c) by [@okwasniewski](https://github.com/okwasniewski))
- **Switch:** Fixed switches correctly reverting to controlled state ([aa8c072870](https://github.com/facebook/react-native/commit/aa8c072870f6f9740e567a0f455c0e500ff1400c) by [@javache](https://github.com/javache))
## v0.78.2
### Changed
@@ -497,6 +522,37 @@ ChuiHW))
- **Style:** Fixed `centerContent` losing taps and causing jitter ([fe7e97a2fd](https://github.com/facebook/react-native/commit/fe7e97a2fd272db0d9d9aa7d0561337a7c8e2c30) by [@gaearon](https://github.com/gaearon))
- **Xcode:** Properly escape paths in Xcode build script used when bundling an app. ([2fee13094b](https://github.com/facebook/react-native/commit/2fee13094b3d384c071978776fd8b7cff0b6530f) by [@kraenhansen](https://github.com/kraenhansen))
# Changelog
## v0.77.3
### Added
#### Android specific
- **Gradle**: RNGP - Add support for `exclusiveEnterpriseRepository` to specify an internal Maven mirror. ([6cb8dc37c7](https://github.com/facebook/react-native/commit/6cb8dc37c74995cba3f9f0a845919f305de53c3d) by [@cortinico](https://github.com/cortinico))
### Changed
- **Metro**: Bump Metro minimum version from `^0.81.3` to `^0.81.5`. ([dfa81638dd](https://github.com/facebook/react-native/commit/dfa81638dd17e46f70f10b25c4f4fd9f370a4b0e) by [@robhogan](https://github.com/robhogan))
### Fixed
- **Timers**: Align timer IDs and timer function argument error handling with web standards. ([480a4642e5](https://github.com/facebook/react-native/commit/480a4642e5a644becf1c477d3d239f9b57efff3a) by [@kitten](https://github.com/kitten))
#### Android specific
- **Modal**: Fix Modal first frame being rendered on top-left corner. ([b950fa2afb](https://github.com/facebook/react-native/commit/b950fa2afb20e2213ff6c733cb1c2465b90406ef) by [@cortinico](https://github.com/cortinico))
- **layout**: Fix wrong `borderBottomEndRadius` on RTL. ([68d6ada448](https://github.com/facebook/react-native/commit/68d6ada44893701b6006a6b1753131c7e880a30a) by [@riteshshukla04](https://github.com/riteshshukla04))
- **Modal**: Fix `FLAG_SECURE` not respected in Modal dialog. ([7e029b0dcf](https://github.com/facebook/react-native/commit/7e029b0dcf6d1a6455a8a6343457b70e353d0ff6) by [@mateoguzmana](https://github.com/mateoguzmana))
- **lifecylcle**: Legacy arch: fix #50274, Fast Refresh sometimes breaks after full refresh. ([c43952ac22](https://github.com/facebook/react-native/commit/c43952ac22b2356be3130c906329f61e246082cb) by [@robhogan](https://github.com/robhogan))
#### iOS specific
- **Interop Layer**: Fixed adding child views to a native view using the interop layer. ([d53a60dd23](https://github.com/facebook/react-native/commit/d53a60dd23c5df8afca058a867c50df8b61f62e2) by [@chrfalch](https://github.com/chrfalch))
- **Debugger**: Restore "Paused in debugger" overlay icon. ([f30c46efbd](https://github.com/facebook/react-native/commit/f30c46efbd964d367f678181589865a3faa931cd) by [@robhogan](https://github.com/robhogan))
- **layout**: Layout direction changes are now honored on bundle reload. ([36f29beac4](https://github.com/facebook/react-native/commit/36f29beac47259768612bf56e5d9acfa4b94ab1a) by [@chrsmys](https://github.com/chrsmys))
- **file reads**: Fix crash caused by `[RCTFileRequestHanlder invalidate]`. ([789ed7d5ad](https://github.com/facebook/react-native/commit/789ed7d5ad75ad4c20ecd1eb19d1fc18275fc500) by [@zhouzh1](https://github.com/zhouzh1))
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.