Commit Graph
35679 Commits
Author SHA1 Message Date
Sam Zhou 4f14499013 Fix issues in react-native ahead of making React.ComponentType an alias of component(...Props) (#50180)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50180

Prepare for the change that makes `React.ComponentType` an alias of `component(...Props)`, which comes with stricter checking and making the props automatically readonly.

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D71566900

fbshipit-source-id: cefcc10fda9a9777532f25b325412b0d50ebb9b8
2025-03-20 15:05:28 -07:00
Zeya Peng 1acd45950b TurboModuleWithJSIBindings (#50106)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50106

## Changelog:

[General] [Added] - Create TurboModuleWithJSIBindings interface

So c++ TurboModules can initialize some private members with reference to `jsi::Runtime`

Reviewed By: lenaic

Differential Revision: D71396842

fbshipit-source-id: 59d32e4cbf2c5081912a4c828acc66ceb8702855
2025-03-20 14:49:29 -07:00
David Vacca ceff2e8c37 Update JavaScriptContextHolder documentation to not mention CatlaystInstance (#50163)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50163

Update JavaScriptContextHolder documentation to not mention CatlaystInstance

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D71508657

fbshipit-source-id: 379be65c8a4afdfb0ed994fd1189b1285c246eec
2025-03-20 13:08:29 -07:00
David Vacca 06325d5411 Compile-out methods using Context.isBridgeless() (#50176)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50176

Compile-out methods using Context.isBridgeless()

changelog: [internal] internal

Reviewed By: arushikesarwani94

Differential Revision: D71079164

fbshipit-source-id: a610e2406d92e254bb5b11d692c0a5f5a6a0e4cb
2025-03-20 13:08:29 -07:00
David Vacca ce9471051c Compile-out UIManagerModule from FpsDebugFrameCallback (#50158)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50158

Compile-out UIManagerModule from FpsDebugFrameCallback

The setViewHierarchyUpdateDebugListener does not exists on Bridgeless and NotThreadSafeViewHierarchyUpdateDebugListener is deprecated and marked for deletion on the new architecture.

The new architecture exposes a different API called ItemDispatchListener that's a sort of replacement for NotThreadSafeViewHierarchyUpdateDebugListener. Although it's not the same.

FpsView is broken in old/new arch and needs to be rebuild, I believe this behavior needs to be rethinked in the future. For now I'm excluding usages of NotThreadSafeViewHierarchyUpdateDebugListener and setViewHierarchyUpdateDebugListener for apps running on the new arch enabled by default.

changelog: [internal] internal

Reviewed By: rshest

Differential Revision: D71050642

fbshipit-source-id: 662deb064ffc2322b560618fac3203ab4e86c277
2025-03-20 13:08:29 -07:00
David Vacca 8d1278eb1a Assert if NativeModuleRegistry.onBatchComplete() is used in new architecture (#50164)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50164

Based on analysis this method is only used by legacy architecture, this diff adds an assert if NativeModuleRegistry.onBatchComplete() is used in new architecture

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D71050638

fbshipit-source-id: 7a9791230880d2431e6b136735653a8ab4c34d7d
2025-03-20 13:08:29 -07:00
David Vacca 7dd6e25861 Compile-out UIManagerModule from ReactSafeAreaView (#50161)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50161

Compile-out UIManagerModule from ReactSafeAreaView

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D71050640

fbshipit-source-id: e6675064a0e34bb581b495b3a6412f42372d223d
2025-03-20 13:08:29 -07:00
David Vacca 6f5d6a5990 Remove UIManagerModule from NativeAnimatedModule (#50160)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50160

In this diff we are removing UIManagerModule from NativeAnimatedModule
This code wasn't executing when fabric is enabled, with this change the code that references UIManagerModule will be stripped out

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D71050641

fbshipit-source-id: fbedd5b9e1a9efb45c2fb7558d97fc639897c28c
2025-03-20 13:08:29 -07:00
David Vacca 204ca2ec95 Rename MaintainVisibleScrollPositionHelper.getUIManagerModule() -> MaintainVisibleScrollPositionHelper.getUIManager() (#50177)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50177

This diff renames MaintainVisibleScrollPositionHelper.getUIManagerModule() -> MaintainVisibleScrollPositionHelper.getUIManager() to move away from the UIManagerModule naming

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D71050639

fbshipit-source-id: 4d9aaf66af0f2a881146a83ec170344adc1bad7b
2025-03-20 13:08:29 -07:00
David Vacca 5e2eedc116 Remove UIManager dependency out of ReactInstance class (#50162)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50162

In this diff I'm removing UIManager dependency out of ReactInstance class

changelog: [internal] internal

Reviewed By: alanleedev

Differential Revision: D71003821

fbshipit-source-id: 8ee46619f5a598a03990d0677b47e8ec60902f10
2025-03-20 13:08:29 -07:00
David Vacca 4f8d215d8e Ensure UIManagerHelper does not access UIManagerModule (#50159)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50159

Ensure UIManagerHelper does not access UIManagerModule

changelog: [internal] internal

Reviewed By: cortinico, alanleedev

Differential Revision: D70742205

fbshipit-source-id: f7eabfb7d28b4debc667a9b0cfd55741b373380b
2025-03-20 13:08:29 -07:00
David Vacca 73b220f483 Compile-out UIManagerModule from ReactModalHostView (#50155)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50155

Compile-out UIManagerModule from ReactModalHostView

changelog: [internal] internal

Reviewed By: rshest

Differential Revision: D70742206

fbshipit-source-id: f2ce2b1d039dd09d482830cdb92fd9db84c604d4
2025-03-20 13:08:29 -07:00
David Vacca 4ca670e5ca Compile-out UIManagerModule from ReactHostImpl (#50156)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50156

Compile-out UIManagerModule from ReactHostImpl

changelog: [internal] internal

Reviewed By: rshest

Differential Revision: D70742208

fbshipit-source-id: ae915ee41681b9e4275ecc6c7cfd475f42a03333
2025-03-20 13:08:29 -07:00
David Vacca a8668319ad Deprecate UIManagerType.DEFAULT and introduce UIManagerType.LEGACY (#50157)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50157

UIManagerType.DEFAULT is becoming confusings As we are expanding the usage of the New architecture everywhere.

That's why I'm depreacting this constant and introducing UIManagerType.LEGACY.

changelog: [Android][Deprecated] Deprecate UIManagerType.DEFAULT, replaced by UIManagerType.LEGACY

Reviewed By: alanleedev

Differential Revision: D70738948

fbshipit-source-id: 9793a6cce3b931f9c0de4e0c2026852119f392b2
2025-03-20 13:08:29 -07:00
David Vacca a8c675d460 Compile out UIManagerModule from ReactTextView (#50154)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50154

Compile out UIManagerModule from ReactTextView

changelog: [internal] internal

Reviewed By: alanleedev

Differential Revision: D70738949

fbshipit-source-id: 1f15d1f305bbe1e8b933558acc96a59fcfff8ced
2025-03-20 13:08:29 -07:00
David Vacca 89eaf661f9 Remove UIManagerModule from comments (#50153)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50153

Remove UIManagerModule from comments

changelog: [internal] internal

Reviewed By: cortinico, alanleedev

Differential Revision: D70738950

fbshipit-source-id: 13286c1c451fcf4fd4b4c7693f755c33577d12bf
2025-03-20 13:08:29 -07:00
Nicola Corti 38a7ba7c2a Do not warn for JSC deprecation on react-native-github (#50172)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50172

This specific warning is only for React Native users.

We don't need this warning on console for RNtester so I'm excluding react-native-github
project from the list of project where this warning gets fired.

Changelog:
[Internal] [Changed] - Do not warn for JSC deprecation on react-native-github

Reviewed By: mdvacca

Differential Revision: D71556035

fbshipit-source-id: 8ab625eb2c090416119903dbc9c29afac51c91bd
2025-03-20 10:48:12 -07:00
Vitali Zaidman a6e5a9fc9d raise event when trying to open the debugger on opt builds (#50104)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50104

Changelog:
[General][Internal] raises an event report when an attempt to open the debugger for not supported apps is made

Reviewed By: robhogan

Differential Revision: D71398802

fbshipit-source-id: 66b90a0286ee0844ced4319381e3a0581ce540b5
2025-03-20 10:23:07 -07:00
Olivier Bouillet d32ea66e6a fix(ios): selection range not respected when changing text or selection when selection is forced (#50166)
Summary:
fix: https://github.com/facebook/react-native/issues/50132
The goal of this PR is to ensure selected TextInput scrolls to the selected range when text or selection change.
The background of this feature check is to implement a rich text editor.

## Changelog:

[IOS][FIXED] - Selection range not respected when changing text or selection when selection is forced

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

Test Plan:
Tested with the sample linked to this pull request.
As TextInput is a controlled component

Here is a video of the sample with the patch: https://drive.google.com/file/d/1lS9_70quNqND_E8MjLFcRG6HoHcDkfmv/view?usp=drive_link

First TextInput shows the initial issue reported in the ticket.
Second TextInput shows the global behavior of the controlled component, the 2 buttons allows to force focus and the force text values

I have also backport this part on 0.77.1 and test it in my app, it works fine for me (let's see if I have QA feedback)

Reviewed By: javache

Differential Revision: D71544064

Pulled By: cipolleschi

fbshipit-source-id: ca49a3a2ca0f5f87307054efda31b0c779c31496
2025-03-20 09:53:11 -07:00
Maciej Jastrzębski ddbb5fda09 feat(iOS): allow eager initialization of RCTRootViewFactory (#49986)
Summary:
Expose eager initialization method on `RCTRootViewFactory` (iOS) so that application can prepare `ReactHost`/Bridge before actually creating a root view. Then creating a root view is significantly faster.

## Changelog:
[IOS] [ADDED] - allow eager initialization of `RCTRootViewFactory`

<!-- 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/49986

Test Plan:
Invoke `initializeReactHostWithLaunchOptions:` before calling `viewWithModuleName:` and measure the time difference vs not using eager initilization:

Before
- calling `viewWithModuleName:`: 63.39ms, 47.91 ms, 60.18ms

After:
- calling `initializeReactHostWithLaunchOptions`: 52.41 ms, 81.03 ms, 60.52 ms
- calling `viewWithModuleName`: 0.49 ms,  0.63 ms, 0.47 ms

Test run 3 times on iPhone simulator on M1 mac.

Reviewed By: javache

Differential Revision: D71548601

Pulled By: cipolleschi

fbshipit-source-id: 86ecfb8bec4c2657537caf32af49545b21d3656b
2025-03-20 09:52:53 -07:00
Alex Hunt a8745324c6 Scaffold NetworkReporter methods (#50131)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50131

Outlines and stubs methods on the `NetworkReporter` class, and the `Network.getResponseBody` CDP request on `NetworkIOAgent`. Together, these form the APIs to implement for CDP network debugging.

Also updates internal mutex use to `std::atomic<bool>`.

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D70708526

fbshipit-source-id: f44bd0d246a38883dd591752fb2d3ed4567de4a0
2025-03-20 06:46:13 -07:00
Eric Rozell 12e5df844b Convert folly::dynamic event dispatch to r-value (#50133)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50133

Allow move semantics for folly::dynamic event dispatching to avoid copying the folly::dynamic when dispatched.

## Changelog

[General][Breaking] - Dispatch folly::dynamic events with r-value instead of l-value

Reviewed By: NickGerleman

Differential Revision: D71423497

fbshipit-source-id: 5435772e14b025aab97d34df9983b91fd7285fd0
2025-03-20 04:57:36 -07:00
Riccardo Cipolleschi 146d809b6b Bump cache keys for Xcode which was restoring an old Pods folder (#50134)
Summary:
Bump the xcode keys to make sure that we use the newly created artifacts

## Changelog:
[Internal] - bump keys to use the right artifacts

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

Test Plan: GHA - Verified that CI passes the critical point in https://github.com/facebook/react-native/actions/runs/13948665701/job/39044363180?pr=50134

Reviewed By: NickGerleman

Differential Revision: D71473229

Pulled By: cipolleschi

fbshipit-source-id: 09b097a6b0c576705585a5584481a2abe63ab034
2025-03-20 03:25:02 -07:00
Ramanpreet Nara 886319b4bc Make AppState use main queue setup (#50115)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50115

## Rationale
Rendering can now include main -> js sync calls.

If we allow js -> main sync calls during rendering, react native can deadlock.

So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D71348561

fbshipit-source-id: 1c57ba1d40b062712fd53b9dac0bc8ecd60b425d
2025-03-19 21:16:05 -07:00
Ramanpreet Nara b4775ebb39 Make StatusBarManager use main queue setup (#50113)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50113

## Rationale
Rendering can now include main -> js sync calls.

If we allow js -> main sync calls during rendering, react native can deadlock.

So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D71348559

fbshipit-source-id: 918f145d817866a5d08087c1a4a0e151f783109e
2025-03-19 21:16:05 -07:00
Ramanpreet Nara 2b03fd74cb Make AccessibilityManager use main queue setup (#50112)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50112

## Rationale
Rendering can now include main -> js sync calls.

If we allow js -> main sync calls during rendering, react native can deadlock.

So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D71347448

fbshipit-source-id: f62a92a35011a7c8de0a7ee35047cc94f23106d1
2025-03-19 21:16:05 -07:00
Ramanpreet Nara 6fa638799a Make DeviceInfo use main queue setup (#50109)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50109

## Rationale
Rendering can now include main -> js sync calls.

If we allow js -> main sync calls during rendering, react native can deadlock.

So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D71347449

fbshipit-source-id: 1fa010fd08a2d0b809f36a4c8df973b86e4610f9
2025-03-19 21:16:05 -07:00
Ramanpreet Nara 06c88be6e3 Make PlatformConstants use main queue setup (#50111)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50111

## Rationale
Rendering can now include main -> js sync calls.

If we allow js -> main sync calls during rendering, react native can deadlock.

So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D71480047

fbshipit-source-id: e36a4dd317bbbf46a6766f01fbf4d69a83a45c17
2025-03-19 21:16:05 -07:00
Ramanpreet Nara ed8749ce59 Revert uikit proxies
Summary:
We will use main queue setup of native modules to solve this problem instead.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D71341038

fbshipit-source-id: 77e2064c732a5572d063a240f769fa7a79530f1b
2025-03-19 21:16:05 -07:00
Ramanpreet Nara 061174c150 Bridgeless: Implement main queue setup api in turbo modules (#50040)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50040

This diff implements main queue module setup.

Sometimes, people need to capture uikit things, and use them from javascript. In those cases, people can write main queue modules. These modules will be eagerly initialized on the main queue, during react native init.

## On Necessity
**Sync** dispatches to the main thread from the js thread can deadlock react native. And **async** dispatches to the main thread from the js thread sometimes might not be enough: it could lead to flickery rendering. So, we need to allow people to capture ui thread things, before any js executes.

## Caveat
This api is dangerous and discouraged. All react native surfaces will pay the cost of one surface introducing a main queue module. It could also slow down common/critical interactions in your app, if you're not careful.

We will introduce performance logging for this infrastructure. So that we can monitor and file tasks, when main queue module init starts taking "too long."

Changelog: [General][Breaking]: Introduce beforeload callback arg into ReactInstance::loadScript

Reviewed By: mdvacca

Differential Revision: D71084243

fbshipit-source-id: 8fdb84761ac69468afc428f4f79eff6322449e3c
2025-03-19 21:16:05 -07:00
Ramanpreet Nara 636665c1c2 Bridgeless: Introduce main queue setup api in turbo modules (#49957)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49957

## Changes
This diff introduces the api for "main queue modules" into turbo modules.

This will occur occurs before any rendering.

## Rationale

Rendering can now include main -> js sync calls. If we allow js -> main sync calls during rendering, react native can deadlock.

With this diff, we can move the js -> main sync calls to before any rendering happens.

## APIs
**Buck API:**
Plugin:
```
react_module_plugin_providers(
    name = "AccessibilityManager",
    native_class_func = "RCTAccessibilityManagerCls",
    unstable_requires_main_queue_setup = True,
)
```

**OSS API:**
[codegenConfig](https://reactnative.dev/docs/the-new-architecture/using-codegen) in package.json:
```
"codegenConfig": {
    "name": "<SpecName>",
    "type": "<types>",
    "jsSrcsDir": "<source_dir>",
    "android": {
      "javaPackageName": "<java.package.name>"
    },
    "ios": {
      "modules": {
        "AccessibilityManager": {
          "className": "RCTAccessibilityManager",
          "unstableRequiresMainQueueSetup": true
         }
      }
    }
  },
```

Changelog: [iOS][Added] Introduce unstableRequiresMainQueueSetup api to modules

Reviewed By: cipolleschi

Differential Revision: D70413478

fbshipit-source-id: 78d89437c2869a979ae5c94f08b01087686dfae7
2025-03-19 21:16:05 -07:00
Tim Yung 0448cf2567 RN: Support .fb Suffix in Native Codegen (#50140)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50140

Extends `react-native-codegen` to support the `.fb` filename suffix used to gate source code that is only relevant for Meta internal use cases.

Changelog:
[Internal]

Reviewed By: cipolleschi

Differential Revision: D70808462

fbshipit-source-id: a6772d6504f76724b8474df6799bc69a76a2f81b
2025-03-19 20:21:02 -07:00
Tim Yung 4de592756b RN/Relay: Upgrade to eslint-plugin-react-hooks@5.2.0 (#50146)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50146

Upgrades React Native and Relay to `eslint-plugin-react-hooks` from v4.6.0 to v5.2.0. ([CHANGELOG](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md))

Changelog:
[General][Breaking] Updated `eslint-config-react-native` to depend on `eslint-plugin-react-hooks` v5.2.0 from v4.6.0. This includes a breaking change in which ESLint will no longer recognize component names that start with 1 or more underscores followed by a capital letter. (https://github.com/facebook/react/pull/25162)

Reviewed By: captbaritone

Differential Revision: D71483664

fbshipit-source-id: 6c78e196a9ea8dca9c285cb43909cfe3749ddd28
2025-03-19 19:43:17 -07:00
Nick Gerleman 7136be22fa Fixes for AttributedString Comparison (#50147)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50147

Noticed a couple bugs here, around a crash from assertion internal to the caching map which hashes on the AttributedString, that may or may not be related.

1. We are missing `baseTextAttributes` for both hashing and equality (which is mostly innocuous, but still wrong)
2. We were not hashing or comparing `textAlignVertical`
3. For equality, we were comparing parent shadow view tag and metrics, but for hashing, we were hashing the whole ShadowView.

I think #3 could cause issues, since we could see different hash despite equality, which could break invariants.

Changelog: [Internal]

Reviewed By: lunaleaps

Differential Revision: D71500246

fbshipit-source-id: 462749d5ca10d10bf0dab88089253a2bb8e603fb
2025-03-19 19:42:30 -07:00
Yurii Nakonechnyi 7488f66fe5 fatalWithMessage() - added warning suppression: unused 'message' argument (#50148)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50148

## Changelog:

[Internal] - suppression: unused 'message' argument

X-link: https://github.com/facebook/yoga/pull/1803

Reviewed By: NickGerleman

Differential Revision: D71492528

Pulled By: lunaleaps

fbshipit-source-id: 6fc7a665066351d15e09f0b6c82ed1fe3f688a94
2025-03-19 19:06:50 -07:00
Regina Tuk 6df938c72e adding onPressMove to Pressable (#50139)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50139

adding this event to Pressable because it is going to be consumed after to track if pressable location is moved

Changelog:
[General] [Added] - Expose `onPressMove` as base prop for `Pressable`

Reviewed By: thurn

Differential Revision: D71429258

fbshipit-source-id: 79acaa735764a47a21d89042d3e4b9c114c72950
2025-03-19 16:53:20 -07:00
qnnp c2864c160d Added type definitions for Colors object in LaunchScreen module (#50118)
Summary:
## Changelog:

[GENERAL] [ADDED] - Added type definitions for Colors object in LaunchScreen module to enhance code readability and type safety.

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

Reviewed By: NickGerleman

Differential Revision: D71491870

Pulled By: lunaleaps

fbshipit-source-id: 48205fb4d03098f9bea32c1c18c5b18deb4fd7f0
2025-03-19 15:31:10 -07:00
Eli White 69ccbc3943 Allow union changes when the new element is in the middle of the union (#50117)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50117

D70870978 failed the compat check because it modified a union by removing an element in the middle:

```
'global' | 'self'
```

from
```
'global' | 'application' | 'self'
```

This caused the compat check to complain that index 1 in both unions: `self` didn't match `application` and thus it was a type incompatibility.

We should have been comparing these as an unsorted array of options, which first sorts, then treats differences as added/removed elements instead of incompatbile elements.

If in the example above the removed element was the last one from the union, it would have been fine.

Once these are classified as added/removed, the VersionDiffer is able to check whether that change is allowed in fromNative or toNative.

Changelog: [General][Fixed] Compatibility Check: Allow union changes when the new element is in the middle of the union

Reviewed By: makovkastar

Differential Revision: D71433054

fbshipit-source-id: 20a73f0ba0576daf30cec97bae969b31baf7f468
2025-03-19 11:33:08 -07:00
Joe Vilches 2facea6e20 Rename accessibilityElements to accessibilityOrder for iOS (#50135)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50135

We settled on a different name here so gotta change some code with the old name. This is not exposed yet so this change is chill

Changelog: [Internal]

Reviewed By: jorge-cab

Differential Revision: D71471884

fbshipit-source-id: c30384802ef51e5aae830b27299859db05f2520b
2025-03-19 09:50:10 -07:00
Riccardo Cipolleschi 65bcfdab62 Build JSI, React-Debug, React-logger, React-MapBuffer with SPM (#50075)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50075

This is an exploratory change to see how it will look like to build core from SPM.

In this change we are building three pieces of React native (using the Podspec names for simplicity):
- React-jsi
- React-debug
- React-logger
- React-MapBuffer

They depends on a local ReactNativeDependency.xcframework we can build using the prebuild-io script.

## CHANGELOG:
[INTERNAL] - set up initial Swift PM configuration

Reviewed By: cortinico

Differential Revision: D70567840

fbshipit-source-id: 3f65a3e7c3dd39f71f6d4c04726712a5968e0a97
2025-03-19 09:26:15 -07:00
Jakub Piasecki 80c26b5ffa Export TransformsStyle from StyleSheet (#50126)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50126

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D71467141

fbshipit-source-id: 20077e4748abfd623cf0cb0b4852ba7c6f3973f8
2025-03-19 08:33:38 -07:00
Jakub Piasecki 84499bf70b Update reference path to global definitions (#50124)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50124

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D71465394

fbshipit-source-id: 17f5cee4533de8d16b2a5d164eef7c295af7b00b
2025-03-19 08:23:36 -07:00
Jakub Piasecki 1ebf83d149 Add missing exports from Animated namespace (#50103)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50103

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D71398771

fbshipit-source-id: a6cf790a35dd51857df5bf441fec6eca7bc0c3aa
2025-03-19 08:03:42 -07:00
Riccardo Cipolleschi 6cbd6ff0a0 Add Changelog for 0.78.1 (#50128)
Summary:
Changelog for 0.78.1

## Changelog:
[Internal] - Changelog for 0.78.1

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

Test Plan: N/A

Reviewed By: cortinico

Differential Revision: D71469118

Pulled By: cipolleschi

fbshipit-source-id: afbab9f2d23539ba7306d2d95964876be8a35190
2025-03-19 07:43:16 -07:00
Ajit 81e47af764 fix performance and memory usage of creating blob on Android (#50121)
Summary:
This PR fixes https://github.com/facebook/react-native/issues/48657
- Memory usage for creating a blob lowered from _( nearest 2^N greater than the file size)+1KB_ previously To _(file size)+1KB_. This is achieved by avoiding internal calls to java.io.ByteArrayOutputStream.ensureCapacity by creating a buffer based on file size.
- Increases the max file size a Blob can be  created from before hitting a OutOfMemoryException.
- Major performance increase by avoiding buffer copying

## Changelog:

[ANDROID] [CHANGED] - Speed and Memory usage improvements to Android Blob support
[ANDROID] [FIXED] - Creating of Blobs from large files now works. File size can now be upto available (free) heap size.

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

Test Plan: Used the App here to test Android Blob creation. https://github.com/giantslogik/blob-large-file-fetch.

Reviewed By: cortinico

Differential Revision: D71464835

Pulled By: javache

fbshipit-source-id: 38de7d83bcaee265fc6e7183f6b1160027cd4cb2
2025-03-19 06:03:26 -07:00
Christian Falch fd1e57b0c0 moved resources to correct location (#50101)
Summary:
In the final XCFramework we no longer need to place resource bundles in a subfolder called Resources - they should be located directly in the framework folder.

This commit fixes this by removing copying to the Resources folder. I also removed a few unneeded tests since we know that we are in a valid folder at this point.

bypass-github-export-checks

## Changelog:

[INTERNAL]  - Moved resource bundles up one level

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

Test Plan: Run RNTester with RCT_USE_RN_DEP=1 and verify that it launches

Reviewed By: cortinico

Differential Revision: D71464608

Pulled By: cipolleschi

fbshipit-source-id: 6cfdda0c6785ffeb13c170f9fd2dd9f5b889d490
2025-03-19 05:07:36 -07:00
Luna Wei df300387e6 Create IntersectionObserver benchmark (#50023)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50023

Changelog: [Internal] - Add benchmarks for Intersection Observer

Reviewed By: rubennorte

Differential Revision: D66847629

fbshipit-source-id: 01cb7994ddb007ecce29593b6ab4b1d359d68bd0
2025-03-19 00:01:35 -07:00
Eric Rozell ff4537c15e Allow listeners in EventEmitter (#49998)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49998

We have listeners for EventDispatcher, but we don't have any listener capabilities for synchronous hooks from events on the UI thread.

This proposal adds an affordance for generic event listeners that can be attached by the host platform mounting manager, e.g., to wire events to NativeAnimated event drivers.

## Changelog

[General][Added] - EventEmitter `addListener` and `removeListener` APIs

Reviewed By: javache

Differential Revision: D71050838

fbshipit-source-id: a7f298c71bd882a573781c2fe1fb5a1ae79f301c
2025-03-18 12:12:03 -07:00
Eric Rozell 9d7cdfef17 Allow value extraction from folly::dynamic events (#50032)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50032

In the new architecture, Android dispatches all events with folly::dynamic payloads. Various other callsites in some host platforms similarly dispatch events with folly::dynamic payloads.

Events disptached with folly::dynamic payloads have alignment with the `EventPayload::extractValue` method, added for integration with other capabilities like native animations.

When combined with a general pupose synchronous listener on facebook::react::EventEmitter, this should allow easier integration with host platform native event animation drivers.

## Changelog

[Internal]

Reviewed By: javache

Differential Revision: D71198197

fbshipit-source-id: 5e49e3b0fb01079870fbc7fc7e74ca0db354cda5
2025-03-18 12:12:03 -07:00
Eric Rozell be92588a7f Add EventPayload::extractValue for NativeAnimated (#49988)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49988

NativeAnimated currently depends on folly::dynamic event payloads for event-driven animations. While some events (e.g., ScrollEvent.h) have an `asDynamic` implementation, not all events do. In practice, NativeAnimated just needs to be able to extract an numeric value from a path to drive an animation.

Rather than converting events to dynamic, or otherwise special casing event handling, this change allows arbitrary payloads to implement `EventPayload::extractValue` to retrieve JS property path values directly from events, without intermediate conversions to dynamic.

## Changelog

[Internal]

Reviewed By: javache

Differential Revision: D71046682

fbshipit-source-id: 3544335ff9d50da87ced015de587b97204173b57
2025-03-18 12:12:03 -07:00