Commit Graph

12270 Commits

Author SHA1 Message Date
Jakub Piasecki 6ecd9a43f1 Fix touch events not being dispatched to ScrollView's children when they overflow content container (#49855)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49855

Changelog: [IOS][FIXED] - Fixed touch events not being dispatched to ScrollView's children when they overflow the content container

Closes https://github.com/facebook/react-native/issues/47740.

Changes the ScrollView's container view to be `RCTViewComponentView` instead of `UIView` and sets custom layout metrics to it in a way that it will propagate touch events to all children, even if they overflow its bounds.

Reviewed By: sammy-SC

Differential Revision: D70619894

fbshipit-source-id: 348a1a369489d5208d6037c8d76b223c4ab2d5f7
2025-03-12 03:50:07 -07:00
Joe Vilches 0ade23d34f accessibleElements impl on iOS (#49582)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49582

TSIA, this is a fairly straightforward implementation since iOS likes the shape the data is already in. Note I form a stacking context since I need the native view that has `accessibilityElements` to actually be an ancestor of everything under it

Note I am not exposing anything yet on the JS side, since we need to do Android also

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D69625269

fbshipit-source-id: 836f1bb631646408a5726f126be61c0ff6afe1d0
2025-03-11 20:20:16 -07:00
Nick Gerleman 99f962627f Fix New Arch handling of inline views when text truncated (#49960)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49960

Fixes  https://github.com/facebook/react-native/issues/49106

RN legacy arch, and web, will clip inline content which appears after elipsized text. This is the correct behavior, compared to new arch, which will put it in a random place depending on the platform.

`line-clamp`: https://jsfiddle.net/7xgdke1b/
`text-overflow`: https://jsfiddle.net/7xgdke1b/2/

Fabric renderer does not, funnily enough, having an `isClipped` field on `TextMeasurement::Attachment` that is never used.

This change propagates state for whether an attachment is beyond elipsized area to this measurement, then when we see it, we set empty layout results with `DisplayType::None` so that we don't create native views. We don't layout child views either, but this seems to work out okay, even when removing and re-adding `numberOfLines`.

Changelog:
[General][Fixed] - Fix New Arch handling of inline views when text truncated

Reviewed By: mdvacca

Differential Revision: D70922174

fbshipit-source-id: 8c1f4aadbf53ff64ce55b44d6c7953d9b2e40bc5
2025-03-11 18:03:56 -07:00
Jorge Cabiedes Acosta c068c599c6 Fix keyboard navigation for FlatList with removeClippedSubviews enabled (#49543)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49543

When using `ReactScrollView` or `ReactHorizontalScrollView` Views with `removeClippedSubviews` keyboard navigation didn't work.

This is because keyboard navigation relies on Android's View hierarchy to find the next focusable element. With `removeClippedSubviews` the next View might've been removed from the hierarchy.

With this change we delegate the job of figuring out the next focusable element to the Shadow Tree, which will always contain layout information of the next element of the ScrollView.

Changelog: [Android][Fixed] - Fix keyboard navigation on lists with `removeClippedSubviews` enabled

Reviewed By: joevilches

Differential Revision: D69618406

fbshipit-source-id: 1df7f90066dfc685e74a89b29222937777714b87
2025-03-11 17:08:51 -07:00
Jorge Cabiedes Acosta 81405b450c Prevent the currently focused View from getting clipped (#49961)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49961

As preparation for fixing focus on FlatList we need to prevent the currently focused view from getting clipped. This is because in Android, if the currently focused view gets clipped before transferring focus we crash.

Changelog: [Android][Changed] - Prevent currently focused child from getting clipped when `removeClippedSubviews` is enabled

Reviewed By: NickGerleman

Differential Revision: D70994348

fbshipit-source-id: 8c68eeebd7df8e7d8f788e50a3bbe46b0335ace3
2025-03-11 17:08:51 -07:00
Pieter De Baets ade41c851b Make missing parent view state in updateLayout a soft error (#49951)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49951

We previously fixed Differentiator generating an incorrect parentTag (https://github.com/facebook/react-native/pull/48055), but this can lead to crashes in Android UI due to reordering that happens in the Android mounting layer. While we have an experiment to disable this reordering (https://github.com/facebook/react-native/pull/46702) this currently has a negative performance impact which needs to be addressed.

As a mitigation, we can make the lookup of parentTag's ViewManager state nullable. We only require this to support `needsCustomLayoutForChildren`, which is not commonly used, and seems acceptable to drop in this scenario.

Changelog: [Android][Changed] Do not crash when parent view state can't be found

Reviewed By: NickGerleman

Differential Revision: D70966621

fbshipit-source-id: 33d0b6a90860788a4c9a8c6cea36c2c72c1392e1
2025-03-11 14:11:15 -07:00
Nick Lefever 1482dd9e99 Add assert for recycled views with parent (#49937)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49937

Adding an assert for recycled views still attached to their parent, which would lead to an exception when the view would be added to a new parent.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D70922503

fbshipit-source-id: 7d4daf427306203d603c31999ab138b3aee08e83
2025-03-11 12:42:46 -07:00
Pieter De Baets 54e8bd44bd Suppress deprecation error in ProgressResponseBody (#49954)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49954

We have a different version of OkHttp internally and in OSS so we need to suppress these for now.

Changelog: [Internal]

Reviewed By: Abbondanzo

Differential Revision: D70975145

fbshipit-source-id: cd2a3ab5cdc52f25c78cb608e917fa3ca378e4f1
2025-03-11 12:31:28 -07:00
Samuel Susla cf39e6164c delete feature flag excludeYogaFromRawProps (#49817)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49817

changelog: [internal]

Remove feature flag excludeYogaFromRawProps. It did not yield any performance wins and the code to support the feature is spread across multiple classes. Removal simplifies complexity.

Reviewed By: javache

Differential Revision: D70389071

fbshipit-source-id: 21751f56aec8de501ff1e1efafda035069d8ef48
2025-03-11 09:10:22 -07:00
Mateo Guzmán ff84ae9188 Migrate OpacityAnimation to Kotlin (#49822)
Summary:
Migrate com.facebook.react.uimanager.layoutanimation.OpacityAnimation to Kotlin.

I moved out `OpacityAnimationListener` as well in this PR to separate concerns and align more with the codebase.

## Changelog:

[INTERNAL] - Migrate com.facebook.react.uimanager.layoutanimation.OpacityAnimation to Kotlin

Pull Request resolved: https://github.com/facebook/react-native/pull/49822

Test Plan:
```bash
yarn test-android
yarn android
```

Reviewed By: javache

Differential Revision: D70588884

Pulled By: alanleedev

fbshipit-source-id: 1b70f5e5facd5f47b828090e7c63a218229000cb
2025-03-11 08:40:10 -07:00
Mateo Guzmán bf7a0e5798 Migrate ProgressResponseBody to Kotlin (#49752)
Summary:
Migrate com.facebook.react.modules.network.ProgressResponseBody to Kotlin.

## Changelog:

[INTERNAL] - Migrate com.facebook.react.modules.network.ProgressResponseBody to Kotlin

Pull Request resolved: https://github.com/facebook/react-native/pull/49752

Test Plan:
```bash
yarn test-android
yarn android
```

Reviewed By: javache

Differential Revision: D70592532

Pulled By: alanleedev

fbshipit-source-id: 2680951a3b5290314d0632eb55b69c9bcf44b96a
2025-03-11 08:28:25 -07:00
Dawid Bartczak c6a075bcc7 Fix missing type for login-password alert prompt (#49757)
Summary:
When using the `login-password` prompt type, there is a TypeScript type mismatch issue. The `callbackOrButtons` parameter returns an object with `{login: string, password: string}` structure, but this type variation is not properly included in the **AlertType** type definition. This causes TypeScript to show type errors when using callback functions that expect credentials in the format `(credentials: {login: string, password: string}) => void`.

## Changelog:
- [General] [Fixed] Add missing type variation `{login: string, password: string}` to **AlertType** type definition to properly support `login-password` prompt callbacks

Pull Request resolved: https://github.com/facebook/react-native/pull/49757

Test Plan: This change is purely type-related and doesn't affect runtime behavior.

Reviewed By: NickGerleman

Differential Revision: D70797036

Pulled By: alanleedev

fbshipit-source-id: 8e27a39f0c8f49083730c683b41b69173715bd68
2025-03-11 08:10:11 -07:00
zhongwuzw 8d7aca30e7 Fixes TextInput crashes when any text is entered while running as iOS app on apple silicon mac (#49320)
Summary:
Fixes https://github.com/facebook/react-native/issues/48544. We can make `RCTWeakEventEmitterWrapper` to subclass `NSDictionary` that Textinput supports encode it.

System allowed classes are:
```
Allowed classes are:
 {(
    "'NSMorphology' (0x20088b6d8) [/System/Library/Frameworks/Foundation.framework]",
    "'NSString' (0x2003f4738) [/System/Library/Frameworks/Foundation.framework]",
    "'NSInflectionRule' (0x20088d348) [/System/Library/Frameworks/Foundation.framework]",
    "'UIColor' (0x2006c0520) [/System/iOSSupport/System/Library/PrivateFrameworks/UIKitCore.framework]",
    "'NSTextAttachment' (0x20042af98) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSShadow' (0x20042ae30) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSTextEncapsulation' (0x200897e50) [/System/Library/Frameworks/CoreText.framework]",
    "'NSTextAlternatives' (0x20042af70) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSFont' (0x20042a9f8) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSAttributedString' (0x2003f3838) [/System/Library/Frameworks/Foundation.framework]",
    "'NSData' (0x2003ed528) [/System/Library/Frameworks/CoreFoundation.framework]",
    "'NSURL' (0x2003ed938) [/System/Library/Frameworks/CoreFoundation.framework]",
    "'NSAdaptiveImageGlyph' (0x2008ae538) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSNumber' (0x2003f4238) [/System/Library/Frameworks/Foundation.framework]",
    "'NSParagraphStyle' (0x20042ad40) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSDictionary' (0x2003ed5a0) [/System/Library/Frameworks/CoreFoundation.framework]",
    "'UIFont' (0x20042c668) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSColor' (0x200412350) [/System/Library/Frameworks/AppKit.framework]",
    "'NSGlyphInfo' (0x20042aa98) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "'NSArray' (0x2003ed460) [/System/Library/Frameworks/CoreFoundation.framework]",
    "'NSPresentationIntent' (0x20088da28) [/System/Library/Frameworks/Foundation.framework]"
)}
```

## Changelog:

[IOS] [FIXED] -  Fixes TextInput crashes when any text is entered while running as iOS app on apple silicon mac

Pull Request resolved: https://github.com/facebook/react-native/pull/49320

Test Plan:
Run RNTester on apple silicon mac, and entered some text in textinput, no crash occured. Also, verified that the caret was not jumping around, thus preserving the original fix.

https://github.com/user-attachments/assets/6304f6e7-c663-4351-ace8-ab1842ee545f

Reviewed By: javache

Differential Revision: D69981500

Pulled By: cipolleschi

fbshipit-source-id: 2af9b280e42f621446efda9b101af50525e8fef7
2025-03-11 06:06:55 -07:00
Vojtech Novak 0cc1ac18cf fix(ios): enable use of multiple RCTAppDependencyProvider instances (#49889)
Summary:
instantiating multiple `RCTAppDependencyProvider` instances creates problems with their internal state, because the internal fields such as [`_thirdPartyFabricComponents` are populated once](https://github.com/facebook/react-native/blob/f5feb73022f9340583ebcf576eaedd3ca5677e1a/packages/react-native/scripts/codegen/templates/RCTAppDependencyProviderMM.template#L60) for the entire app (see [`dispatch_once`](https://developer.apple.com/documentation/dispatch/1447169-dispatch_once)).

That means when you create 2 instances, and call `thirdPartyFabricComponents` on them, the first instance will respond with a dictionary and the second with `nil`. This is unexpected.

## Changelog:

[IOS] [FIXED] - enable use of multiple `RCTAppDependencyProvider` instances

Pull Request resolved: https://github.com/facebook/react-native/pull/49889

Test Plan:
`rnTester` - the templates are used by codegen. Running `pod install`, the files were generated correctly from the `.template` files.

I was able to verify that accessing `thirdPartyFabricComponents` on multiple instances of `RCTAppDependencyProvider` returns valid result.

<details>
<summary>screenshot</summary>

<img width="789" alt="Screenshot 2025-03-07 at 15 11 22" src="https://github.com/user-attachments/assets/9270ba90-ae7f-491a-a53a-f7e1f4606438" />

</details>

Reviewed By: javache

Differential Revision: D70892779

Pulled By: cipolleschi

fbshipit-source-id: 27c7c8fd9982b6427daec02e0de59b08ad20bfad
2025-03-11 05:57:40 -07:00
Riccardo Cipolleschi 3b3d502ccf Automate setting the RCTNewArchEnabled flag (#49927)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49927

This change automates updating App's Info.plist with the new `RCTNewArchEnabled` boolean entry. The value depends on how the pod install is set up. In this way, we maintain the previous UX to enable/disable the New Arch.

## Context
The RCT_NEW_ARCH_ENABLE flag is a compile time flag we used for almost two years to configure the iOS apps and to determine whether the app should build with the New Arch or not.

However, given that we are looking into prebuilding React Native, we have to get rid of all the compilation flags, because they would require us to prebuild a combinatorial number of artifacts for react native. For example:

- New Arch / Hermes
- Old Arch / Hermes
- New Arch / JSC
- Old Arch / JSC
- ...

## Backward compatibility
We are going to keep adding the RCT_NEW_ARCH_ENABLED flag in all the dependencies, through the cocoapods inrastructure, so libraries, which are not prebuilt, will be build for the right architecture by the app itself.

## Changelog:
[iOS][Added] -

Reviewed By: cortinico

Differential Revision: D70888212

fbshipit-source-id: 541a818e02ccb96c822de29b0714646d1e69a5a9
2025-03-11 05:05:49 -07:00
Riccardo Cipolleschi 6dd721b258 Deprecate RCT_NEW_ARCH_ENABLED (#49924)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49924

This change deprecates the RCT_NEW_ARCH_ENABLEd flag to toggle the New Architecture.

The new approach bring iOS closer to Android: to diasable the New Architecture, user needs to modify the App's Info.plist and add a `RCTNewArchEnabled` boolean entry and set it to `NO`.

The absence of the entry implies that the New Arch is enabled. (Defaults to enabled)

This also deprecates the `RCTSetNewArchEnabled` function because it makes no sense now

## Context
The RCT_NEW_ARCH_ENABLE flag is a compile time flag we used for almost two years to configure the iOS apps and to determine whether the app should build with the New Arch or not.

However, given that we are looking into prebuilding React Native, we have to get rid of all the compilation flags, because they would require us to prebuild a combinatorial number of artifacts for react native. For example:

- New Arch / Hermes
- Old Arch / Hermes
- New Arch / JSC
- Old Arch / JSC
- ...

## Backward compatibility
We are going to keep adding the RCT_NEW_ARCH_ENABLED flag in all the dependencies, through the cocoapods inrastructure, so libraries, which are not prebuilt, will be build for the right architecture by the app itself.

## Changelog:
[iOS][Deprecated] - deprecate the `RCT_NEW_ARCH_ENABLED` and the `RCTSetNewArchEnabled`

Reviewed By: cortinico

Differential Revision: D70885454

fbshipit-source-id: 4b8404ead4900d9787049ebd0b8b3c29b272f913
2025-03-11 05:05:49 -07:00
Vitali Zaidman a27ec64a00 report an event tracking the event loop perf in metro dev middleware (#49674)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49674

Changelog:
[General][Internal] - report an event tracking the event loop perf in metro dev middleware

Reviewed By: hoxyq

Differential Revision: D69988265

fbshipit-source-id: 89cb427215b0034d545305cccfcee542af8c0367
2025-03-11 04:41:50 -07:00
David Vacca d24e5acb26 Ensure LegacyArchitectureLogger.assertWhenLegacyArchitectureMinifyingEnabled is called only once per class loading in kotlin (#49936)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49936

Ensure LegacyArchitectureLogger.assertWhenLegacyArchitectureMinifyingEnabled is called only once per class loading in kotlin

changelog: [internal] internal

Reviewed By: alanleedev

Differential Revision: D70922132

fbshipit-source-id: ce4d68dc2ab0f61266e4bb5cddfc175c364f568a
2025-03-10 23:46:25 -07:00
Nick Lefever 3b07fb7426 Disable clipped view removal on recycle (#49938)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49938

Recycling a `ReactViewGroup` will lead to all child views being removed from the view. To avoid having view recycling corrupt the clipping state set for the child views, ahead of base view recycling preparation this diff disables `removeClippedSubviews` so that layout changes don't run over all child views that will end up being removed anyway.

The bug reported earlier should already have been resolved by D70672120 since the view recycling of a child view would remove the view from the parent. Meaning the ReactViewGroup can only have subviews that are not prepared for recycling, any recycled view would have been removed from their parent (the ReactViewGroup)

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D70921641

fbshipit-source-id: a8b311169b268c09400d2b62008184e379f6fe79
2025-03-10 19:00:36 -07:00
Sam Zhou d98fc9de2d Align internal and external definition of describe function from jest (#49934)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49934

The typing of internal version of jest and the libdef in react-native has diverged a bit. This diff aligns the typing for `describe`

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D70917375

fbshipit-source-id: 9c2ab98a08394aa187712f4966748a8a60e202b1
2025-03-10 15:19:38 -07:00
Eric Rozell 34ae9facd5 Fix issue with zIndex child removal (#49900)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49900

This appears to fix an issue where removing a sibling with zIndex breaks drawing of the next sibling. The theory is that eager return in `onViewRemoved` prevents the view from reverting into a state where it no longer uses custom draw order. However, tracing back history, this eager return was [added](https://github.com/facebook/react-native/pull/43389) to fix a bug in Reanimated. cc bartlomiejbloniarz to confirm if [this Reanimated issue](https://github.com/software-mansion/react-native-reanimated/issues/5715) resurfaces from this change.

Fixes #49838

## Changelog

[Android][Fixed] Fixes issue with z-indexed sibling removal

Reviewed By: NickGerleman, cipolleschi

Differential Revision: D70795631

fbshipit-source-id: 500af92226be29af73f36f911ffff27a0c083ae9
2025-03-10 13:43:10 -07:00
Oskar Kwaśniewski e1464c0975 fix(iOS): provide useful error message about dependency provider (#49843)
Summary:
Currently, when integrating into a native app using ReactNativeFactory, when we forget to set `dependencyProvider` we get a random crash exception instructing us (depending on native modules in our app) about an unrecognized selector:

![CleanShot 2025-03-05 at 15 21 53@2x](https://github.com/user-attachments/assets/04b8d4fe-1e40-4023-af1b-1825a3a99f33)

After this change we get a proper error informing us that we for got to set dependencyProvider:

![CleanShot 2025-03-05 at 15 22 16@2x](https://github.com/user-attachments/assets/39bb1c2a-3efc-4689-a92e-ca2ee54cb6a4)

## Changelog:

[IOS] [ADDED] - Useful error message about setting dependency provider

Pull Request resolved: https://github.com/facebook/react-native/pull/49843

Test Plan: CI Green

Reviewed By: cortinico

Differential Revision: D70631515

Pulled By: cipolleschi

fbshipit-source-id: d99c8fa12fdb0624a01fe16c50fe0f2d10554f94
2025-03-10 12:09:52 -07:00
zhongwuzw 22cd3b1023 Fabric: Fixes Modal snapshot when closing it (#48252)
Summary:
Fixes https://github.com/facebook/react-native/issues/48245 . The reason is we reuse the modal component and also reuse the snapshot of previous modal.

## Changelog:

[IOS] [FIXED] - Fabric: Fixes Modal snapshot when closing it

Pull Request resolved: https://github.com/facebook/react-native/pull/48252

Test Plan: Repro repo please see Fixes https://github.com/facebook/react-native/issues/48245

Reviewed By: rshest

Differential Revision: D70629570

Pulled By: cipolleschi

fbshipit-source-id: fe97184d2f27283a9c7e6df09e9df35630429ff1
2025-03-10 11:20:33 -07:00
Mateo Guzmán 0b2b91d532 Migrate JavaScriptContextHolder & JavaScriptExecutor to Kotlin (#49909)
Summary:
Migrate com.facebook.react.bridge JavaScriptContextHolder & JavaScriptExecutor to Kotlin.

In this PR I also marked the return of HermesExecutor.initHybridDefaultConfig as non-nullable to keep the conversion without logic changes. I checked that this was changed unintentionally to nullable in 12e321daf0 but I think it was not supposed to be.

## Changelog:

[INTERNAL] - Migrate com.facebook.react.bridge JavaScriptContextHolder & JavaScriptExecutor to Kotlin

Pull Request resolved: https://github.com/facebook/react-native/pull/49909

Test Plan:
```bash
yarn test-android
yarn android
```

Reviewed By: javache

Differential Revision: D70871012

Pulled By: Abbondanzo

fbshipit-source-id: 1c15927056baf166e520e896e92bebf664fa0229
2025-03-10 11:08:44 -07:00
Riccardo Cipolleschi 8b33668c43 Add missing loadFromSource method in the DefaultRNFactoryDelegate (#49931)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49931

This change fixes the app startup in the Old Architecture by implementing the loadSourceForBridge:onProgress:onComplete method in the RCTDefaultReactNativeFactoryDelegate object.

The method was missing here, so the Bridge was never trying to load the JS bundle from Metro, resulting in an empty app.

## Changelog:
[iOS][Fixed] - Implement the loadSourceForBridge:onProgress:onComplete in the RCTDefaultReactNativeFactoryDelegate.

Reviewed By: cortinico

Differential Revision: D70898811

fbshipit-source-id: 3e5d519a1965e92ace91ca6d5b316a9069279448
2025-03-10 11:05:39 -07:00
Vitali Zaidman 52b02a6077 track event loop delay in metro dev middleware (#49660)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49660

Changelog:
[General][Internal] - track event loop delay in metro dev middleware

Reviewed By: robhogan

Differential Revision: D69988266

fbshipit-source-id: 042511bd68a8d6f24a8a2036f604c12ca923027a
2025-03-10 09:52:45 -07:00
Jakub Piasecki c04b4a92d1 Update modal wrapper to be translatable to TypeScript (#49923)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49923

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D70887822

fbshipit-source-id: 729e91245cfb750cf1de4f4532925ff7263b3d82
2025-03-10 08:40:37 -07:00
Jakub Piasecki e7c44b2a26 Add depth limit to StyleSheet.flatten type (#49925)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49925

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D70888318

fbshipit-source-id: ded13e64bde87803ce79a8c9272bcb5b6f4ab321
2025-03-10 08:23:33 -07:00
Pieter De Baets d8181721f6 Inline Task.call without Executor (#49906)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49906

Task.call is equivalent to a try-catch and wrapping the result in a Task. Inlining this is cheaper than creating a TaskCompletionSource and a Runnable.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D70803554

fbshipit-source-id: 0886176be974eff67c983ce1475ad685a8021b14
2025-03-10 07:51:23 -07:00
Nicola Corti d998b7b330 Remove stale BUCK setup for Android pre-builts (#49926)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49926

Those files can be fully removed as it's not referenced at all in OSS/Internal

Changelog:
[Internal] [Changed] -

Reviewed By: fabriziocucci

Differential Revision: D70888664

fbshipit-source-id: 4cacc449aa141e0465f771bf8c52d573d4227ef5
2025-03-10 07:28:20 -07:00
Vitali Zaidman d50cb768c9 instead of sampling report high ping events (#49922)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49922

Spamming the DB with "heartbeat" events with close to 0 ping didn't give us any useful information. Instead, report high ping situations.

Changelog:
[General][Internal] Remove reporting all device and debugger heartbeat events, only report heartbeats with high round trip latency

Reviewed By: GijsWeterings

Differential Revision: D70707457

fbshipit-source-id: 6bc8a55fd32dfa60fb4f7764ac00a6218417dcb5
2025-03-10 07:07:49 -07:00
Mateo Guzmán 0928406530 Make DispatchCommandMountItem, MountItemFactory, MountItem & BatchMountItem internal (#49893)
Summary:
As part of the initiative to reduce the public API surface, these classes under com.facebook.react.fabric.mounting.mountitems can be internalized. I've checked there are no relevant OSS usages:

- [DispatchCommandMountItem](https://github.com/search?type=code&q=NOT+is%3Afork+NOT+org%3Afacebook+NOT+repo%3Areact-native-tvos%2Freact-native-tvos+NOT+repo%3Anuagoz%2Freact-native+NOT+repo%3A2lambda123%2Freact-native+NOT+repo%3Abeanchips%2Ffacebookreactnative+NOT+repo%3AfabOnReact%2Freact-native-notes+NOT+user%3Ahuntie+NOT+user%3Acortinico+NOT+repo%3AMaxdev18%2Fpowersync_app+NOT+repo%3Acarter-0%2Finstagram-decompiled+NOT+repo%3Am0mosenpai%2Finstadamn+NOT+repo%3AA-Star100%2FA-Star100-AUG2-2024+NOT+repo%3Alclnrd%2Fdetox-scrollview-reproductible+NOT+repo%3ADionisisChytiris%2FWorldWiseTrivia_Main+NOT+repo%3Apast3l%2Fhi2+NOT+repo%3AoneDotpy%2FCaribouQuest+NOT+repo%3Abejayoharen%2Fdailytodo+NOT+repo%3Amolangning%2Freversing-discord+NOT+repo%3AScottPrzy%2Freact-native+NOT+repo%3Agabrieldonadel%2Freact-native-visionos+NOT+repo%3AGabriel2308%2FTestes-Soft+NOT+repo%3Adawnzs03%2FflakyBuild+NOT+repo%3Acga2351%2Fcode+NOT+repo%3Astreeg%2Ftcc+NOT+repo%3Asoftware-mansion-labs%2Freact-native-swiftui+NOT+repo%3Apkcsecurity%2Fdecompiled-lightbulb+com.facebook.react.fabric.mounting.mountitems.DispatchCommandMountItem) (all GH results are forks)
- [MountItemFactory](https://github.com/search?type=code&q=NOT+is%3Afork+NOT+org%3Afacebook+NOT+repo%3Areact-native-tvos%2Freact-native-tvos+NOT+repo%3Anuagoz%2Freact-native+NOT+repo%3A2lambda123%2Freact-native+NOT+repo%3Abeanchips%2Ffacebookreactnative+NOT+repo%3AfabOnReact%2Freact-native-notes+NOT+user%3Ahuntie+NOT+user%3Acortinico+NOT+repo%3AMaxdev18%2Fpowersync_app+NOT+repo%3Acarter-0%2Finstagram-decompiled+NOT+repo%3Am0mosenpai%2Finstadamn+NOT+repo%3AA-Star100%2FA-Star100-AUG2-2024+NOT+repo%3Alclnrd%2Fdetox-scrollview-reproductible+NOT+repo%3ADionisisChytiris%2FWorldWiseTrivia_Main+NOT+repo%3Apast3l%2Fhi2+NOT+repo%3AoneDotpy%2FCaribouQuest+NOT+repo%3Abejayoharen%2Fdailytodo+NOT+repo%3Amolangning%2Freversing-discord+NOT+repo%3AScottPrzy%2Freact-native+NOT+repo%3Agabrieldonadel%2Freact-native-visionos+NOT+repo%3AGabriel2308%2FTestes-Soft+NOT+repo%3Adawnzs03%2FflakyBuild+NOT+repo%3Acga2351%2Fcode+NOT+repo%3Astreeg%2Ftcc+NOT+repo%3Asoftware-mansion-labs%2Freact-native-swiftui+NOT+repo%3Apkcsecurity%2Fdecompiled-lightbulb+com.facebook.react.fabric.mounting.mountitems.MountItemFactory)
- [MountItem](https://github.com/search?type=code&q=NOT+is%3Afork+NOT+org%3Afacebook+NOT+repo%3Areact-native-tvos%2Freact-native-tvos+NOT+repo%3Anuagoz%2Freact-native+NOT+repo%3A2lambda123%2Freact-native+NOT+repo%3Abeanchips%2Ffacebookreactnative+NOT+repo%3AfabOnReact%2Freact-native-notes+NOT+user%3Ahuntie+NOT+user%3Acortinico+NOT+repo%3AMaxdev18%2Fpowersync_app+NOT+repo%3Acarter-0%2Finstagram-decompiled+NOT+repo%3Am0mosenpai%2Finstadamn+NOT+repo%3AA-Star100%2FA-Star100-AUG2-2024+NOT+repo%3Alclnrd%2Fdetox-scrollview-reproductible+NOT+repo%3ADionisisChytiris%2FWorldWiseTrivia_Main+NOT+repo%3Apast3l%2Fhi2+NOT+repo%3AoneDotpy%2FCaribouQuest+NOT+repo%3Abejayoharen%2Fdailytodo+NOT+repo%3Amolangning%2Freversing-discord+NOT+repo%3AScottPrzy%2Freact-native+NOT+repo%3Agabrieldonadel%2Freact-native-visionos+NOT+repo%3AGabriel2308%2FTestes-Soft+NOT+repo%3Adawnzs03%2FflakyBuild+NOT+repo%3Acga2351%2Fcode+NOT+repo%3Astreeg%2Ftcc+NOT+repo%3Asoftware-mansion-labs%2Freact-native-swiftui+NOT+repo%3Apkcsecurity%2Fdecompiled-lightbulb+com.facebook.react.fabric.mounting.mountitems.MountItem) (a lot of GH results, but all are forks)
- [BatchMountItem](https://github.com/search?type=code&q=NOT+is%3Afork+NOT+org%3Afacebook+NOT+repo%3Areact-native-tvos%2Freact-native-tvos+NOT+repo%3Anuagoz%2Freact-native+NOT+repo%3A2lambda123%2Freact-native+NOT+repo%3Abeanchips%2Ffacebookreactnative+NOT+repo%3AfabOnReact%2Freact-native-notes+NOT+user%3Ahuntie+NOT+user%3Acortinico+NOT+repo%3AMaxdev18%2Fpowersync_app+NOT+repo%3Acarter-0%2Finstagram-decompiled+NOT+repo%3Am0mosenpai%2Finstadamn+NOT+repo%3AA-Star100%2FA-Star100-AUG2-2024+NOT+repo%3Alclnrd%2Fdetox-scrollview-reproductible+NOT+repo%3ADionisisChytiris%2FWorldWiseTrivia_Main+NOT+repo%3Apast3l%2Fhi2+NOT+repo%3AoneDotpy%2FCaribouQuest+NOT+repo%3Abejayoharen%2Fdailytodo+NOT+repo%3Amolangning%2Freversing-discord+NOT+repo%3AScottPrzy%2Freact-native+NOT+repo%3Agabrieldonadel%2Freact-native-visionos+NOT+repo%3AGabriel2308%2FTestes-Soft+NOT+repo%3Adawnzs03%2FflakyBuild+NOT+repo%3Acga2351%2Fcode+NOT+repo%3Astreeg%2Ftcc+NOT+repo%3Asoftware-mansion-labs%2Freact-native-swiftui+NOT+repo%3Apkcsecurity%2Fdecompiled-lightbulb+com.facebook.react.fabric.mounting.mountitems.BatchMountItem) (all GH results are forks)

## Changelog:

[INTERNAL] - Make DispatchCommandMountItem, MountItemFactory, MountItem & BatchMountItem internal

Pull Request resolved: https://github.com/facebook/react-native/pull/49893

Test Plan:
```bash
yarn test-android
yarn android
```

Reviewed By: cortinico

Differential Revision: D70788076

Pulled By: javache

fbshipit-source-id: 34b8c5e0a716365d5905dfb846c6467b0ae9fc09
2025-03-10 06:54:42 -07:00
Pieter De Baets c2b49d446a Fix disabled ReactHost tests (#49907)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49907

These tests have been disabled for a while due to feature flags being introduced, fusebox flags with native dependencies, and the removal of Powermock.

Changelog: [Internal]

Reviewed By: Abbondanzo

Differential Revision: D70803553

fbshipit-source-id: d1ae6e4ca6c0d22e6a8c89bf01b28333929fa8a6
2025-03-10 06:07:25 -07:00
Rubén Norte 7cff19b55d Migrate all imports from react-native to package imports instead of relative in Fantom tests (#49912)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49912

Changelog: [internal]

This migrates all Fantom tests to use package-relative imports from `react-native` instead of relative paths.

Note that a lot of the current deep imports (e.g.: `import ReactNativeElement from 'react-native/src/private/webapis/dom/nodes/ReactNativeElement'`) will not be necessary when we release those APIs as public.

Reviewed By: sammy-SC

Differential Revision: D70779722

fbshipit-source-id: f0d28e00ca9881dc2a3cd151b75327b26711277e
2025-03-10 06:05:44 -07:00
Phil Pluckthun b52f0d8391 chore(react-native-codegen): Remove fixtures and outdated transforms from build output (#49916)
Summary:
- Update ignore micromatch pattern to filter out `__test_fixtures__` from build output
- Remove `babel/plugin-transform-object-rest-spread`
- Remove `babel/plugin-transform-async-to-generator`
- Remove `babel/plugin-transform-destructuring`

The `package.json:engines:node` field is already set to `>=18` which makes the three Babel transforms that were removed redundant.

## Changelog:

[INTERNAL] [CHANGED] - Remove fixtures files and outdated Babel transforms from `react-native/codegen` build output

Pull Request resolved: https://github.com/facebook/react-native/pull/49916

Test Plan: - Ran against Node 18

Reviewed By: robhogan

Differential Revision: D70885090

Pulled By: cortinico

fbshipit-source-id: 328b75a6031a7ca6a9b3ed170061ffb0a47d6d93
2025-03-10 05:44:32 -07:00
Rubén Norte 41181bb434 Simplify Fantom test (#49899)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49899

Changelog: [internal]

Just a minor refactor.

Reviewed By: sammy-SC

Differential Revision: D70792753

fbshipit-source-id: 09ec415df376600bb5e9f913d7df8881b2b0755e
2025-03-10 05:37:09 -07:00
Rubén Norte ddbebacea7 Fix documentElement methods for element not working correctly (#49898)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49898

Changelog: [internal]

In the method to access the native node reference from elements, we weren't considering the case where the element is the `documentElement`, which is a special case we were handling correctly in the case of native node references from nodes (where we also handle it possibly being a document node).

Because of this, methods in `Element` and `ReactNativeElement` weren't working correctly on the `documentElement`. We didn't catch this initially because we only tested the traversal methods defined in node in the test for `ReactNativeDocument`.

This fixes the issue.

Reviewed By: javache

Differential Revision: D70792748

fbshipit-source-id: c42d05a066efaffccade94e9d3835fb7172e2335
2025-03-10 05:37:09 -07:00
Mateo Guzmán 4046441997 Make WritableMapBuffer internal (#49914)
Summary:
This class can be internalized as part of the initiative to reduce the public API surface. I've checked there are [no relevant OSS usages](https://github.com/search?type=code&q=NOT+is%3Afork+NOT+org%3Afacebook+NOT+repo%3Areact-native-tvos%2Freact-native-tvos+NOT+repo%3Anuagoz%2Freact-native+NOT+repo%3A2lambda123%2Freact-native+NOT+repo%3Abeanchips%2Ffacebookreactnative+NOT+repo%3AfabOnReact%2Freact-native-notes+NOT+user%3Ahuntie+NOT+user%3Acortinico+NOT+repo%3AMaxdev18%2Fpowersync_app+NOT+repo%3Acarter-0%2Finstagram-decompiled+NOT+repo%3Am0mosenpai%2Finstadamn+NOT+repo%3AA-Star100%2FA-Star100-AUG2-2024+NOT+repo%3Alclnrd%2Fdetox-scrollview-reproductible+NOT+repo%3ADionisisChytiris%2FWorldWiseTrivia_Main+NOT+repo%3Apast3l%2Fhi2+NOT+repo%3AoneDotpy%2FCaribouQuest+NOT+repo%3Abejayoharen%2Fdailytodo+NOT+repo%3Amolangning%2Freversing-discord+NOT+repo%3AScottPrzy%2Freact-native+NOT+repo%3Agabrieldonadel%2Freact-native-visionos+NOT+repo%3AGabriel2308%2FTestes-Soft+NOT+repo%3Adawnzs03%2FflakyBuild+NOT+repo%3Acga2351%2Fcode+NOT+repo%3Astreeg%2Ftcc+NOT+repo%3Asoftware-mansion-labs%2Freact-native-swiftui+NOT+repo%3Apkcsecurity%2Fdecompiled-lightbulb+com.facebook.react.common.mapbuffer.WritableMapBuffer).

## Changelog:

[INTERNAL] - Make com.facebook.react.common.mapbuffer.WritableMapBuffer internal

Pull Request resolved: https://github.com/facebook/react-native/pull/49914

Test Plan:
```bash
yarn test-android
yarn android
```

Reviewed By: javache

Differential Revision: D70884414

Pulled By: cortinico

fbshipit-source-id: de1a298f7c7d5da8edf029e8d4dd31a9b334b853
2025-03-10 05:27:04 -07:00
Leon ddb8c27ab3 Add TS definition for inputAccessoryViewButtonLabel (#49754)
Summary:
Add TS definition for inputAccessoryViewButtonLabel. `inputAccessoryViewButtonLabel` was implemented in https://github.com/facebook/react-native/pull/47441

## Changelog:

[INTERNAL] [CHANGED] - Add TS definition for inputAccessoryViewButtonLabel

Pull Request resolved: https://github.com/facebook/react-native/pull/49754

Test Plan: -

Reviewed By: cortinico

Differential Revision: D70797497

Pulled By: alanleedev

fbshipit-source-id: c1d9b7d11c31e556289a0ebadd386566b9af7856
2025-03-10 03:26:21 -07:00
Riccardo Cipolleschi 9abdd619da Fix bug that prevents the Old Arch from being enabled (#49896)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49896

This change makes possible to opt-out from the New Architecture.

Env variables are always `string`s in ruby and the check was always failing because it was comparing it with a number (always false)

## Changelog:
[iOS][Fixed] - enable back the opt-out from the New Architecture

Reviewed By: cortinico

Differential Revision: D70789827

fbshipit-source-id: 7d3f96c3db22f2715dec2b649534b20e3273ea3e
2025-03-10 03:08:11 -07:00
Samuel Susla eeef060762 add fantom test for view culling inside <Modal /> (#49860)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49860

changelog: [internal]

now that Fantom supports tests with <Modal />, add a test to cover scenario where <ScrollView /> is inside of <Modal />.

Reviewed By: rubennorte, rshest

Differential Revision: D70696834

fbshipit-source-id: 5f51917ac5c6a2cf451906e302ee2b62c15449ea
2025-03-08 05:50:14 -08:00
Samuel Susla faafd8c2a8 add enqueueModalSizeUpdate to Fantom (#49862)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49862

changelog: [internal]

add method enqueueModalSizeUpdate to allow for setting size of Modal.

Reviewed By: rshest

Differential Revision: D70696524

fbshipit-source-id: 9e22d95e62ee52a66f888503d070fcbff1307d21
2025-03-08 05:50:14 -08:00
Samuel Susla 9f7b8457ec expose ref to <Modal />'s native component (#49859)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49859

changelog: [internal]

this will be used for testing purposes in Fantom.

This diff also cleans up `ModalInjection.js` which is unused.

Reviewed By: rubennorte

Differential Revision: D69883384

fbshipit-source-id: 4ff278ef174c95fd5a93f70519f14c5190a5ada5
2025-03-08 05:50:14 -08:00
Ellis Hoag 486d38c024 Remove (more) unused variables from AtWork (#49904)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49904

X-link: https://github.com/facebookincubator/SocketRocket/pull/702

Remove or suppress unused variables.

Changelog: Remove an unused variable

Reviewed By: r-barnes

Differential Revision: D70801115

fbshipit-source-id: 5d0cffeee5e2b2a3729c34dcc19f81d582154d65
2025-03-07 16:55:58 -08:00
Sam Zhou a0c2474e11 Move explicit type argument into function parameter (#49901)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49901

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D70802763

fbshipit-source-id: 1a31d2bb99a21bb56352156da6bf52fb0a624c00
2025-03-07 14:07:00 -08:00
Rob Hogan 0ad192003e Update Metro dependencies to 0.82.0 (#49885)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49885

Updates all `metro*` dependencies to the latest `^0.82.0`.

The breaking changes in this release apply only to frameworks and integrators.

This update brings `package.json#exports` resolution enabled by default, and lazy hashing for much faster Metro startup.

Release notes:
https://github.com/facebook/metro/releases/tag/v0.82.0

Changelog:
[General][Changed] Update Metro to ^0.82.0

Reviewed By: vzaidman

Differential Revision: D70778791

fbshipit-source-id: ffb55ed384d721205aa4d7f528c63c0b0a38abc5
2025-03-07 10:09:22 -08:00
Jakub Piasecki d3a27f27a0 Refactor AppRegistry to generate a TS namespace (#49882)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49882

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D70627137

fbshipit-source-id: a68524bdd6481f1df2a3529c72f0b5e5b17c521b
2025-03-07 08:16:58 -08:00
Iwo Plaza fef7933f63 Align Animated/Easing with OSS types (#49842)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49842

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D70623703

fbshipit-source-id: c02a0b17d257fa4eb0dbb38db8842c1755384239
2025-03-07 07:19:01 -08:00
Jakub Piasecki c131c91eaf Move private property initialization to constructors (#49880)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49880

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D70772773

fbshipit-source-id: 6abb4f4f2dba2b9685a0e376581bf9dd4b4ed9e6
2025-03-07 05:27:53 -08:00
Michail Strokin 2a58201322 marked acquireWakeLockNow as static as it was static before (#49875)
Summary:
acquireWakeLockNow was static before but wasn't marked as static in https://github.com/facebook/react-native/commit/9afad527b831ec0c5d50e88daacbaacbc476d478  when changing code to Kotlin.

This breaks react-native-firebase but I've submitted the bug report there as I guess it might be fixed there too.

## Changelog:

[ANDROID] [FIXED] - Marked acquireWakeLockNow as static

Pull Request resolved: https://github.com/facebook/react-native/pull/49875

Test Plan: No tests as it reverts the broken change

Reviewed By: rshest

Differential Revision: D70773675

Pulled By: javache

fbshipit-source-id: d7363702dfec078b7e6d2693d05b8ab87e818522
2025-03-07 04:29:36 -08:00