Commit Graph
38843 Commits
Author SHA1 Message Date
CodemodService Bot 80dda2377f Fix CQS signal modernize-use-designated-initializers in xplat/yoga/yoga/algorithm (#54197)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/54197

Reviewed By: christophpurrer

Differential Revision: D84892945
2025-10-21 14:35:29 -07:00
Rubén Norte 1a02e8bffe Simplify tests passing refs to Fantom instead of nodes (#54222)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54222

Changelog: [internal]

Reduce boilerplate in some tests now that we can pass refs to some Fantom APIs.

Reviewed By: javache

Differential Revision: D85143176

fbshipit-source-id: 0e107891f1027a185821e21e5fa76f019cec5bb1
2025-10-21 09:34:49 -07:00
Rubén Norte e58bbbcd8e Allow passing refs where nodes are expected (#54221)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54221

Changelog: [internal]

Small change in the Fantom API to accept refs and reduce boilerplate. See next diff for examples

Reviewed By: javache

Differential Revision: D85143177

fbshipit-source-id: fd65abcc1b107df8726fee172b284f5dc96e88a6
2025-10-21 09:34:49 -07:00
Alan Hughes bd004e0c12 Add changelog for v0.82.1 (#54216)
Summary:
Add Changelog for 0.82.1

## Changelog:
[Internal] - Add Changelog for 0.82.1

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

Test Plan: N/A

Reviewed By: cipolleschi

Differential Revision: D85137528

Pulled By: cortinico

fbshipit-source-id: 3705a91227874f3ac5e006b8b3e2d26acaf91a2f
2025-10-21 08:24:36 -07:00
Moti Zilberman 74d3472e2f Better source locations for EXPECT_CALL failures (#54129)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54129

Changelog: [Internal]

The team maintaining gmock is [uninterested, as a matter of principle,](https://github.com/google/googletest/issues/2646#issuecomment-630919122) in improving the ergonomics of writing helper functions around `EXPECT_CALL`. However, such helpers have proven very useful for the `jsinspector-modern` C++ test suite. The out-of-the-box ergonomics *are* pretty bad, though, so this diff tries to improve the situation.

The biggest offender in our test suite is the `expectMessageFromPage` helper function - if a test fails because an expectation isn't met, the error message points to the `EXPECT_CALL` line inside `expectMessageFromPage`, which is utterly useless compared to the line of test code that *called* `expectMessageFromPage`.

Here, we reach into gmock's internals slightly to create a variant of the `EXPECT_CALL` macro that allows passing in a [`std::source_location`](https://en.cppreference.com/w/cpp/utility/source_location.html) (thanks, C++20!). We then teach `expectMessageFromPage` and other such helpers to capture a source location at the call site (using a parameter with a default value to `source_location::current()`) and use the modified macro to pass it into gmock.

Reviewed By: huntie

Differential Revision: D84368993

fbshipit-source-id: 62f64b6c5f626a54bc3da7143d84ee2d75d16ac6
2025-10-21 08:19:02 -07:00
Moti Zilberman f7cc2e565a Add tests for Tracing domain reporting of network requests (#54128)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54128

Changelog: [Internal]

Adds an integration test for `NetworkReporter`'s CDP Tracing domain output (via `PerformanceTracer` behind the scenes), i.e. the traces that power the Network track in the Performance panel in React Native DevTools.

The test covers the `Tracing` and `Network` domains being enabled simultaneously, as well as `Tracing` on its own.

Reviewed By: huntie

Differential Revision: D84337901

fbshipit-source-id: f82af33575806fc3b99636cdb1eb9803c04c8c07
2025-10-21 08:19:02 -07:00
Pieter De Baets 708f527ec7 Ensure JVM thread is attached when destroying FabricMountingManager (#54218)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54218

Observed some crashes coming from `schedulerDidRequestPreliminaryViewAllocation` which seemed to point at the FabricMountingManager being destroyed from the Hades GC thread. That thread is not attached to the JVM, so would crash when trying to destroy this global_ref.

Changelog: [Internal]

Reviewed By: lenaic

Differential Revision: D85143603

fbshipit-source-id: 2ecd42d57188e6f3d69a6124e21ee8913b3d5b89
2025-10-21 06:33:11 -07:00
Ruslan Lesiutin f4a942254a fix: add clearMarks and clearMeasures to performance global stub (#54214)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54214

# Changelog: [Internal]

React started using `clearMeasures` in https://github.com/facebook/react/pull/34803. It only does it if `performance.measure()` is defined. This should be enough for a  feature check of User Timings API presence, but out stub doesn't follow the same spec.

Adding `clearMarks()` and `clearMeasures()` stubs to the object.

Reviewed By: rubennorte

Differential Revision: D85082720

fbshipit-source-id: 3b117a6545e131cdbb2d5efb73d500a928469864
2025-10-21 06:18:18 -07:00
Dawid Malecki 4ddf2ce64f Android: Add new configuration for DevSupportManager (#53557)
Summary:
Following the [RFC](https://github.com/react-native-community/discussions-and-proposals/pull/925), this PR adds new `DevMenuConfiguration` object and extends `ReactHost` API for passing settings to the particular `DevSupportManager`.  The `DevMenuConfiguration` includes:

- isDevMenuEnabled,
- isShakeGestureEnabled,
- areKeyboardShortcutsEnabled,

## Changelog:

[ANDROID][ADDED] - Add new configuration for `RCTDevMenu`

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

Test Plan:
Tested with different configuration on `DevMenuConfiguration`:

<details>
<summary>Click to view code</summary>

```kt
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    fullyDrawnReporter.addReporter()
    maybeUpdateBackgroundColor()

    reactDelegate?.reactHost?.let { reactHost ->
      val devMenuConfiguration = DevMenuConfiguration(
        isDevMenuEnabled = true,
        isShakeGestureEnabled = false,
        areKeyboardShortcutsEnabled = false,
      )
      reactHost.setDevMenuConfiguration(devMenuConfiguration)
    }

    // register insets listener to update margins on the ReactRootView to avoid overlap w/ system
    // bars
    reactDelegate?.reactRootView?.let { rootView ->
      val insetsType: Int =
          WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()

      val windowInsetsListener = { view: View, windowInsets: WindowInsetsCompat ->
        val insets = windowInsets.getInsets(insetsType)

        (view.layoutParams as FrameLayout.LayoutParams).apply {
          setMargins(insets.left, insets.top, insets.right, insets.bottom)
        }

        WindowInsetsCompat.CONSUMED
      }
      ViewCompat.setOnApplyWindowInsetsListener(rootView, windowInsetsListener)
    }
  }
```

</details>

Reviewed By: vzaidman, cortinico

Differential Revision: D81684310

Pulled By: coado

fbshipit-source-id: 4e2c27ffc68037432587f4920b243f3dfdccb2fb
2025-10-21 02:38:33 -07:00
Calix Tang 328d07a30d Implement VirtualViewContainerStateExperimental (interval tree, updateModes optimization) (#54213)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54213

## Changelog: [Internal]
Modifies `VirtualViewContainerStateExperimental` to use an interval tree to store the container's VirtualViews. Interval tree's query allows us to lower the frequently-used updateModes() operation from `O(n)` to `O(m + log n)`, where `m` is the number of VirtualViews in the hysteresis range. General layout changes incur a penalty due to the requirement of maintaining a balanced BST.

Performance Changes:
* updateModes(): `O(n) -> O(m + log n)` (new algo)
* updateMode(): `O(1) -> O(1)`
* add VV: `O(1) -> O(log n)`
* update VV: `O(1) -> O(log n)`
* delete VV: `O(1) -> O(log n)`

We expect scrolling to be much more frequent than a total layout change/updating many of the elements in the container at once. However, the initial load of a page will take `O(n log n)` time rather than `O(n)` time.

We also include some bookkeeping sets for "old" hysteresis, prerender, and visible VVs. This will increase the memory footprint of `VirtualViewContainerState` by `O(m)`.

More details are in https://docs.google.com/document/d/1Cmamx6fNfruoHLApX8tedqNVZsCEUyoBvQWpMvBsfcY/edit?tab=t.gqla6vu3231k.

### Note
This diff only covers the Android version. iOS may follow after experimentation.

Reviewed By: lunaleaps

Differential Revision: D83783201

fbshipit-source-id: 93a7a93784d668e09d8ddacc7e30d289ccd8b7a2
2025-10-20 19:08:52 -07:00
Calix Tang 793f99d949 Split VirtualViewContainerState into classic, experimental versions [Android] (#54162)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54162

Changelog [Internal]:

Splits VirtualViewContainerState implementation into three parts: (1) an abstract parent class, (2) the "classic" version (existing version), and (3) the "experimental" version (new changes to be made). The experimental version is a copy of the classic version for now.

Reviewed By: lunaleaps

Differential Revision: D84569206

fbshipit-source-id: b41cd9faf06d2de0dff17148ded72193107e5b9e
2025-10-20 19:08:52 -07:00
Calix Tang f4acf23374 Refactor debugLog in ReactVirtualViewExperimental.kt (#54157)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54157

Changelog [Internal]
Removes unnecessary `debugLog` import in ReactVirtualViewExperimental and refactors the debug function

Reviewed By: lunaleaps

Differential Revision: D84608555

fbshipit-source-id: 548076537c26a4fffba2c47be47d1cee4cf6f3ef
2025-10-20 19:08:52 -07:00
Calix Tang 0b05253dec Add VirtualViewContainerState version native feature flag (#54156)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54156

Changelog: [Internal]

Introduces new React Native feature flag for VirtualViewContainerState versioning changes.

Follow up diffs will create classic and experimental versions of VirtualViewContainerState. This feature flag is meant to eventually be overridden with MetaConfig variables.

Reviewed By: lunaleaps

Differential Revision: D84569199

fbshipit-source-id: aaca31bd1946c56f7de3d7fd52a126b0165e59d4
2025-10-20 19:08:52 -07:00
Christoph Purrer a63262f4bd use ThemedReactContext for resource prefetching (#54201)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54201

Changelog: [Internal]

Reviewed By: lenaic

Differential Revision: D85015776

fbshipit-source-id: 1a237aa7cae39ddb242c09f202f3566c03baefed
2025-10-20 12:14:14 -07:00
Christoph Purrer 6a37389e28 Image prefetcher > Correctly set blurRadius data type (#54200)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54200

Changelog: [Internal]

Reviewed By: lenaic

Differential Revision: D85014621

fbshipit-source-id: f4ff244443ce0fef5b9cdd6005da002445f3f632
2025-10-20 12:14:14 -07:00
Rubén Norte 05ec7e0ad1 Add basic definition of DOM APIs in legacy TypeScript types (#54124)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54124

Changelog: [General][Fixed] Fixed missing type definitions for new DOM APIs in legacy TypeScript types.

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

Reviewed By: huntie

Differential Revision: D84363784

fbshipit-source-id: f92362c78c72da986b26ea18c673f90fd4b48fca
2025-10-20 11:38:35 -07:00
generatedunixname89002005232357 2f8392387b Revert D84624705 (#54209)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54209

Changelog: [Internal]

This diff reverts D84624705
The marker is logged even if there is a full bundle reload.

Depends on D84624705

Reviewed By: hoxyq

Differential Revision: D85048405

fbshipit-source-id: 0d634a034efe42b404abe1992a4f82280dbeedec
2025-10-20 08:40:01 -07:00
Nicola Corti 50b1bec2d5 RNGP - Move matchingFallbacks to be called inside maybeCreate("debugOptimized") (#54186)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54186

The `marchingFallback` directive is applied directly on the build type.
However here is invoked inside the `externalNativeBuild` making it confusing, because in reality
it has nothing to do with `externalNativeBuild`. So I'm moving it to the correct location
(this has no effect on the build setup, is just to make the code easier to read).

Changelog:
[Internal] [Changed] -

Reviewed By: cipolleschi

Differential Revision: D84921628

fbshipit-source-id: 064336ad64a8e1de20b747276f6e5ca7ce7cb677
2025-10-20 08:01:26 -07:00
Pieter De Baets bc906488ae Add Fantom test for backgroundImage parsing (#54185)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54185

Validate that the changes in D83341309 work across both experiment variants.

Changelog: [Internal]

Reviewed By: andrewdacenko

Differential Revision: D84924308

fbshipit-source-id: 7bf13d00f32c7af778b142ff3abdd0c2f7a5ba24
2025-10-20 07:00:42 -07:00
nishan (o^▽^o) a9780f9102 feat: background image native CSS parser (#53609)
Summary:
This PR adds native CSS parser for `backgroundImage` property. Currently, it supports linear-gradient and radial-gradient spec compliant CSS syntax.

## Changelog:

[GENERAL] [ADDED] - background image native parser.

<!-- Help reviewers and the release process by writing your own changelog entry.

Pick one each for the category and type tags:

For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests

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

Test Plan:
- Replicated existing testcases from JS. Currently i've added CSS syntax testcases. Checkout `CSSBackgroundImageTest.cpp`

### Verify example screens in RNTester
- Set `enableNativeCSSParsing` to true in `ReactNativeFeatureFlags.config.js` and run `yarn featureflags --update`
- Rebuild the project and verify `LinearGradientExample` and `RadialGradientExample` screens on both platforms.

### Notes
- Currently it is difficult to run CSS renderer tests. I made a custom cmake config to get it working, some steps would be helpful.
- Right now the new CSS renderer seems to be only working on iOS. NickGerleman mentioned there is some WIP to get it working on android. So please test this PR on iOS.

Reviewed By: mdvacca

Differential Revision: D83341309

Pulled By: javache

fbshipit-source-id: 91b88e3df164766c1f0021283697b1e5f9b44bfc
2025-10-20 07:00:42 -07:00
Nick Lefever 4c4270d6c7 Add endFillColor prop to scroll view (#54203)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54203

Adding the Android `endFillColor` property to the scroll view props, setting the default value to `TRANSPARENT`.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D85021077

fbshipit-source-id: 73eb12671035b1b2e2ca95a08b7c73b55ce2c0da
2025-10-20 04:36:52 -07:00
Nick Lefever df7508db58 Add overScrollMode prop to scroll view (#54202)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54202

Adding the `overScrollMode` property to the Android scroll view props.

Changelog: [Internal]

Differential Revision: D85019462

fbshipit-source-id: 2809743a89e80ad851fce4f90da6a8f7a67e1501
2025-10-20 04:36:52 -07:00
David Vacca d9ea1b2453 Delete unused imports (#54195)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54195

Delete unused imports

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84955362

fbshipit-source-id: 1d89271b72080690a139d9dc99f1bf1576e3f4e9
2025-10-18 09:39:02 -07:00
David Vacca eafc472b7e Explicitly set default values for fields of ShadowNodeUpdateInfo (#54194)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54194

Explicitly set default values for fields of ShadowNodeUpdateInfo

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84954459

fbshipit-source-id: 0b2fc7d35ec8e515db91f86cea85bb78cf746cd1
2025-10-18 09:39:02 -07:00
David Vacca 6237882055 Explicitly set default values for fields of ShadowViewNodePair (#54193)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54193

Explicitly set default values for fields of ShadowViewNodePair

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84954458

fbshipit-source-id: 7ca2ed92d5622cf4dc01088d4e53b946d1bbd279
2025-10-17 21:28:39 -07:00
David Vacca 0a3344c31f Explicitly set default values for fields of ResourceTimingData (#54192)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54192

Explicitly set default values for fields of ResourceTimingData

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84954457

fbshipit-source-id: 9f121a9e8567b851fa74756a2fa58dab9fd60827
2025-10-17 21:28:39 -07:00
David Vacca 82826f24d5 Explicitly set default values for fields of NetworkResource (#54191)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54191

Explicitly set default values for fields of NetworkResource

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84954456

fbshipit-source-id: 27f48ca0c174045023da4d87429973b26a788103
2025-10-17 21:28:39 -07:00
David Vacca 9d172c0b37 Explicitly set default values for field of structTraceEvent (#54190)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54190

Explicitly set default values for field of structTraceEvent

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84954461

fbshipit-source-id: 51b950d26d4236ff561b77751983defaccd799b0
2025-10-17 21:28:39 -07:00
David Vacca ff50b29050 Explicitly set default values for fields of struct JSRuntimeFlags (#54189)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54189

Explicitly set default values for fields of struct JSRuntimeFlags

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84952242

fbshipit-source-id: 41de7eb791c9880c83573d670f4a777bf0a753d9
2025-10-17 21:28:39 -07:00
David Vacca c3868e5e4c Explicitly set default values for fields of HostTargetMetadata struct (#54188)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54188

Explicitly set default values for fields of HostTargetMetadata struct

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D84952243

fbshipit-source-id: e01b8137dac571a6e001681184bca2eef7cc9ee8
2025-10-17 21:28:39 -07:00
Riccardo Cipolleschi 535efc1403 Fixed tint color for action sheets (#54180)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54180

in iOS 26, the tintColor prop is not applied by default to the action sheets buttons.

This change fixes it by restoring the same behavior we had before iOS 26.

## Changelog:
[iOS][Fixed] - Apply tint color to Actions sheets buttons

Reviewed By: cortinico

Differential Revision: D84844319

fbshipit-source-id: e211d0a735ea2da35f825c3568d66ba83e4ad832
2025-10-17 09:47:58 -07:00
Riccardo Cipolleschi 82d2352b19 Fix ActionSheet presented with an interactive background (#54179)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54179

iOS 26 changed how the `popoverPresentationController.sourceView`and the `popoverPresentationController.sourceRect` are handled by iOS.

Before iOS 26, those two properties were ignored by iPhones but used by iPads.

After iOS 26, those two properties are used by both iPhones and iPads.

This introduced an issue where users presenting an action sheet were actually able to interact with the back button on iPhone even ehwn they were not supposed to.

This change adds a condition over the idiom used (iPhone/iPad) to make sure that we use the anchors only with the iPad idions as it used to be before.

## Changelog:
[iOS][Fixed] - Revert action sheet behavior not to break apps on iOS 26

Reviewed By: RSNara

Differential Revision: D84842625

fbshipit-source-id: 347dfc21ee478abd02ba26078cb27d05e9cb64c5
2025-10-17 09:47:58 -07:00
Tomasz Sapeta be4fcdafb1 Improve decoding full-sized images in RCTImageLoader (#54184)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54184

In Expo, someone reported (https://github.com/expo/expo/issues/40158) that `expo-image-manipulator` causes memory crashes when processing large images (> 30MB).
Image manipulator uses `RCTImageLoader` to load and decode images. As opposed to the Image component, it always requests for images in full size. For large images it may crash at `CGImageSourceCreateThumbnailAtIndex` which in the provided repro slowly increases memory usage until it finally crashes after a few seconds of running.
I figured out that not including the `kCGImageSourceThumbnailMaxPixelSize` option works much better, but using `CGImageSourceCreateImageAtIndex` instead of `CGImageSourceCreateThumbnailAtIndex` works even better – it's faster and consumes less memory during decoding. This is more or less what `SDWebImage` library does, see [`SDImageIOAnimatedCoder`](https://github.com/SDWebImage/SDWebImage/blob/master/SDWebImage/Core/SDImageIOAnimatedCoder.m#L488-L509).
With the proposed changes, it's still crashing but only for the largest image (64MB), other images (40MB and 50MB) are now working fine. Obviously, it cannot be fixed entirely and it's not recommended to load such big images without downscaling them.

## Changelog:

[IOS] [CHANGED] - Use `CGImageSourceCreateImageAtIndex` instead of `CGImageSourceCreateThumbnailAtIndex` to decode full-sized images

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

Test Plan: I've tested the examples of the `Image` component in RNTester as well as the repro provided in https://github.com/expo/expo/issues/40158

Reviewed By: javache

Differential Revision: D84835416

Pulled By: cipolleschi

fbshipit-source-id: a182dd00f00194f0463ad4f583cc695647414fca
2025-10-17 09:00:45 -07:00
Dawid Malecki 269b0bd877 fix(android): displaying dev menu items in light mode (#54119)
Summary:
Fixes displaying dev menu items to also take into account the current theme mode. Previously, in light mode, items were not visible because the text was white on a white background for enabled options.

## Changelog:

[ANDROID][FIXED] - fixed displaying dev menu items in light mode.

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

Test Plan:
Checked in light and dark mode with all options enabled except for "Open DevTools" being disabled.

| Before | After |
|:------:|:-----:|
|<img  alt="before-light" src="https://github.com/user-attachments/assets/5a08cb92-8822-4af3-976d-c20db408bcaa" /> |<img alt="after-light" src="https://github.com/user-attachments/assets/02561c15-b6ec-499a-bf83-99bc0c2a9471" />|

| Before | After |
|:------:|:-----:|
| <img alt="before-dark" src="https://github.com/user-attachments/assets/44b2c59e-2fc2-41cc-a599-136ac455afbb" /> |<img alt="after-dark" src="https://github.com/user-attachments/assets/51e6167b-4d3a-4686-a20e-eca17c3b0e10" />|

Reviewed By: sbuggay, cortinico

Differential Revision: D84346125

Pulled By: coado

fbshipit-source-id: e082d1985fdcafe8620cbd02a78a1b122fb08e53
2025-10-17 01:34:22 -07:00
Luna Wei 802e1a7726 Support edge-adjacent intersections (#54175)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54175

Changelog: [Internal] - Fix a bug with IntersectionObserver where we weren't considering edge-adjacent intersections.

So it is valid for `intersectionRatio` to be 0, but still be intersecting.

Reviewed By: mdvacca

Differential Revision: D84787414

fbshipit-source-id: ef6ab35be594f5b734c8c25d2475ee2a6dba1fe5
2025-10-16 23:26:47 -07:00
Luna Wei 9d6fa7d77e Use 'explicit root' instead of 'custom root' terminology (#54177)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54177

Changelog: [Internal] - Rename the term "custom root" to "explicit root" to align with w3c spec. And "implicit root" for the document root.

Reviewed By: mdvacca

Differential Revision: D84795887

fbshipit-source-id: afec23f6763af56c6de1d3fce2f9501187559fb9
2025-10-16 23:26:47 -07:00
Nick Lefever ae5728bbb4 Extract ValueUnit percent formatting to separate file (#54170)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54170

This diff extracts the `toString(double, char)` function used to format percent values from `ValueUnit` into a separate `DoubleConversions` file.

This was added to graphics directly instead of moving it to core to avoid introducting cyclic dependencies since core depends on graphics.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D84714535

fbshipit-source-id: e41be90d211c28dba12e0920293698b3e1d3a1c7
2025-10-16 17:16:31 -07:00
Peter Abbondanzo 7c543db181 Fix resizeMethod prop (#54178)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54178

The `resizeMethod` prop was reading from `internal_analyticTag` and not setting on the backing image, this change remaps it

Changelog: [General][Fixed] resizeMethod was not propagated correctly on Android with Props 2.0

Reviewed By: javache

Differential Revision: D84716400

fbshipit-source-id: 320aded79cba787585d875fc46111bca34c0c30c
2025-10-16 15:26:46 -07:00
Nicola Corti 40ac4478fb Move to use proguard-android-optimize.txt inside RNTester (#54143)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54143

This will become the default in AGP 9.x so let's update it inside RNTester as well.

Changelog:
[Internal] [Changed] -

Reviewed By: cipolleschi

Differential Revision: D84548388

fbshipit-source-id: 755344b93204f074926e47ef2a5c980b60e9121b
2025-10-16 13:46:38 -07:00
Andrew Datsenko 9ab95dd2b5 Delete unused script (#54171)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54171

Changelog: [Internal]

Remove outdated and unused script.

Reviewed By: cortinico

Differential Revision: D84636692

fbshipit-source-id: 402c15735ec1d5a646147b83a1c8def4de9811d0
2025-10-16 12:54:47 -07:00
Nick Lefever 2ab23aeb40 Add fadingEdgeLength prop to android scroll view props (#54164)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54164

Adding `fadingEdgeLength` prop to the Android scroll view props together with prop diffing support for Props 2.0.

Changelog: [Internal]

Differential Revision: D84788963

fbshipit-source-id: 6cf8011816311797fe0d805f68ccb026e32d7bff
2025-10-16 06:49:58 -07:00
Andrew Datsenko e79920c662 Fix EXC_BAD_ACCESS for animated (#54158)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54158

Changelog: [Internal]

Animated was capturing `self` directly in C++ std::function contexts. When capturing Objective-C objects in C++ lambdas, they aren't automatically retained. When these lambdas were invoked later (potentially after `self` was deallocated), accessing `_onRender` and other instance variables caused the crash.

Reviewed By: zeyap

Differential Revision: D84638972

fbshipit-source-id: 38f8630cf4f677e29afff07348c2d5dbb1f5cd08
2025-10-15 08:29:24 -07:00
Alex Hunt 094794ac92 Add performance marker for Fast Refresh update (#54154)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54154

Adds a prominent vertical "Fast Refresh ⚛︎" marker entry in the performance timeline when a Fast Refresh update is complete.

This is available in apps with `performance.mark()` enabled (Canary feature).

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D84624705

fbshipit-source-id: 6c0ae0b8ae0acaaaba559a1854f64218bf5feabb
2025-10-14 17:51:13 -07:00
Will Spagnoli 0b68dcfac8 Update copyright from Facebook to Meta Platforms (#54144)
Summary:
Fix sync script to emit “Meta Platforms, Inc.” instead of "Facebook, Inc."

## Changelog:

[General] [Fixed] - Updated sync script to emit “Meta Platforms, Inc.” instead of "Facebook, Inc." in copyright notice.

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

Test Plan: Tests Required: No

Reviewed By: cortinico

Differential Revision: D84636157

Pulled By: andrewdacenko

fbshipit-source-id: 51f199ff31d7406519e1b985393b7e5b6f4cd602
2025-10-14 13:29:05 -07:00
Rob Hogan 670a4d942f Babel preset: Add unstable_preserveClasses to experiment with disabling class transforms for SH (#54153)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54153

Disable `babel/plugin-transform-classes` and `babel/plugin-transform-class-properties` when `customTransformOptions.unstable_preserveClasses` is truthy.

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D84506895

fbshipit-source-id: 6c66cf6cea037ec183235a058a86b558a7876582
2025-10-14 10:52:16 -07:00
Nick Lefever 93278d548b Fix binary size regression for BackgroundImage (#54126)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54126

The binary size for RN builds increased by ~180KiB due to the implementation of the `experimental_backgroundImage` property diffing.

This diff removes default inlining for the `toDynamic` serialization functions of the structs used by the linear and radial gradient styles.

Combined with the binary size improvements done previously for `ColorStop` and `ValueUnit`, the binary size has been reduced by 176.0KiB

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D84214151

fbshipit-source-id: 58b045eee839beb4f944689e752096df8f310e77
2025-10-14 10:46:02 -07:00
Nick Lefever fc74d8c579 Disable inlining of ColorStop and ValueUnit toDynamic conversion (#54125)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54125

With ColorStop and ValueUnit being used at multiple locations, inlining the `toDynamic` conversion used for RN Android and using `std::format` to convert floating point values to string increased the binary size of RN Android by ~180KiB. This diff declares the functions outside the header to avoid inlining the functions and removes the dependency on `std::format` for the percent value string formatting.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D84349391

fbshipit-source-id: 2aab6f057f8b69d0af3779f6edabdd42705d0445
2025-10-14 10:46:02 -07:00
lukmccall 39ede95921 Fix request permission is not always resolving in Android 16 (#53898)
Summary:
Fixes: https://github.com/facebook/react-native/issues/53887
Fixes: https://github.com/expo/expo/issues/39480

In the latest Android 16 update, requesting permissions does not always change the app's state (the `onPause` and `onResume` functions aren't called). For instance, when you deny permission 3 times, the last promise won't resolve until you move the app to the background. The current logic inside the `ReactActivityDelegate` assumes that Android will call `onResume` after receiving permission state information from the system, which is no longer the case.

Probably connected with [this commit](https://android.googlesource.com/platform/packages/modules/Permission/%2B/5dca0ccb26f2b99d706a1d3e9402f851e849c913)

## Changelog:

[ANDROID] [FIXED] - Fix request permission not always resolving in Android 16

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

Test Plan:
- I've tested it in the RNTester by denying the camera permission three times.
- I've also checked if the patch works with the Expo permissions code.

Reviewed By: javache

Differential Revision: D83059478

Pulled By: cortinico

fbshipit-source-id: 7bf33b379a1b6606ad2da2f75d337bf951e3986b
2025-10-14 09:03:29 -07:00
Vitali Zaidman d7bcaf6cb4 Update debugger-frontend from 8cce390...54afd87 (#54152)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54152

Changelog: [Internal] - Update `react-native/debugger-frontend` from 8cce390...54afd87

Resyncs `react-native/debugger-frontend` from GitHub - see `rn-chrome-devtools-frontend` [changelog](https://github.com/facebook/react-native-devtools-frontend/compare/8cce39003f66f66a8fb4c0e581a2b5046cf9c1d1...54afd8765db32a9640edef3788085b991fe4b88a).

### Changelog

| Commit | Author | Date/Time | Subject |
| ------ | ------ | --------- | ------- |
| [54afd8765](https://github.com/facebook/react-native-devtools-frontend/commit/54afd8765) | Vitali Zaidman (vzaidman@gmail.com) | 2025-10-13T15:50:57-04:00 | [fix memory profiling race condition (#211)](https://github.com/facebook/react-native-devtools-frontend/commit/54afd8765) |
| [b8e5768ec](https://github.com/facebook/react-native-devtools-frontend/commit/b8e5768ec) | Alex Hunt (hello@alexhunt.dev) | 2025-09-30T21:20:30+01:00 | [Re-enable Network Request Initiator view (#210)](https://github.com/facebook/react-native-devtools-frontend/commit/b8e5768ec) |

Reviewed By: huntie

Differential Revision: D84542157

fbshipit-source-id: f29ec029b05decbc3ab1cd412df06af55981fc21
2025-10-14 08:45:28 -07:00
Marco Wang 2c749a814a Deploy 0.288.0 to xplat (#54145)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54145

[changelog](https://github.com/facebook/flow/blob/main/Changelog.md)
Changelog: [Internal]

Reviewed By: SamChou19815

Differential Revision: D84571624

fbshipit-source-id: 7bb915d544ac539b055c32ddec9a52d05cec0a99
2025-10-14 00:07:14 -07:00