Commit Graph
11696 Commits
Author SHA1 Message Date
Samuel Susla 4b07edd6ea make instance variables const in RCTComponentViewDescriptor (#52902)
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
2025-07-29 09:19:16 -07:00
Nicola Corti 04ae15d99b Remove the com.facebook.react.bridge.JSONArguments class (#52901)
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
2025-07-29 08:54:10 -07:00
Riccardo Cipolleschi ec5a98b1f5 Sync React 19.1.1 into React Native (#52887)
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
2025-07-29 08:05:38 -07:00
Rubén Norte 3bff471738 Reduce flakiness of LongTasksAPI Fantom test (#52898)
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
2025-07-29 03:50:32 -07:00
Nicola Corti dde4d34a02 Add more tests for MatrixMathHelper (#52885)
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
2025-07-29 02:35:27 -07:00
Riccardo Cipolleschi dd00c9055a Fix react-native vulnerabilities in package.json (#52876)
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
2025-07-29 00:45:24 -07:00
Danny Su fb0e4ee6d1 Enable regenerator for Hermes dev mode transform profile (#52651)
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
2025-07-28 21:44:45 -07:00
Joe Vilches e17e3e3f38 Decouple ReactAndroidHWInputDeviceHelper from ReactRootView (#52891)
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
2025-07-28 19:31:02 -07:00
Aakash Patel b4a10f01fb Use == instead of EXPECT_EQ in testlib
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
2025-07-28 19:14:54 -07:00
David Vacca 8c1d191f1a EZ cleanup of unnecessary variable (#52892)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52892

 EZ cleanup of unnecessary variable

changelog: [internal] internal

Reviewed By: mlord93

Differential Revision: D79119092

fbshipit-source-id: 10b8675763dd203a832648ef3c99520dcdaa08da
2025-07-28 18:16:05 -07:00
Christoph Purrer daeb6e99ab Bring back ContextContainer::Shared (#52889)
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
2025-07-28 17:21:34 -07:00
Nicola Corti 48bf59c85e Use by lazy(LazyThreadSafetyMode.NONE) for RNTester (#52886)
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
2025-07-28 15:11:35 -07:00
Christoph Purrer 4718b35259 Bring back SharedImageManager = std::shared_ptr<ImageManager> alias to allow gradual API migration (#52888)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52888

This brings back the type erased in  https://github.com/facebook/react-native/pull/52747 to fix build breaks in consuming libraries as: `react-native-svg`

https://github.com/facebook/react-native/actions/runs/16560124464/job/46828273956?fbclid=IwY2xjawL0f1dleHRuA2FlbQIxMQBicmlkETFXVnFJUkhXMDNkSlJhY1c1AR6vMc_wUFxgfUN-JsCFMzl4L2V2JaSfX37gKIoUu8U9WGGmb0JBG1LNl0Ogjg_aem_aM4XSISUjhqE7S8_QA2KfA

Changelog: [General][Fixed] Bring back SharedImageManager = std::shared_ptr<ImageManager> alias

Reviewed By: cipolleschi

Differential Revision: D79097253

fbshipit-source-id: afec0b4dd706fac91ba296d2bf2a50fb27200597
2025-07-28 11:42:19 -07:00
Artur Kalach eb08f54594 Update RCTTextInputComponentView to recycle and properly clean the inputAccessoryView dependency. (#52825)
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-soda

https://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
2025-07-28 10:33:48 -07:00
Rubén Norte d2fa1cd900 Create basic benchmark for Animated (#52874)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52874

Changelog: [internal]

This creates a basic benchmark for the Animated API, which shows that **using Animated**, even without setting up animations, **makes rendering 3x slower** (similar when setting up a JS driven animation), but **6x slower when it sets up a native animation.**

Baseline:
### Animated (mode 🚀) ###

| (index) | Task name                                                                    | Latency average (ns)  | Latency median (ns)     | Throughput average (ops/s) | Throughput median (ops/s) | Samples |
| ------- | ---------------------------------------------------------------------------- | --------------------- | ----------------------- | -------------------------- | ------------------------- | ------- |
| 0       | 'render 1 views'                                                             | '85320.76 ± 1.27%'    | '82484.00'              | '11994 ± 0.09%'            | '12124'                   | 11721   |
| 1       | 'render 10 views'                                                            | '399462.22 ± 1.03%'   | '387702.00'             | '2552 ± 0.29%'             | '2579'                    | 2505    |
| 2       | 'render 100 views'                                                           | '3317795.78 ± 0.90%'  | '3232351.00 ± 70.00'    | '303 ± 0.74%'              | '309'                     | 302     |
| 3       | 'render 1 animated views (without no animations set up)'                     | '172534.31 ± 0.67%'   | '168423.00'             | '5874 ± 0.14%'             | '5937'                    | 5796    |
| 4       | 'render 10 animated views (without no animations set up)'                    | '1050582.87 ± 0.63%'  | '1031899.00 ± 20.00'    | '957 ± 0.37%'              | '969'                     | 952     |
| 5       | 'render 100 animated views (without no animations set up)'                   | '9255133.10 ± 1.06%'  | '8990333.00'            | '108 ± 0.94%'              | '111'                     | 109     |
| 6       | 'render 1 animated views (with a single animation set up - JS driven)'       | '203422.03 ± 0.50%'   | '198478.00'             | '4966 ± 0.17%'             | '5038'                    | 4916    |
| 7       | 'render 10 animated views (with a single animation set up - JS driven)'      | '1305600.39 ± 0.37%'  | '1288088.00 ± 15.00'    | '768 ± 0.30%'              | '776'                     | 766     |
| 8       | 'render 100 animated views (with a single animation set up - JS driven)'     | '12084658.14 ± 1.51%' | '11854181.00 ± 8493.00' | '83 ± 1.27%'               | '84'                      | 84      |
| 9       | 'render 1 animated views (with a single animation set up - native driven)'   | '313494.69 ± 0.32%'   | '308673.00'             | '3206 ± 0.19%'             | '3240'                    | 3190    |
| 10      | 'render 10 animated views (with a single animation set up - native driven)'  | '2223507.22 ± 0.50%'  | '2184839.00 ± 70.00'    | '451 ± 0.41%'              | '458'                     | 450     |
| 11      | 'render 100 animated views (with a single animation set up - native driven)' | '21352575.02 ± 0.71%' | '21239136.00 ± 2824.00' | '47 ± 0.69%'               | '47'                      | 64      |

Reviewed By: christophpurrer

Differential Revision: D79085920

fbshipit-source-id: 1dc13208da49cc325995f3455eaf86c4eb1e4d47
2025-07-28 10:02:25 -07:00
Zeya Peng 6e4d23ded2 Allow setting blockNativeResponder on Pressable (#52819)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52819

## Changelog:

[General] [Added] - Allow setting blockNativeResponder on Pressable

To expose the same prop on Pressability https://github.com/facebook/react-native/blob/b2d9f5f28045fd89bba2dca41274c7cd7abe2ecc/packages/react-native/Libraries/Pressability/Pressability.js#L137

Reviewed By: christophpurrer

Differential Revision: D78896178

fbshipit-source-id: 36637842ac15c54de325975d416efce1448e8ab7
2025-07-28 08:34:04 -07:00
Ruslan Lesiutin 253249611c Extract serializers for ProfileChunk (#52870)
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
2025-07-28 07:12:17 -07:00
Ruslan Lesiutin 7488097872 Extract TraceEvent serialization logic (#52869)
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
2025-07-28 07:12:17 -07:00
Ruslan Lesiutin 75d6cb1138 Avoid copies when dispatching TraceEvent chunks (#52868)
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
2025-07-28 07:12:17 -07:00
Ruslan Lesiutin 3cf11a3113 Flatten struct (#52867)
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
2025-07-28 07:12:17 -07:00
Ruslan Lesiutin 4023800b39 Flatten Sample and Profile structs (#52866)
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
2025-07-28 07:12:17 -07:00
Ruslan Lesiutin 7d17a3f61f Flatten SampleCallStackFrame and use designated serializers (#52865)
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
2025-07-28 07:12:17 -07:00
Ruslan Shestopalyuk 0c06ccc78f Add benchmark Fantom test for Image component (#52871)
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
2025-07-28 06:49:32 -07:00
Sam Zhou 869a976a5d Bump to prettier v3 across xplat (#52844)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52844

Changelog: [Internal]

Reviewed By: pieterv

Differential Revision: D78787920

fbshipit-source-id: fc2582001ee6775f53b452dd3659e37521ea6387
2025-07-27 18:50:47 -07:00
Nick Lefever 7fe3b2c902 Add dataDetectorType paragraph prop (#52848)
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
2025-07-27 17:20:44 -07:00
Nick Lefever 94d2e0a39b Add selectionColor paragraph prop (#52847)
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
2025-07-27 17:20:44 -07:00
Nick Lefever 5e80759994 Add disabled paragraph prop (#52846)
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
2025-07-27 17:20:44 -07:00
Nick Lefever d390f3b847 Use host platform specific text props (#52845)
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
2025-07-27 17:20:44 -07:00
Ruslan Shestopalyuk df3f0967ba Always avoid setting default props on View component (remove reduceDefaultPropsInView feature flag) (#52837)
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
2025-07-26 12:49:40 -07:00
Sam Zhou 01eaa6db97 Mock prettier import through actual require to prepare for prettier v3 (#52843)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52843

Changelog: [Internal]

Reviewed By: pieterv

Differential Revision: D78993226

fbshipit-source-id: 03f43c61fe9e6edaf38f895daf4f0c146df931b8
2025-07-25 13:52:59 -07:00
Andrew Datsenko 627136ee76 Add basic steps in CI (#52225)
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
2025-07-25 13:46:35 -07:00
Marco Wang d041e8b7e0 Pre-suppression errors for functionT in xplat js (#52820)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/52820

Reviewed By: SamChou19815

Differential Revision: D78941100

fbshipit-source-id: 66d462670471212d23e8682bd5bf1ebd79ef4582
2025-07-25 13:46:08 -07:00
Zeya Peng 8e2b33f979 keep track of last direct manipulation props (#52842)
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
2025-07-25 13:03:59 -07:00
Sam Zhou f47da61e51 Bump hermes-parser related packages across fbsource (#52841)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52841

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D78949440

fbshipit-source-id: 5c5015f602b9fe591aa68f179163bd37dfb0dcff
2025-07-25 10:46:51 -07:00
Alex Hunt a3e99264a2 Introduce V2 Perf Monitor feature flags (#52809)
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
2025-07-25 10:29:13 -07:00
Christoph Purrer c7c8ce0cad Update TurboModuleTestFixture to handle Promise types (#52801)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52801

Changelog: [Internal]

This adds utility functions and sample test cases to verify AsyncPromises in GTests

Reviewed By: lenaic

Differential Revision: D78871865

fbshipit-source-id: 41a7bebee94f40ec2d1d84b3ceae561dc503b421
2025-07-25 09:56:37 -07:00
Ruslan Shestopalyuk 6d52cf5662 Create Fantom benchmark test for Text component (#52836)
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
2025-07-25 08:53:45 -07:00
Ruslan Shestopalyuk 012b78c0a5 Make View benchmark test use 'testWithArg' API (#52832)
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
2025-07-25 08:53:45 -07:00
Moti Zilberman 3271e57c75 Handle Runtime.addBinding and Runtime.removeBinding before a RuntimeAgent is present (#52813)
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
2025-07-25 07:45:57 -07:00
Samuel Susla dbdf39a8fe fix crash when view with event driven animation is unmounted (#52807)
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
2025-07-25 07:37:16 -07:00
Samuel Susla 0d13474161 provide option to fabric commits in C++ Animated (#52834)
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
2025-07-25 07:27:39 -07:00
Christoph Purrer 2c683c5787 Apply clang-tidy setting; RN Android (#52774)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52774

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D78634966

fbshipit-source-id: daee3ed21b6f2229049e6a09e2b9c48dfb7e0264
2025-07-24 17:50:27 -07:00
Alexey Medvedev 8ed2cee80e Make yoga/Yoga.h an umbrell header (#52817)
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
2025-07-24 16:51:13 -07:00
Christoph Purrer 546e27684e Apply clang-tidy setting: jsinspectormodern (#52741)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52741

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D78634934

fbshipit-source-id: 03c4c8f5287452fb19fdce69e93686a04525eba5
2025-07-24 16:33:32 -07:00
Christoph Purrer 2d220624c7 Apply clang-tidy setting: react/nativemodule (#52740)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52740

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D78634926

fbshipit-source-id: f2218a3ac9b60550e0b71b8533a1fd5062f1d610
2025-07-24 14:50:54 -07:00
filip131311 5ef41068ed fix: View component does not have a displayName (#52688)
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
2025-07-24 14:30:52 -07:00
Moti Zilberman 3a833d3f2f Move all Tracing method handling to TracingAgent (#52814)
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
2025-07-24 13:24:12 -07:00
Rob Hogan 840fd6c83f Bump Metro to ^0.83.1, lower minimum Node.js version to 20.19
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
2025-07-24 12:10:18 -07:00
Moti Zilberman 25293d82e7 Refactor HostAgent control flow (#52815)
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
2025-07-24 11:58:11 -07:00
Moti Zilberman 81f3be15b4 Fix test build failures and ASAN violation (#52812)
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
2025-07-24 11:58:11 -07:00