Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45365
## Changelog
As a followup to https://github.com/facebook/react-native/pull/45139
There I only implemented `hostPlatformColorFromRGBA` and `alpha/red/green/blueFromHostPlatformColor` on cxx platform, then used cxx platform specific method at some places. but really I should implement and use methods in `Color.h` that are platform agnostic
* cxx/android: platform color format is int32_t, RGBA are 8bit unsigned int ([0,255])
* windows: platform color format is `winrt::Windows::UI::Color` where RGBA props are 8bit unsigned ints ([0,255])
* apple: platform color format is `UIColor` where RGBA props are floats in [0,1]
[Internal]
previous change D58872165
Reviewed By: christophpurrer
Differential Revision: D59593659
fbshipit-source-id: 5d18419039817510e607d4e3f632c207d25c30a3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45436
changelog: [internal]
In D58355433, delete tree experiment was cleaned up. These are the remainings of the experiment that are no longer used. Let's delete them to clean up dead code
Reviewed By: javache
Differential Revision: D59732137
fbshipit-source-id: a22c0b14eda70e62817e80224f367ccb9006acc9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45354
Fresco has indicated that they have no plans to support loading vector assets and similar drawable types in Drawee-backed views ([issue](https://github.com/facebook/fresco/issues/329), [issue](https://github.com/facebook/fresco/issues/1463), [issue](https://github.com/facebook/fresco/issues/2463)). Guidance has been to instead load the vector drawable onto the backing image view ourselves. On the React Native side, having the ability to load vector drawables has been requested many times ([issue](https://github.com/facebook/react-native/issues/16651), [issue](https://github.com/facebook/react-native/issues/27502)).
I went this route over using a custom Fresco decoder for XML assets because vector drawables are compiled down into binary XML and I couldn't find a trivial, performant way to parse those files in a context-aware manner. This change only accounts for vector drawables, not any of the other XML-based drawable types (layer lists, level lists, state lists, 9-patch, etc.). Support could be added easily in the future by expanding the `getDrawableIfUnsupported` function.
## Changelog
[Android] [Added] - Added support for rendering XML assets provided to `Image`
Reviewed By: javache
Differential Revision: D59530172
fbshipit-source-id: 3d427c06238287e0a3b7f9570ac20e43d76126c7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45440
We only have one type of JavaScriptException anymore, so this can be simplified.
Changelog: [Android][Removed] Removed HasJavascriptExceptionMetadata as a marker interface. Use JavascriptExecption directly
Differential Revision: D57379390
fbshipit-source-id: a088834fddb156ceed5ccc8010d3c4acd365bf29
Summary:
The rn-tester android build assumes the react-native-community/cli is available. This is no longer the case.
Changelog: [Internal]
Differential Revision: D59170923
Pulled By: blakef
fbshipit-source-id: 6f414c2be387ef46dd50ce09a98beb230c8e73b9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45420
Devex improvement to skip validation when no native view config exists. Redbox is still hit, showing the true error. See test plan below before/after
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D59702501
fbshipit-source-id: 9aada9813c2930ee2b4bb23e5ba8a3e546c4e9af
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45423
I noticed while fixing some CI issues that `jsinspector` emits a bunch of warnings, making finding errors (especially in CI logs) awkward.
Also fix up a couple of stale comments from earlier designs of `NetworkIOAgent`.
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D59693730
fbshipit-source-id: d032150787bda320b9c38ccf2e95139411758f47
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45380
Removed the use of version checking and error code that is in react-native-community/cli-tools.
Changelog:
[Internal] [Changed] - Removed community-cli-plugin version & error dependencies
Reviewed By: robhogan
Differential Revision: D59378012
fbshipit-source-id: b009edc615b873ff2bff31296ac5d87a4482944f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45381
Removing the remaining dependencies from the react-native-community/*. This
inlines a copy of the logger.
Changelog:
[Internal][Changed] Removed react-native-community/cli-tools logger dependency
Reviewed By: cipolleschi
Differential Revision: D59378011
fbshipit-source-id: ef93d9fff1c623658e33c36b6329f5d548f649e8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45409
Changelog: [internal]
This removes `BridgelessJSCallInvoker` in favor of `RuntimeSchedulerCallInvoker`. This change should be transparent when not invoking JS callbacks using priorities, as both of them would just go directly to the scheduler using `scheduleWork`, but when priorities are specified, they'd now be honored in `RuntimeSchedulerCallInvoker`.
I realized this wasn't being used when I saw that `PerformanceObserver` callbacks were always scheduled with the highest priority, instead of with idle priority as specified in code.
Reviewed By: sammy-SC
Differential Revision: D59679512
fbshipit-source-id: 51d36d56ef1ff0b34e5157ed7b5e08de0a3884d2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45387
This diff prepares an experiment to test `setNativeProps` for syncing the final state of native driven animations with Fabric.
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D59634489
fbshipit-source-id: 453c5a2f0edfea695f7564e0c5ead58db21cf61e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45337
tsia. Some things to consider when reviewing:
* Made a new drawable for inset shadows
* The drawable in this class is the same size as the view with some padding. The padding is needed for 2 reasons
* Blur near edges looks good
* Blur artifacts can appear inside the view if the clear region barely exits the bounds of the view
* We draw the clear shape with another drawable, which solely exists so that we can get the border box path for the adjust border. We just use this path to clip out the shadow
Changelog: [Internal]
Reviewed By: NickGerleman
Differential Revision: D59300215
fbshipit-source-id: 30acc7aafd82122aa278a42d06418bb1079ca71f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45408
Changelog: [General][Fixed] Fixed prioritization of idle priority tasks
We recently found out that idle priority tasks were never scheduled with the lowest priority possible. We didn't realize before because idle priority tasks weren't used, but now they are via `requestIdleCallback` and other mechanisms.
The problem was that the timeout for idle priority tasks was `std::chrono:milliseconds::max()`, and we compute the expiration time adding that to the current time. Doing that operation is always guaranteed to overflow, and the resulting expiration time was always in the past, resulting in the task having higher priority than any other tasks with any other priorities.
Instead of using `max()` we can just use a sensible value for idle priorities. In this case, 5 minutes should be more than enough.
Reviewed By: sammy-SC
Differential Revision: D59679513
fbshipit-source-id: 6c0f9e275818737ce804f05615c01f7ea6c126ab
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45396
This diff extends TransformOrigin with a new method to serialize this Struct into a folly::dynamic map (similar to Transform)
changelog: [internal] internal
Reviewed By: sammy-SC
Differential Revision: D59613247
fbshipit-source-id: 00e4a08d1a99fe9cabb67206e21712e65b355f7f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45417
Add sources for `folly::detail::base64` to our existing `folly` dependency for Android and iOS OSS build toolchains, now a (tiny) dependency of the JS debugger since D54309633, and already part of Folly's Buck sources.
Changelog: [Internal]
Reviewed By: cipolleschi, blakef
Differential Revision: D59685218
fbshipit-source-id: bac33402927f310bf867d2c47b4ebbb9276cf545
Summary:
Fixes: https://github.com/facebook/react-native/issues/43413
This pull request addresses an issue on Android where the text selection was not working when both `selectTextOnFocus` and `autoFocus` were set to true on TextInput.
`ReactTextInputManager` was calling `setSelectAllOnFocus` on `ReactEditText` before its onLayout is called causing text selection to not work on auto focus.
Changes Made
- Added logic to wait for the ReactEditText view's layout to be drawn before attempting to select the text.
On the first layout pass, the code now explicitly calls selectAll() to select the text.
- Implemented a check to ensure selectAll() is only called during the first layout pass, avoiding unnecessary calls on subsequent layout passes.
Impact
This change ensures that text selection is properly triggered when selectTextOnFocus and autoFocus are both enabled, improving the user experience and making text input behavior consistent and reliable.
## Changelog:
[ANDROID] [FIXED]: fixed select text on auto focus for TextInput
<!-- 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/45004
Test Plan:
| Before | After |
|--------|--------|
|  |  |
Reviewed By: javache
Differential Revision: D59448600
Pulled By: cortinico
fbshipit-source-id: 8a594d3193f227ba2d64b808d905bab8b3d24e9b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45407
This bumps to the latest minor of Gradle
Changelog:
[Android] [Changed] - Gradle to 8.9
Reviewed By: NickGerleman
Differential Revision: D59677575
fbshipit-source-id: 05b9afc6f32a9cd11461bc04522d1e522644867e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44845
## Design
- `NetworkIOAgent` is owned by the `HostAgent`.
- `NetworkIOAgent` is passed any CDP requests not handled by the `HostAgent` itself, and before delegating to `InstanceAgent`.
- It handles:
- [`Network.loadNetworkResource`](https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-loadNetworkResource)
- [`IO.read`](https://chromedevtools.github.io/devtools-protocol/tot/IO/#method-read)
- [`IO.close`](https://chromedevtools.github.io/devtools-protocol/tot/IO/#method-close)
- `NetworkIOAgent.loadNetworkResource` creates a `Stream` corresponding to a single resource download/upload. A reference is held in a map `streams_` until an error, the agent is disconnected (destroyed) or it is discarded by the frontend with `IO.close`.
- `delegate.loadNetworkResource` is called with a `stream`-scoped executor, which it uses to call back with headers, data and errors.
- Callbacks for `IO.read` requests are held by the `Stream` until the incoming data is complete or enough data is available to fill the request (an implementation choice to optimise for fewest round trips). Any incoming data or error causes any pending requests to be rechecked.
{F1719616688}
## Unimplemented platforms
- Platforms may optionally implement `HostTargetDelegate.networkRequest` (as of this diff, none do). If they don't we report a CDP "not implemented" error, similar to the status quo where it was unimplemented by the C++ agent.
Changelog:
[General][Added] Debugging: implement common C++ layer of CDP `Network.loadNetworkResource`
Reviewed By: motiz88
Differential Revision: D54309633
fbshipit-source-id: 51e416e9d537b253f72693952d5fd520b6ae11b6
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45384
changelog: [internal]
add a little more information to the mounting instructions block
Reviewed By: javache, rubennorte, mdvacca
Differential Revision: D59631537
fbshipit-source-id: 140ba1834172686998c51a9645ea1e66fff1879d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45398
Accidentally left in a value (that Phabricator then hid) which I was using to test fixed prerelease constants in D59141948... On real releases, this is overwritten by the version stamping process.
Changelog: [Internal]
Reviewed By: cipolleschi
Differential Revision: D59668218
fbshipit-source-id: 3d04e52db75a5d8a53cf47d3a2f88b643030d94e
Summary:
After `pod install`, it would set some empty flags, which seems useless. cc cipolleschi .

## Changelog:
[IOS] [FIXED] - Don't set empty string when remove ccache
Pull Request resolved: https://github.com/facebook/react-native/pull/45400
Test Plan: No empty flags should be set after we exec `pod install`.
Reviewed By: cortinico
Differential Revision: D59671357
Pulled By: cipolleschi
fbshipit-source-id: 26b55da9efaeed36876649cc27f09ecafaba412a
Summary:
In recent commits, some new targets have been added, and they are not exposed as prefabs, yet are used in e.g. `TextLayoutManager`. They are needed then for `react-native-live-markdown`: https://github.com/Expensify/react-native-live-markdown/pull/428/commits/c1611cd98ed5009fd66c871b9999b55941086af0
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[ANDROID] [ADDED] - expose prefabs for newly added targets
Pull Request resolved: https://github.com/facebook/react-native/pull/45386
Test Plan: It cannot be tested inside the repo, but try to build the `example` app with new arch enabled on `Android` in the `react-native-live-markdown` repo to see that those are needed.
Reviewed By: NickGerleman
Differential Revision: D59638801
Pulled By: cortinico
fbshipit-source-id: 3d09507d72a0c4d3dbb3a2a81b753625230a04a3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45389
This undos a breaking change with ResourceDrawableIdHelper for Kotlin consumer.
I've re-added a `getInstance` method so that Kotlin libraries won't break.
The method is added as Deprecated as those libraries need to migrate to `.instance`
accessors as more idiomatic.
Changelog:
[Android] [Fixed] - Undo a breaking change with ResourceDrawableIdHelper.instance
Reviewed By: robhogan
Differential Revision: D59638043
fbshipit-source-id: ae2aab962e9a7676f0bfbae21f699e274502dc6a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45390
This undos a breaking change with I18nUtil for Kotlin consumer.
I've re-added a `getInstance` method so that Kotlin libraries won't break.
The method is added as Deprecated as those libraries need to migrate to `.instance`
accessors as more idiomatic.
Changelog:
[Android] [Fixed] - Undo a breaking change with I18nUtil.instance
Reviewed By: alanleedev
Differential Revision: D59638044
fbshipit-source-id: 1c93a98676b5b01e89be3b974961c5f3ae919511
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45388
This undos a breaking change we're about to ship in 0.75, where Kotlin users
where forced to update this callsite to be `.getEntryIterator`.
This re-introduces a `entryIterator` val so both Kotlin and Java compatibility are retained.
Changelog:
[Android] [Fixed] - Undo breaking change for ReadableMap.entryIterator for Kotlin consumers
Reviewed By: alanleedev
Differential Revision: D59637925
fbshipit-source-id: b674df86e056f17791d9cabe28557529886f1c93
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45378
Kotlin consumers of those APIs are forced with this breaking change:
```
# Before thanks to Java property conversion
Dynamic.type
# After
Dynamic.getType()
```
This restores the old more idiomatic API by moving those 2 funcitons to be vals.
Changelog:
[Android] [Fixed] - Undo breaking change on Dynamic.type and Dynamic.isNull
Reviewed By: javache
Differential Revision: D59631783
fbshipit-source-id: 8d720af34e104ee0e4f3120302a4a84fc17a7b1c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45392
In this diff I'm introducing a new overload of Systrace.beginSection to receive arguments by parameter
changelog: [Android][Added] Introduce Systrace.beginSection with arguments
Reviewed By: sammy-SC
Differential Revision: D59639329
fbshipit-source-id: 23d43e5dd48fdde9c7d49a1c10fa9ecc4c3b7196
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45385
We ran various experiments with this flag, and this does not turn out to provide any significant benefits at this point to make it worth the complexity and platform divergence it introduced.
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D58355433
fbshipit-source-id: 4b857a5d0b8aa5915b4a880cbcae2526a16a08a9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45324
Improve concurrency during startup of bridgeless by concurrently initializing eager native modules and triggering bundle load.
Changelog: [Android][Changed] Modules marked with needsEagerInit = true will now be created on the mqt_native thread.
Reviewed By: mdvacca
Differential Revision: D59465977
fbshipit-source-id: 55cc0f0359bafcf32dc538f4346c6a5d5546f658
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45376
This reduces one breaking change users are seeing on `CatalystInstance.getJsCallInvokerHolder`.
I had to specify:
```
Suppress("INAPPLICABLE_JVM_NAME")
get:JvmName("getJSCallInvokerHolder")
```
as the Kotlin compiler is unhappy with me setting a JvmName on a interface property.
More on this here: https://youtrack.jetbrains.com/issue/KT-31420
Changelog:
[Android] [Fixed] - Undo breaking change on `CatalystInstance.getJsCallInvokerHolder`
Reviewed By: javache
Differential Revision: D59631640
fbshipit-source-id: 4d5b3499e4e0e0bec1d380c4b7942ea28ae35465
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45374
This change factors out the language standard in a separate constant so we can easily control it from a single place.
There are only 2 exception to this:
1. hermes-engine: the podspec is used in CI and it has no access to the rct_cxx_language_standard variable
2. Yoga: it can be used as a separate pod, outside of React Native, so it makes sense to leave it alone.
This change also fixes a problem where, in some setup, the language was set to C++14
## Changelog
[Internal] - Refactor Cxx language standard in a single constant
Reviewed By: dmytrorykun, blakef
Differential Revision: D59629061
fbshipit-source-id: 41eac64e47c14e239d8ee78bd88ea30af244d695
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45322
Instead of using multiple weak_ptr and weak_ref, use a single weak_ref to the Java object and use that to get back to the original C++ instance, without the need for additional shared_ptr.
Changelog: [Internal]
Reviewed By: RSNara
Differential Revision: D59465976
fbshipit-source-id: d410bdacf21a1886c6ed95d2c57ac8c6e17428e3
Summary:
Fixes: https://github.com/facebook/react-native/issues/45307
## Changelog:
[Android] [Fixed] - if `npx react-native-community/cli config` fails or timeouts proper error is shown and built is aborted, instead of leaving and empty autolinking.json
During build `npx react-native-community/cli config` is generated into autolinking.json. When command fails, we should error and should not leave and empty `autolinking.json`
Pull Request resolved: https://github.com/facebook/react-native/pull/45333
Test Plan:
Output of the reproducer in https://github.com/facebook/react-native/issues/45307 looks like this:
```log
android % ./gradlew assembleDebug
Starting a Gradle Daemon (subsequent builds will be faster)
ERROR: autolinkLibrariesFromCommand: Failed to create /Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/build/generated/autolinking/autolinking.json - process npx react-native-community/cli config exited with error code: 126
FAILURE: Build failed with an exception.
* Where:
Settings file '/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/settings.gradle' line: 3
* What went wrong:
A problem occurred evaluating settings 'android'.
> ERROR: autolinkLibrariesFromCommand: Failed to create /Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/build/generated/autolinking/autolinking.json - process npx react-native-community/cli config exited with error code: 126
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 10s
8 actionable tasks: 4 executed, 4 up-to-date
```
Output if you modify the package.json to be invalid looks like this:
```log
android % ./gradlew assembleDebug
ERROR: autolinkLibrariesFromCommand: process npx react-native-community/cli config exited with error code: 1
JSONError: JSON Error in /Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/package.json:
35 | "node": ">=18"
36 | },
> 37 | SOMETHING_NON_JSON
| ^
38 | "packageManager": "yarn@3.6.4",
39 | "resolutions": {
40 | "rtn-centered-text": "portal:../RTNCenteredText"
Unexpected token "S" (0x53) in JSON at position 1019 while parsing near "...ode\": \">=18\"\n },\n SOMETHING_NON_JSON\n ..."
35 | "node": ">=18"
36 | },
> 37 | SOMETHING_NON_JSON
| ^
38 | "packageManager": "yarn@3.6.4",
39 | "resolutions": {
40 | "rtn-centered-text": "portal:../RTNCenteredText"
at parseJson (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/parse-json/index.js:29:21)
at loadJson (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/loaders.js:48:16)
at #loadConfiguration (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:116:36)
at #loadConfigFileWithImports (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:87:54)
at #readConfiguration (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:84:82)
at search (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:50:63)
at emplace (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/util.js:36:20)
at ExplorerSync.search (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:78:42)
at getUserDefinedOptionsFromMetaConfig (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/index.js:32:37)
at mergeOptionsBase (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/index.js:60:31)
FAILURE: Build failed with an exception.
* Where:
Settings file '/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/settings.gradle' line: 3
* What went wrong:
A problem occurred evaluating settings 'android'.
> ERROR: autolinkLibrariesFromCommand: process npx react-native-community/cli config exited with error code: 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 2s
8 actionable tasks: 4 executed, 4 up-to-date
```
Reviewed By: cipolleschi
Differential Revision: D59582430
Pulled By: cortinico
fbshipit-source-id: bedb9563175cc5c46f5af80cf309769e56b803cc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45366
This updates ReactImageView to share the background drawing and clipping code used by other built-in components. This means manipulating a background drawable, and clippping at draw time, instead of using Fresco hierarchy background (in view foreground), and radii which manipulate the underlying bitmap.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D59495407
fbshipit-source-id: ce3c975e5ed323fa3d4610ec1515ef3c8dd8b2d1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45356
Subview clipping was disabled for RTL on Android due to a bug where TextInputs automatically blur when selected. This bug is reintroduced when `set_android_layout_direction` is set.
When `set_android_layout_direction` is enabled, and we use View `getLayoutDirection()` instead of `I18nManager.isRTL()`, the layout direction is not known until layer in the mounting process. This defeats the check a `setRemoveClippedSubviews()` prop setter to ignore the prop if the view is RTL (since it doesn't invalidate when a new layout direction is set).
The root cause of the underlying RTL bug is due to updating clipping status triggered by `onSizeChanged()`, which is called before `onLayout()`, where `ReactHorizontalScrollContainerView` offsets content in RTL. This also seems potentially erroneous, as we do not update the clipping rect on position change (unless that is handled elsewhere).
I moved the check to `onLayout()`, called after ReactHorizontalScrollView will change metrics, which seems to fix the issue. I then removed the exclusion in `removeClippedSubviews` prop setter.
Changelog:
[Android][Fixed] - Fix Android removeClippedSubviews in RTL
Reviewed By: mdvacca
Differential Revision: D59566611
fbshipit-source-id: a2eb12b984dc78940756804b6b7a3950377af9de