Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54349
Added comprehensive KDoc documentation to the ComponentNameResolverBinding object and its JNI method for installing component name resolvers into the JavaScript runtime.
changelog: [internal] internal
Reviewed By: lenaic
Differential Revision: D85926888
fbshipit-source-id: 253577d4c5d48bee22acb5666680becd4e632879
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54345
Added comprehensive KDoc documentation to the `FloatUtil` class and its public methods to improve code readability and developer experience.
The documentation explains:
- The purpose of epsilon-based floating-point comparison and why it's necessary
- The role of the EPSILON constant in determining equality
- Special case handling for NaN values (both considered equal when both are NaN)
- Null value handling in the nullable overload
- Method parameters and return values
This documentation will help developers understand the rationale behind using this utility instead of direct float equality comparisons, which can be unreliable due to floating-point precision issues.
changelog: [internal] internal
Reviewed By: lenaic
Differential Revision: D85923748
fbshipit-source-id: d054099de3d9903801aadca4cfcd3127bb6d5297
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54360
## Changelog:
[General] [Fixed] - Fixing an issue with the error LogBox formatting on windows causing text to wrap
Reviewed By: rickhanlonii, yannickl
Differential Revision: D76845667
fbshipit-source-id: 4b1ce705396f9818cbe9be80d521478b5eba632b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54357
Changelog: [Internal] - Ignore whether ScrollView enables subview clipping and just use the drawing rect for forwarding a clippingRect for VirtualView
Reviewed By: yungsters
Differential Revision: D85817030
fbshipit-source-id: e89298d106ec993ce1ca63131da002e0685c34dd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54353
Changelog: [internal]
We have support for the network track in performance traces so we no longer need this custom integration.
Reviewed By: huntie
Differential Revision: D85946500
fbshipit-source-id: 4efa132a6524af6595ddf9f8c2b5651959fa1f94
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54354
Changelog: [internal]
This just renames the tracks for network, etc. to go under a "⚛ Native" track group.
Reviewed By: huntie
Differential Revision: D85946501
fbshipit-source-id: f7ea65bfd84ed4965749f7e22091bcaff38a5bc3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54355
Changelog: [internal]
Small refactor to make sure profiling timespans don't break if there's an exception in one of the listeners.
Reviewed By: huntie
Differential Revision: D85951560
fbshipit-source-id: 162672a7e644893f46a3b0100284bc4125a83757
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54266
Introduces the concept of **Performance Issues**, an experimental performance signals concept for React Native.
**Design**
Performance Issues are an **experimental** user space API via the User Timings `detail` object.
```
performance.measure({
start,
end,
detail: {
devtools: {
...
},
rnPerfIssue: {
name: 'React: Cascading Update',
severity: 'warning', // 'info' | 'warning' | 'error',
description:
'A cascading update is a update that is triggered by a previous update. This can lead to performance issues and should be avoided.',
learnMoreUrl:
'https://react.dev/reference/dev-tools/react-performance-tracks#cascading-updates',
}
}
});
```
When `rnPerfIssue` is present, we eagerly report an the event over CDP, regardless of an active performance trace, via the `"__react_native_perf_issues_reporter"` runtime binding.
**This diff**
- Updates the V2 Perf Monitor UI (Android) to display Performance Issues as a count.
- (UI parts of this diff, including `HostTarget::installPerfIssuesBinding` are reinstated from the previous INP design, removed in D82208400).
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D85448199
fbshipit-source-id: 0cee0eff275219fa46ccf788a6208889d3a0506e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54265
Introduces the concept of **Performance Issues**, an experimental performance signals concept for React Native.
**Design**
Performance Issues are an **experimental** user space API via the User Timings `detail` object.
```
performance.measure({
start,
end,
detail: {
devtools: {
...
},
rnPerfIssue: {
name: 'React: Cascading Update',
severity: 'warning', // 'info' | 'warning' | 'error',
description:
'A cascading update is a update that is triggered by a previous update. This can lead to performance issues and should be avoided.',
learnMoreUrl:
'https://react.dev/reference/dev-tools/react-performance-tracks#cascading-updates',
}
}
});
```
When `rnPerfIssue` is present, we eagerly report an the event over CDP, regardless of an active performance trace, via the `"__react_native_perf_issues_reporter"` runtime binding.
**This diff**
- Adds a `perfIssuesEnabled` feature flag.
- Initial implementation of the above API.
- Initially reports a "Cascading Render" issue, aligning 1:1 with the corresponding React performance track event (note: to be added in the React codebase, see https://github.com/facebook/react/pull/34961).
This feature is gated by the `perfMonitorV2Enabled` feature flag.
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D85448200
fbshipit-source-id: e5aed5138682331e1cd3a713a5f09fb6745138bc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54343
Fixed NotWrittenPrivateField lint warnings in ReactHorizontalScrollView.java by marking three private static fields as final:
- DEBUG_MODE: Changed from `private static boolean` to `private static final boolean`
- TAG: Changed from `private static String` to `private static final String`
- NO_SCROLL_POSITION: Changed from `private static int` to `private static final int`
These fields are initialized once and never modified, making them compile-time constants. Marking them as final follows Java best practices and prevents potential issues with Redex code optimization.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D85904890
fbshipit-source-id: f83a19392a2418d8415936421f1e021316643056
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54342
`-Wswitch-enum` was introduced in 2024 and is beneficial because it will err when switch statement is missing a case for an enum, even with `default:` present. This helps alert developers when they add an enum value of all the switch statements that need updating.
These diffs are to help progress the codebase so that we can enable `-Wswitch-enum` by default in `fbobjc`
## Changelog:
[General] [Fixed] - Add missing value to switch for `-Wswitch-enum` builds
Differential Revision: D85835952
fbshipit-source-id: e56c45895a63325e565315a39ea59df769c4a3ad
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54325
Apps that override ScrollView may need to customize the auto scroll behavior on focus. This adds a protected method for apps that override ReactScrollView to customize focus behaviors.
## Changelog
[Internal]
Reviewed By: joevilches
Differential Revision: D85779339
fbshipit-source-id: 1ba978ed14ceb224ddc1d0da97727ff9702972e7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54262
Similar to `performance.measure()`, Chrome is adding an optional `detail` arg to `console.timeStamp`. Here we implement this for React Native, by direct passing to the `"TimeStamp"` trace event args.
[`console.timeStamp()`](https://developer.mozilla.org/en-US/docs/Web/API/console/timeStamp_static) remains an experimental, non-standard API.
Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D85437162
fbshipit-source-id: 36f5f6207cf205df5a216bde95013ea9540fc082
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54323
Changelog: [internal]
We no longer need to lazily load these modules, because they're always used now.
Reviewed By: lunaleaps
Differential Revision: D85782126
fbshipit-source-id: 263eb234558b90d9cf5c6d55bccb39eb8d1c6a48
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54321
Changelog: [internal]
Just moving some tests from `ReactFabricPublicInstance` to `ReactNativeElement` now that they're only used for that class.
Reviewed By: lunaleaps
Differential Revision: D85782130
fbshipit-source-id: 1445f61df2cbd691e09187b3b122032ad941cd67
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54320
Changelog: [internal]
This class is no longer used after we shipped DOM APIs.
Reviewed By: lunaleaps
Differential Revision: D85782129
fbshipit-source-id: 7ffa33aa1bade777d2b3fb7ae8b7c136376983a7
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54322
Changelog: [internal]
This just cleans up the feature flag, which is set to `true` by default and it's been enabled in `stable` already.
Reviewed By: lunaleaps, yungsters
Differential Revision: D85782127
fbshipit-source-id: 0a6174708066cfe597b4c6dbc8bb33829c6155e9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54324
Changelog: [General][Added] - Enable Web Performance APIs
This promotes the Web Performance APIs from canary to stable.
Reviewed By: cipolleschi
Differential Revision: D85783108
fbshipit-source-id: 8d8b4565f28dc20d63e677c01366f4f37d5c46e4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54328
changelog: [internal]
makes debugging easier if there is name of command.
Reviewed By: christophpurrer, javache
Differential Revision: D85784113
fbshipit-source-id: 14f89ea8b8401dce2dc84d14caaecc6cacda04b2
Summary:
We saw this error while integrating changes in react native windows
https://github.com/microsoft/react-native-windows/issues/15292
Fixed type consistency in cloneMultipleRecursive by using size_t for loop iterator to properly match vector size type, improving type safety when iterating over children nodes.
## Changelog:
[GENERAL][FIXED] - Use size_t instead of int for vector iteration in cloneMultipleRecursive
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
|GENERAL|FIXED|- Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/54318
Reviewed By: christophpurrer
Differential Revision: D85800905
Pulled By: javache
fbshipit-source-id: 2fdb539e1c9af56eebdd5c7a900fa0e697bcab3a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54237
Before we were adding a single pixel for the stretchable area. in RCTViewComponentView we calculate what percentage is 1 pixel from the entire image to create the unit rectangle:
```
CGRect contentsCenter = CGRect{
CGPoint{imageCapInsets.left / imageSize.width, imageCapInsets.top / imageSize.height},
CGSize{(CGFloat)1.0 / imageSize.width, (CGFloat)1.0 / imageSize.height}};
```
However sometimes when dividing `1.0 / imageSize.width` we would get a big enough float that causes a rounding error essentially having part of the border bleed into the stretchable region.
The easiest way to fix this is give the stretchable region a little more space so to prevent the bleeding.
We can do this by rounding the edgeInsets that give the border area its size
The alternative is some shockingly complex math to appropriately calculate the most convenient stretchable area size
Changelog: [Internal]
Reviewed By: cipolleschi
Differential Revision: D85260693
fbshipit-source-id: 50eaba2189f3ff524be730211f8d19023522c68a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54228
## Issue
When prefetching images with the `resizeMethod` prop set, there's a brief period of time where the image has not laid out and the dimensions are 0x0. Since `ImageSource.h` only considers the `type` and `uri` properties for equality, two different `ImageSource` objects would be considered equal despite having different `size`. We would continue on to prefetch the image in its fullest quality and retain that image in `ImageState`, and upon subsequent requests once we have non-zero layouts, we would bail out early in the `ImageShadowNode::updateStateIfNeeded` method since both the old image source and image request params are equal in this case.
## Fix
Rather than adding `size` to the equality check, this change adds identical logic directly from `ReactImageView` to determine if we should postpone the image request: if the image is resizable and we don't have a width or a height, postpone!
## Additional Context
I noodled with a few spots of where this should ultimately live, but this seemed like the least invasive without making some larger refactors. The other approach I considered was to instead return an optional `ImageRequest` object from `ImageManager->requestImage call` to signal that no request was ever made, and using the `ImageRequest` response as part of the equality check.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D85200818
fbshipit-source-id: 82090feb500dafa47af14220a17262d715d20a7a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54326
This variable was not needed, isAttachedToWindow was working as expected.
## Changelog
[Internal]
Reviewed By: Abbondanzo
Differential Revision: D85798355
fbshipit-source-id: 1716b323b4ac0d1d6f3e29370223db66540020d2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54316
Changelog: [internal]
This defines an internal class in Kotlin to access `PerformanceTracer` methods, necessary for platform-specific integrations on Android.
Reviewed By: sbuggay
Differential Revision: D85689126
fbshipit-source-id: 84cb675984b90c677c3a322b191e24cc6b58c74f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54315
Changelog: [internal]
This adds methods to `PerformanceTracer` so consumers can be notified when tracing starts/stop. This is necessary to activate features necessary for tracing that would be costly to enable all the time.
Reviewed By: sbuggay
Differential Revision: D85689124
fbshipit-source-id: 9f9f79162dcb988ac4be02a8911401ce448461a9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54309
We can encounter cases where something is rendered by React but not yet attached to Android at the point focus is called.
If we defer focus until the View is attached to the window, we can avoid apps needing to add annoying timeouts or other creative mechanisms to wait for native mount before calling imperative focus.
The only caveat here is that if you call imperative focus on something offscreen initially that is attached later (e.g., due to clipping), apps could encounter undesirable bugs where focus jumps at the point the previously detached view is now attached. One might also argue it's bug prone to call focus on something that is far offscreen / you don't plan to mount onscreen immediately.
## Changelog
[Android][Fixed] Defers focus until View is attached
Reviewed By: sbuggay
Differential Revision: D85727424
fbshipit-source-id: 677834aa2d9ba2d3247d1e71b3fe0cdd9a6ec4aa
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54313
This change updates the draft release workflow to add dSYMS for Hermes V1 and also updating the url from where the dSYMs can be downloaded.
## Changelog:
[Internal] -
Reviewed By: j-piasecki
Differential Revision: D85758123
fbshipit-source-id: 7d771266de5b3829e9a39c649b610aaf79aa6206
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54295
Sets up a feature flag for keydown/keyup events. Split out from actual work implementing the feature to avoid having to run codegen each commit
Changelog: [Internal]
Reviewed By: alanleedev
Differential Revision: D84938062
fbshipit-source-id: b556f347720b4a651cd321996f2914a9c670c7a1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54307
First of the remaining steps to fully rollout `sweepActiveTouchOnChildNativeGesturesAndroid`. It's already enabled by default everywhere an override is set, letting this bake for a week then going to remove
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D85700377
fbshipit-source-id: 81f5b8679e5562ba6c5dfae331052b181b5258ec
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54292
Sets up a feature flag to experiment with using `useInsertionEffect` in `Pressability`, instead of `useEffect.
Using `useInsertionEffect` enables `Pressability` to behave more predictability in component trees with `<Activity mode="hidden">` because the events are scheduled more similarly to platform controls (e.g. focus and blur events will still fire even when "hidden").
Changelog:
[Internal]
Reviewed By: javache
Differential Revision: D85612742
fbshipit-source-id: c2faab25bfcf7f964521e680eb3c4132c1087ef4
Summary:
An earlier change (0.79 and onwards, I believe?) runs the iOS artifacts code generator script in Xcode as well as from Cocoapods. This duplication runs it twice, but the second step isn't able to load the new `autolinking.json` correctly; See: https://github.com/facebook/react-native/pull/53503
This PR "double" fixes this by:
- simply passing the "real" output directory to the artifacts generator in (`script_phases.sh`) where it's called by Xcode, rather than a temporary directory
- preferring `$RCT_SCRIPT_OUTPUT_DIR` if it's set as an environment variable in the artifacts generator (which it is by `script_phases.sh`)
While this is technically redundant, future changes here make this feel like a safer option, since both conventions overlap in these two places, and the double fix may prevent a regression here in the shortterm and convey what this path is supposed to be in both places.
## Changelog:
[IOS] [FIXED] - Fix autolinking-generated react-native-config output not being used in ReactCodegen script phase due to temp output directory
Pull Request resolved: https://github.com/facebook/react-native/pull/54066
Test Plan:
- Prefer `$RCT_SCRIPT_OUTPUT_DIR` env var for finding `build/generated/autolinking/autolinking.json`
- Always use real `$RCT_SCRIPT_OUTPUT_DIR` as output in `withCodegenDiscovery` in `react_native_pods_utils/script_phases.sh` (which is called by Xcode rather than Cocoapods to invoke the artifacts generator) since the temporary output directory isn't necessary
Reviewed By: javache
Differential Revision: D85673625
Pulled By: cipolleschi
fbshipit-source-id: 9d297fb0ee24f52a0bb7c5a8f41bf770bf63b18f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54303
React 19.2.0 introduces the `useEffectEvent`, which are functions that can be used inside `useEffect` but that should not be listed in the `useEffect` dependencies.
Without this bump, eslint will still tell the user to add the function declared with `useEffectEvent` into the dependency array of a useEffect.
## Changelog:
[General][Changed] - Bump eslint-plugin-react-hooks to 7.0.1
Reviewed By: huntie
Differential Revision: D85658780
fbshipit-source-id: 75860f06a2875b53de61f4f99572277d9d04839f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54290
A few places where we fall through intentionally are implicit. We can make those explicit with `NS_FALLTHROUGH`. Many places, however, are bugs from failing to add a `break` :eek: -- fix those places too.
These are all found via `-Wimplicit-fallthrough`... we will seek to make this an error by default (vs only in `CompilerWarningLevel.MEDIUM` or higher).
## Changelog:
[iOS] [Fixed] - Add missing `break;` to `-[RCTViewManager pointerEvents]`
Reviewed By: philIip
Differential Revision: D85583441
fbshipit-source-id: e8959b27a2e23ccfc6581286257d5d41b18c5630
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54291
We are computing a weighted distance by squaring the major and minor axis distance. For particularly long lists, this means that items that are quite far away have a tendency to overflow the int value when squared, producing a negative number that becomes the smallest weighted distance.
Switching the computed value to double should mitigate the issue, since MAX_DOUBLE >>> MAX_INT ^ 2.
## Changelog
[Android][Fixed] - Resolves an int overflow in findNextFocusableElement
Reviewed By: martinbooth
Differential Revision: D85598005
fbshipit-source-id: 2a5de4e10c21f3d42ae5872d311e714b3f92efad
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54235
Changelog: [Internal]
Reverting `experimental_prefetchResources` back to `experimental_prefetchResource` for simplicity of use
Reviewed By: lenaic, mdvacca
Differential Revision: D85261208
fbshipit-source-id: 1c7705187346a2422dddb5c106fd372a8ee49283
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54244
# Changelog: [Internal]
Refactors the logic a bit.
We will use `Runtime` domain as a signal for installation of `console.createTask()` implementation.
Reviewed By: huntie
Differential Revision: D85274860
fbshipit-source-id: 80c91a8a83ba2b95b70aa38a72529bbd20275c0d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54261
# Changelog: [Internal]
These are actually unused and we've changed the approach - CDP agents do not control tracing status.
Reviewed By: huntie
Differential Revision: D85436029
fbshipit-source-id: faa79bbda92c0e0c55f26389bfe0c6efcf9e76c8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54252
## Changelog:
[Internal] [Added] - pass down isAsync arg to start/stopOnRenderCallback to indicate thread
make it more explicit where start/stopOnRenderCallback is invoked so we can handle it on each platform in a more thread safe way
Reviewed By: lenaic
Differential Revision: D85365058
fbshipit-source-id: 5f0ee1343547fe3466fcd23282e0f27e129a2e7d
Summary:
Fixes https://github.com/facebook/react-native/issues/54168
In React Native 0.82.0, text on Android does not scale down when the system font scale is set to less than 1.0 (e.g., 85%). This regression was introduced when `PixelUtil.toPixelFromSP()` was changed to use `DisplayMetricsHolder.getScreenDisplayMetrics()` instead of `getWindowDisplayMetrics()` in commit [1ad2ec09](https://github.com/facebook/react-native/commit/1ad2ec099ac0ccc7402c37783004fbad3dbe0484).
The issue occurs because:
1. **windowDisplayMetrics** is obtained from `context.resources.displayMetrics` and includes the system font scale from `Configuration`
2. **screenDisplayMetrics** is populated by `Display.getRealMetrics()`, which returns physical display metrics **without** the system font scale setting ([Reference](https://developer.android.com/reference/android/view/Display#getRealMetrics(android.util.DisplayMetrics)))
When `getRealMetrics()` is called, it overwrites the `scaledDensity` value (which is `density * fontScale`), effectively resetting it to just `density` and losing the user's font scale preference.
## 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] [FIXED] - Fix text not scaling down when system fontScale < 1.0
Pull Request resolved: https://github.com/facebook/react-native/pull/54238
Test Plan:
https://github.com/kdwkr/rn-0.82.0-android-layout-scale
Tested with this reproducer
---
Reviewed By: javache
Differential Revision: D85350263
Pulled By: alanleedev
fbshipit-source-id: ff646cf0405f689ff2a9166a1474fdb8b1b85fd6
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54264
Implementing a fantom test covering the correct update of runtime shadow node references when using passChildrenWhenCloningPersistedNodes combined with syncOnCommit.
Changelog: [Internal]
Reviewed By: sbuggay
Differential Revision: D85437783
fbshipit-source-id: adad786e293c1acfe13e3a07ffb210dec0c17292
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54263
When enabling `passChildrenWhenCloningPersistedNodes` and `updateRuntimeShadowNodeReferencesOnCommit`, updates inserting shadow nodes between existing child shadow nodes would result in shadow node reference updates being skipped.
Since `passChildrenWhenCloningPersistedNodes` requires that the react fiber references the mounted shadow node instance at all times, this would result in invalid react renders, bringing back old revisions holding invalid layout metrics.
This diff updates the reference update applied on commit, submitting the updated shadow node references for added shadow nodes. Inserted shadow nodes between existing child shadow nodes will move the previously mounted shadow nodes to the end of the child array. This leads to the `updateMountedFlag` pass to consider these as "added" shadow nodes.
Changelog: [Internal]
Reviewed By: sbuggay
Differential Revision: D85406405
fbshipit-source-id: 7bd9a492fc67549970183c0932cfd7c8b7e61312
Summary:
This PR adds support for background size, position and repeat styles. It follows the [CSS](https://www.w3.org/TR/css-backgrounds-3/#backgrounds) spec. Currently we default to `background-origin: padding-box` and `background-clip : border-box` to match the web's behavior. We can introduce these styles later. I have split the PR intro three parts for review. This PR includes JS parsing and style propagation to native changes. I wanted to introduce one style at a time, but CSS spec is such that size, position and repeat are intertwined.
## Changelog:
[GENERAL][ADDED] - Background size, position and repeat styles.
<!-- 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/52284
Test Plan:
Merge the [iOS](https://github.com/facebook/react-native/pull/52283) and [android](https://github.com/facebook/react-native/pull/52282) PR into this, this PR includes `BackgroundImageExample`. I have also added testcases for parsing syntax in JS.
https://github.com/user-attachments/assets/b7192fdf-52ba-4eb0-a1be-d47c72d87e92
Reviewed By: joevilches
Differential Revision: D82973282
Pulled By: jorge-cab
fbshipit-source-id: a94e33962c6708be963e1cac049da50d4764da64
Summary:
This PR adds support for background size, position and repeat styles. It follows the [CSS](https://www.w3.org/TR/css-backgrounds-3/#backgrounds) spec. Currently we default to `background-origin: padding-box` and `background-clip : border-box` to match the web's behavior. We can introduce these styles later. I have split the PR intro three parts for review. This PR includes android only changes. I wanted to introduce one style at a time, but CSS spec is such that size, position and repeat are intertwined.
## Changelog:
[ANDROID][ADDED] - Background size, position and repeat styles.
<!-- 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/52282
Test Plan:
Merge the [JS](https://github.com/facebook/react-native/pull/52284) PR, rebuild android app and test RNTester app, it includes `BackgroundImageExample`. I have also added testcases for parsing syntax in JS.
https://github.com/user-attachments/assets/b7192fdf-52ba-4eb0-a1be-d47c72d87e92
Reviewed By: joevilches
Differential Revision: D82993837
Pulled By: jorge-cab
fbshipit-source-id: 52859e51d2c4bab27823d3eb913993fdfbb4c04d
Summary:
This PR adds support for background size, position and repeat styles. It follows the [CSS](https://www.w3.org/TR/css-backgrounds-3/#backgrounds) spec. Currently we default to `background-origin: padding-box` and `background-clip : border-box` to match the web's behavior. We can introduce these styles later. I have split the PR intro three parts for review. This PR includes iOS only changes. I wanted to introduce one style at a time, but CSS spec is such that size, position and repeat are intertwined.
## Changelog:
[IOS][ADDED] - Background size, position and repeat styles.
<!-- 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/52283
Test Plan:
Merge the [JS](https://github.com/facebook/react-native/pull/52284) PR, run `pod install` and test RNTester example, it includes `BackgroundImageExample`. I have also added testcases for syntax parsing in JS.
https://github.com/user-attachments/assets/b7192fdf-52ba-4eb0-a1be-d47c72d87e92
Reviewed By: joevilches
Differential Revision: D82993888
Pulled By: jorge-cab
fbshipit-source-id: af545acaf4b9d116b5905f912c494d2e77324380
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54257
When moving Hermes to the Hermes repo, we mistakenly updated the nightly and the publish_release job to depend on an non-existing job
## Changelog:
[Internal] - Fix CI jobs for nightlies and releases
Reviewed By: huntie
Differential Revision: D85422837
fbshipit-source-id: 18d4ef73c80032b55f09f27e4b58b399f0a148c9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54234
Changelog: [Internal]
This feature does not work reliably and caused crashes during experimentation
Reviewed By: lenaic
Differential Revision: D85259390
fbshipit-source-id: 5b3d48e411f1e8fae2ee8c64166b53a28b1211d1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54229
Changelog: [General][Added] Added eslint rule to warn when a non-error is being thrown from a function or rejected for a promise.
Reviewed By: huntie
Differential Revision: D85237916
fbshipit-source-id: e0e4fbc6b4620a19be1959d3953856c7e44ad4e0
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54241
Changelog: [Internal]
Added Hermes version besides information that the app is running using Hermes. This information will be helpful now that Hermes is being published independently from React Native and users are able to choose between two versions at a time (current and V1).
Reviewed By: cipolleschi
Differential Revision: D85333735
fbshipit-source-id: b07b75be3e3d4b5424d4c2185916bac507fc5eca
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54226https://github.com/facebook/react-native/pull/54226
Joysticks, mouse wheels, and trackpads can issue an `ACTION_SCROLL` event when performing scroll. However, the `ACTION_SCROLL` generic motion event does not run the post touch runnable and paging/snap alignment is not honored when these events are received. To fix this, both ScrollView implementations should call `handlePostTouchScrolling` with a 0 velocity, ensuring that momentum events are sent, fabric scroll state is updated, and `flingAndSnap` is properly called to align to a page.
This change adds some checks to queue a runnable that calls `handlePostTouchScrolling` after no more `ACTION_SCROLL` events are received in the same 20ms delay it uses to determine a stable frame. The end result is that snap alignments are correctly honored
Changelog: [Android][Fixed] - Controller-driven scroll events now honor paging/snap alignment
Reviewed By: javache
Differential Revision: D85172309
fbshipit-source-id: 5818777b3c371b3da4aa925a8c840e0da89bf6a4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54236
Changelog[Internal] -
Fix faulty changes made to Interval Tree in previous diff.
The issue was in the right-right rotation case of the internal Interval Tree implementation:
```
// Right heavy
if (bf < -1) {
if (balanceFactor(node.right) > 0) {
node.right =
rotateRight(...)
```
This diff also includes a minor update to logic in IntervalTree's `delete` operation. There was previously a missing `balance` operation.
Reviewed By: lunaleaps
Differential Revision: D85263661
fbshipit-source-id: 8636984161a8668d74973b6aebad9842d4d7f34f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54142
## Changelog:
[Internal] [Added] - Allow passing down frameRateListenerCallback in cxx animated
exposing `frameRateListenerCallback` to add instrumentation at animation frame and stop
we're deferring the actual implementation of frame rate listening/logging to app/platform side
Reviewed By: sammy-SC
Differential Revision: D84510183
fbshipit-source-id: d8835542e8e50c5018032c951a510fec27b5a4d5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54211
## Changelog:
[Internal] [Added] - always invoke onRender via UIManagerNativeAnimatedDelegate
Previously only android invokes `onRender` via UIManagerNativeAnimatedDelegate::runAnimationFrame()
consolidating so it's easier for debugging, also in cases where we want to add extra work per frame (e.g. add performance logging) in AnimatedNodesManagerProvider
Reviewed By: sammy-SC
Differential Revision: D85071075
fbshipit-source-id: 770df523de506c8442d063c417229e36bcf5dd31
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54232
We're not syncing the legacy renderers, which means the React package will continue to move forward while these stay frozen. That means we need to remove the version compatibility checks between react and the legacy ReactNativeRenderers.
Changelog:
[Internal]
Reviewed By: cortinico, cipolleschi
Differential Revision: D85248891
fbshipit-source-id: 19e0812c59f69301e2666e6272c10ac56ecbde1f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53837
Changelog: [Internal]
Replaces usage of Hermes built inside the React Native repository with the release published from the Hermes repo.
Reviewed By: cipolleschi
Differential Revision: D82721725
fbshipit-source-id: 357d5e2b914675ec6e60f810c382a945aa461732
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53985
Changelog: [Internal]
Updates the release scripts to set the Hermes version independently from React Native.
Reviewed By: cipolleschi
Differential Revision: D82438054
fbshipit-source-id: 154c19d1d0d16fd5879ad663428d803ceadc5a1f
Summary:
This is an automatically generated fixup patch to bring fbsource back into sync with
facebook/react's builds/facebook-fbsource branch on GitHub. Land this patch as soon as possible, as the difference
reflected on here is already on GitHub and future changes may depend on these
changes!
<< DO NOT EDIT BELOW THIS LINE >>
diff-train-skip-merge
Generated by: https://www.internalfb.com/intern/sandcastle/job/9007201517475550/
GitHub Repo: facebook/react
# Changelog: [Internal]
Reviewed By: hoxyq
Differential Revision: D84722100
fbshipit-source-id: cbc6f4cdec01124b00ca011b1667c4f7bdb98a37
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54227
All these flags were introduced for rollout purposes. We no longer need them. Let's get rid of them
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D85171189
fbshipit-source-id: 4bd0531dfc3a9841fbe7db9a8f80329e04896e08
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Summary:
Instead of copying the `std::function` into `invokeAsync`, we now move it.
## Changelog:
[GENERAL] [CHANGED] - Move `std::function` into `CallInvoker::invokeAsync` instead of copying it
<!-- 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/54141
Test Plan: Build, run. A lot of code still uses the old `invokeAsync` function.
Reviewed By: christophpurrer
Differential Revision: D84563949
Pulled By: javache
fbshipit-source-id: 283be3d12f1ac1c7f3da528c6b50b36cc81cd82a
Summary:
Avoid data loss during conversion which fixes https://github.com/microsoft/react-native-windows/issues/14698
## Changelog:
Added a one-line fix to static_cast to a float
Pick one each for the category and type tags:
[GENERAL] [FIXED] - Avoid data loss during conversion
Pull Request resolved: https://github.com/facebook/react-native/pull/54132
Test Plan: Working in react native windows
Reviewed By: javache
Differential Revision: D84510049
Pulled By: cortinico
fbshipit-source-id: 37691a9169bf143d19d438e2ce2bbea67f711b3a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53778
I've been looking into the next major bump of AGP to 9:
https://developer.android.com/build/releases/agp-preview#android-gradle-plugin-built-in-kotlin
This change adapts our project so that it keeps on buildign with AGP 8
(as the bump to 9 would be a breaking change), but it addresses some of the build
failures we'll be having with AGP 9:
- Set `resValues` build option to true (default was changed true -> false in AGP 9)
- Opts out our project from `android.builtInKotlin` and `android.newDsl` for the time being.
Changelog:
[Android] [Fixed] - Fix build failures with RNGP due to AGP 9.0.0-alpha05
Reviewed By: alanleedev
Differential Revision: D82452555
fbshipit-source-id: 99561f039bf943f5ce99008ce073ca86431cfaed
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53677
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that runs `prepareHeaders` that configures the headers for React Native and Codegen targets.
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778440
fbshipit-source-id: 26b973c07e82f30663e51c4a8e0e72f54765115e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53676
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that generates codegen artifacts. Those are required by React Native and by the app to build properly.
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778439
fbshipit-source-id: 7fe5cc0b612d2d9324d68fe04ec556e986ec14af
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53675
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that create hardlinks for React Native so it can build from source
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778454
fbshipit-source-id: 702a603629e4fad154b5d79dea6d96fcd80235b9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53674
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function updates the PAckage.swift file to set BUILD_FROM_SOURCE to true
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778460
fbshipit-source-id: b06ebc546aa8e87acdb15706a0559e9046173784
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53673
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that configure React Native to be swift compatible by creating the React-umbrella and modulemap
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778437
fbshipit-source-id: 8bfd0df3abed813a221e5ef7972f4b7a6e292e76
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53667
This change updates the Package.swift file to enable building RNTester and HelloWorld from source.
The set of changes is the following:
- add a BUILD_FROM_SOURCE flag to toggle between building for creating prebuilds and building an app from source
- configure the proper header search path based on whether we want to build an app from source or not
- split the ReactFabricComponents target in multiple subtargets. This is required because when building from source we can't have targets whose Source folder is overlapping.
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778452
fbshipit-source-id: 00553a9966e7d96177e70d45179e712536c23124
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53671
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that prepares the prebuilds for ios so we can leverage them when building from source
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778467
fbshipit-source-id: bacfcfd3d646bfa27dcd800417e4787308a51a86
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53706
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that runs `pod deintegrate` to remove remainings of cocoapods
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778468
fbshipit-source-id: 20e1cfefcef8318d63d4a6ff92050ced0f91ef53
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53669
## Context
When configuring an app to build with SwiftPM from source, there is a sequence of operations we need to run in order to prepare the project correctly.
## Changed
Add a function that given the root of the app and the name of the xcodeproject file, can return the path to the Xcode project file
## Changelog:
[Internal] -
Reviewed By: cortinico
Differential Revision: D81778456
fbshipit-source-id: f7050bcb049d75a5b1cabf340a5b98f4736e60b3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54084
Android port of D83754145.
1. Teaches the native networking module on IOS to track a `devToolsRequestId` along with each request, and use it instead of the internal `requestId` to identify the request to `NetworkReporter`.
2. Uses `__NETWORK_REPORTER__.createDevToolsRequestId` (D83238216) to generate a `devToolsRequestId` from JS and pass it into native. This records a JavaScript call stack as the [initiator](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#type-Initiator) of the request.
Changelog: [Internal]
Reviewed By: huntie
Differential Revision: D83981793
fbshipit-source-id: b4b8828433881c15e44a0468275a5cf398e7d050
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54114
This setup script will be published in the react-native package.
Other people might not have prettier installed, so it will crash the mock below.
Therefore, we wrap this mock in a try-catch.
Changelog: [General][Fixed] Fixed https://github.com/facebook/react-native/issues/54102
Reviewed By: cortinico
Differential Revision: D84292458
fbshipit-source-id: e884b02eec6abb7a964e01dd01f72f6e2ee31dab
Summary:
Update the copyright header in packages/react-native/ReactCommon/yoga/cmake/yoga-config.cmake.in from
```
# Copyright (c) Facebook, Inc. and its affiliates.
```
to
```
# Copyright (c) Meta Platforms, Inc. and affiliates.
```
for consistency with the rest of the codebase. This change does not affect functionality.
close https://github.com/facebook/react-native/issues/54086
## Changelog:
[GENERAL] [CHANGED] - Updated copyright header in Yoga CMake file from Facebook to Meta.
Pull Request resolved: https://github.com/facebook/react-native/pull/54087
Test Plan: Tests Required: No
Reviewed By: robhogan
Differential Revision: D84101874
Pulled By: cortinico
fbshipit-source-id: 534fb700dcbb14d0e91c8c287e8a9af251cba4f9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54101
Changelog:
[Android][Deprecated] Mark `NetworkingModule.sendRequestInternal` as deprecated
The `NetworkingModule.sendRequestInternal` method is an implementation detail of the `sendRequest` method and does not need to be public. In this diff, we mark it as deprecated ahead of removing it from the public API in a future release of React Native.
Reviewed By: javache
Differential Revision: D84250142
fbshipit-source-id: fad62eeae4f9bf06e00578b3cfb6c2c077c08e5c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54115
Horizontal scroll view extensions should be able to customize the scrolling behavior for state restores. This adds the `restoreScrollTo` function that will be called to restore the scroll position to the location provided by the shadow node state.
Changelog: [Internal]
Reviewed By: rozele
Differential Revision: D84310601
fbshipit-source-id: 007caa3d0922a5430ffc6f970eebb180a112f894
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54113
With `Trait::hidden` unmounting and remounting views for shadow nodes holding scroll state, we have to restore the scroll position from the shadow node state when the scroll view is being remounted
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D84291899
fbshipit-source-id: 596839f56757dbdf9485e82380af31a71865e1df
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54112
This diff adds the possibility to control the use of `Trait::Hidden` on Android platforms through feature flags. The feature flag is Android specific and only accessed on Android platforms.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D84289662
fbshipit-source-id: 0ee1d0702aa36df25c842017673176a9c7984b23
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54091
## Changelog:
[Internal] [Changed] - use processor flag -DRN_USE_ANIMATION_BACKEND to gate animation backend dep
So it's only enabled for catalyst and fantom when building with BUCK while gated from other meta apps, and enabled by default in oss version
Reviewed By: sammy-SC
Differential Revision: D84157729
fbshipit-source-id: e822f11c4b64b77b17a698bf3b60b5c5a4faf4f4
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54096
Exporting this since we have some incoming changes to Animated which okwasniewski wants to make and should be applied to CxxAnimated too.
This is not hooked up to any OSS apps yet.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D84200113
fbshipit-source-id: 7a278ebf3f9c2b0779971591804d3fbd89ce4723
Summary:
LayoutDirectionUtil is part of legacy architecutre, in this diff I'm deleting it from fbsource
changelog: [internal] internal
Reviewed By: shwanton, cortinico
Differential Revision: D83984648
fbshipit-source-id: 161e4347ccab160fb1be66cba05f9474c0ad3b72
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54007
## Changelog:
[Android] [Changed] - Defer to responder system to terminate on scroll
when FeatureFlag responderTerminateOnScrollAndroid is turned on
on ios, we don't dispatch TouchCancel at scroll to terminate scrollview's children, instead, responder system handles responder termination when it receives onScroll event
Currently, TouchCancel native event at scroll will stop any ongoing touch events dispatched from native, and will unexpectedly terminate responder even if responder has transferred from child of scrollView to parent view, because of race condition. Fixing this will require revisiting a large part of the native touch system on android.
Reviewed By: sammy-SC
Differential Revision: D83584281
fbshipit-source-id: 10b3c98c30037b50f1705e11aa9ca016a6c3d974
Summary:
In this change, we are allowing users to install cocoapods with the RCT_REMOVE_LEGACY_ARCH flag enabled to compile out the legacy architecture.
For it to work, we had to adjust some part of the framework that we forgot about when working on the internal side of this feature.
bypass-github-export-checks
## Changelog:
[iOS][Added] - Added way to set the RCT_REMOVE_LEGACY_ARCH flag from Cocoapods to compile ou the legacy arch
Pull Request resolved: https://github.com/facebook/react-native/pull/53975
Test Plan:
Tested locally with RNTester and HelloWorld:
```
cd packages/rn-tester
RCT_REMOVE_LEGACY_ARCH=1 bundle exec pod install
open RNTesterPods.xcworkspace
```
Then build and run and verify that the app keeps running.
Same check with Hello World.
Reviewed By: cortinico
Differential Revision: D83471112
Pulled By: cipolleschi
fbshipit-source-id: e5c8fe4eccb3c25510228f20e9e6da3980b0bf0d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54074
Currently, we dispatch view commands eagerly at the beginning of a batch. This behavior originated with https://github.com/facebook/react-native/commit/b54257c628b1a174a2c41960e7fc4d2d719ad731.
However, this can make it difficult to allow developers to control mount item execution order. For example, someone may want to make sure a view command is processed *after* a particular mount item, and not exclusively rely on retryable command exceptions.
This change sets up a feature flag to enable in-order execution of view command mount items.
## Changelog
[Internal]
Reviewed By: mdvacca, sammy-SC
Differential Revision: D84061054
fbshipit-source-id: 7cb68c43823ed67f541f4e8f2d7471629609a905
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54083
Changelog: [Internal]
Fixes a bug in `__DEBUGGER_SESSION_OBSERVER__` where the wrong state could be reported if more than one session existed. Now we reuse the accurate domain status tracking mechanism added in D83847356.
Reviewed By: hoxyq
Differential Revision: D84007326
fbshipit-source-id: e7f2c33286aa69c3bd9d5662d35dad579ca3c770
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54069
Changelog: [Internal]
D83238216 added a `tryExecuteSync` function for use with `EnableExecutorFromThis` objects - concretely, for calling functions on a `weak_ptr<RuntimeTarget>` from the JS thread while ensuring the `RuntimeTarget` is always destroyed on the inspector thread.
`tryExecuteSync` is a generalisation of the lambda-based `delegateExecutorSync` helper from `RuntimeTargetConsole`, so in this diff we refactor the latter to use the more general and better-documented function.
Reviewed By: huntie
Differential Revision: D83838062
fbshipit-source-id: 85fd5a43e204cc634b573e2a3bda47a9ec523fca
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54052
1. Teaches the native networking module on IOS to track a `devToolsRequestId` along with each request, and use it instead of the internal `requestId` to identify the request to `NetworkReporter`.
2. Uses `__NETWORK_REPORTER__.createDevToolsRequestId` (D83238216) to generate a `devToolsRequestId` from JS and pass it into native. This records a JavaScript call stack as the [initiator](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#type-Initiator) of the request.
Changelog: [Internal]
Reviewed By: huntie
Differential Revision: D83754145
fbshipit-source-id: ee08f419d2a7013bbc915ee40b1428d7810e6c42
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54082
Changelog: [Internal]
Followup from D83238216.
Adds bookkeeping in `RuntimeTarget` to allow checking from the JS thread whether there is a session with the `Network` CDP enabled. We then use this in the implementation of `__NETWORK_REPORTER__.createDevToolsRequestId` as a more precise alternative to checking the `NetworkHandler` singleton's state.
This is a first step towards breaking up the `NetworkHandler` singleton, subsuming its responsibilities into the Target/Agent architecture of `jsinspector-modern` and fixing a variety of bugs in the process.
NOTE: The additions to `RuntimeTarget` are more general than just tracking the `Network` domain - I'll use them in an upcoming diff to fix a concrete bug related to concurrent session support in `DebuggerSessionObserver`.
Reviewed By: huntie
Differential Revision: D83847356
fbshipit-source-id: 3384e3feb44adbd9ed4d54a20875669d63ae8764
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54051
Adds the private, experimental `__NETWORK_REPORTER__.createDevToolsRequestId()` JavaScript method behind the Fusebox network inspection feature flag.
`createDevToolsRequestId()` returns a unique string ID for a network request, and records the current call stack as the request's [initiator](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#type-Initiator). If the native networking layer passes the same request ID into the C++ `NetworkReporter::reportRequestStart` method, the corresponding CDP [`requestWillBeSent`](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#event-requestWillBeSent) event will contain the stack trace.
Changelog: [Internal]
Reviewed By: robhogan, huntie
Differential Revision: D83238216
fbshipit-source-id: 5076d887254cd9711f86f72792e791eabc43f297
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54089
Changelog: [Internal]
Adds a minimal standards-compliant UUID v4 generator to `react/utils` for use elsewhere in React Native. We don't need UUID parsing, support for UUID versions other than 4, a UUID value type, or extremely high performance - which makes inlining this simple, portable implementation directly in our codebase acceptable.
Reviewed By: robhogan
Differential Revision: D84149720
fbshipit-source-id: 399d88f4adaff3be4fef5dd1abab3c8552ca1a75
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54092
The `transformOrigin` conversion didn't call into the `toDynamic` conversion for the underlying `ValueUnit` instances for the x and y coordinates. This diff fixes the conversion so that percentages would be correctly converted.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D84165034
fbshipit-source-id: 40bf32a45770cd43fc67103f4c2e9785abffb033
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54093
Changelog: [Internal]
adding a private! api so we can parse text payloads
Reviewed By: mdvacca
Differential Revision: D83939903
fbshipit-source-id: 8f348648f16d53f2bd86046fb0c3689d7bae3d93
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54058
## Changelog:
[Internal] [Changed] - create UIManagerAnimationBackend to replace forward declare `class AnimationBackend`
for other delegates in UIManager, we usually explicitly create an interface in UIManager package with the public APIs we want to expose, we can follow that pattern here, so we avoid the forward declaration without definition situation, and decoupling UIManager with AnimationBackend
also this way, in the future, animation runtimes that consume AnimationBackend can just include `UIManagerAnimationBackend` (where we expose all of public APIs of AnimationBackend) and remain somewhat decoupled too
Reviewed By: sammy-SC
Differential Revision: D83679693
fbshipit-source-id: e58d180b7d36a3f0e766c2914b16128346abe070
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54050
Changelog: [Internal]
A naive approach to keeping track of request initiators inside the `NetworkHandler` singleton for CDP reporting purposes:
1. Expose a new `recordRequestInitiatorStack` method.
2. Keep the CDP-formatted stack trace (as a `folly::dynamic`) in a map keyed by request ID.
3. Destructively consume the stack trace during `onRequestWillBeSent`.
Reviewed By: huntie
Differential Revision: D83754143
fbshipit-source-id: 4f5a335f2eed66a168f9d39a66c8af6ccee23d6f
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54076
Changelog: [Internal]
Add PlatformColor caching so we do not need to make as many JNI calls which helps with perf.
Reviewed By: javache
Differential Revision: D83050864
fbshipit-source-id: 56a53a5facccdbbb3ff18a66df9e07d794bb074c
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54048
Changelog: [Internal]
Adds an engine-agnostic mechanism for serialising a previously captured stack trace as a CDP [`Runtime.StackTrace`](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Runtime#type-StackTrace). This complements the existing `RuntimeTargetDelegate::captureStackTrace` method, which returns an opaque, engine-specific representation of a stack trace.
This can be used as a building block for implementing higher-level CDP message types like [`Network.Initiator`](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#type-Initiator) within React Native, while keeping the underlying stack trace representation private to each engine.
NOTE: This diff includes an implementation for Hermes that duplicates logic from the Hermes codebase. Further up the stack, I have diffs to replace this with a new API to be provided by Hermes.
Reviewed By: huntie
Differential Revision: D83754142
fbshipit-source-id: 1439ea446665562e5f92c7b1dcb6ab65af1324cd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54001
This diff adds support for state restore to the horizontal scroll view. The same logic was applied as for the vertical scroll view. The only difference being that the shadow node for the horizontal scroll view needed to be updated to add `ScrollState`.
Changelog: [Internal]
Reviewed By: rshest
Differential Revision: D83247017
fbshipit-source-id: 7c26901df4c43ed70addc7b6d8afb9a6d3e549a8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54000
Update the scroll view manager to load the fabric state and restore the scroll position and scroll away top padding on mount. Restoring the scroll view happens in the react scroll view state setter, which gets called by the `ReactScrollViewHelper` with the deserialized state provided on mount.
The state loading will happen only until the scroll view itself submits a new state to Fabric (due to scrolling). This guarantees that we only restore the initial state on mount.
This diff also updates the scroll away top padding setter to support setting a new value without triggering a fabric state update.
Changelog: [Internal]
Reviewed By: rshest
Differential Revision: D83247016
fbshipit-source-id: 7ae44b9f69c58da9e5163574073767aea2713b62
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53999
Update the `ScrollViewHelper` class to support reading the scroll state from the provided `stateWrapper` and assigning it to the view implementing the `HasScrollState` interface.
This will be used in a future diff to implement scroll state loading on the scroll view component in the scroll state setter function. This enables having one implementation of the state loading for all variants of the scroll view (vertical and horizontal scroll views).
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D83247018
fbshipit-source-id: 44f10edab2341981b85d6ab8b83c7bea96c1e09d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54077
## Changelog:
[Internal] [Changed] - Extract helper function from AnimatedColor.js to process input color value
Reviewed By: rozele
Differential Revision: D84062952
fbshipit-source-id: 2005dc33d7fd6928ba2638d0d99a2e5faa8448d8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54057
## Changelog:
[General] [Changed] - Move using declarations into AnimationBackend class
names like `facebook::react::Callback` is a bit too generic and it'll be included in the scope whenever AnimationBackend.h is included in; `StartOnRenderCallback` already exists in c++ native animated (there we also nest the `using`s under class)
Reviewed By: sammy-SC
Differential Revision: D83867098
fbshipit-source-id: a50144bbbd1b441e3ef7b2884a19b091c3190c44
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53862
Recently, we observed a `use-after-free race condition` where the ImageFetcher object was destroyed while it was still registered as a UIManagerCommitHook.
The crash occurred in `std::vector::size()` at line 635 when accessing corrupted memory.
Changelog: [Internal]
Reviewed By: lenaic
Differential Revision: D82846245
fbshipit-source-id: fe0d9156ec6bc004339ed987bb5937699ebdf23b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54068
Changelog: [Internal]
Adds a `SessionState::isNetworkDomainEnabled` bit, managed in `HostAgent`, to align with other domains. Network support is still gated behind feature flags as before.
Reviewed By: hoxyq
Differential Revision: D83847357
fbshipit-source-id: 8f94c803d04256a7e41503f2a690e97b91e3ed5e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54062
Renaming every V2 tracing macro so that it no longer has `_V2` suffixed. This diff completes the migration of the hz_tracing V1->V2 API.
This is a very large diff but is comprised of mostly mechanical changes. Most of these files were edited using `find` and `sed`, specifically:
`find . -type f \( -name "*.h" -o -name "*.cpp" \) -exec sed -i 's/HZT_\(.*\)_V2/HZT_\1/g' {} +`.
Since this is just a rename, no difference in functionality is expected.
Changelog: [Internal]
Differential Revision: D83808657
fbshipit-source-id: 64effdf701b1ff600185abfb737f9c0fa2250ddf
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53908
Changelog: [Internal]
Add an example to show how Platform Color can react to changes in appearance.
This currently works on iOS for all colors, but for Android we need to "reset" desired tree with `key`.
Reviewed By: zeyap
Differential Revision: D82751014
fbshipit-source-id: 3e4b2b3ddff8c003ca835d6f26dbf9f7e82d413d
Summary:
Follow up of https://github.com/facebook/react-native/pull/52999 so that users can import `NativeComponentRegistry` from react-native when using typescript
On 0.82 when users try to import `NativeComponentRegistry` without using the Strict TypeScript API they get:
```
Module '"react-native"' has no exported member 'NativeComponentRegistry'.ts(2305)
```
## Changelog:
[GENERAL] [ADDED] - Expose NativeComponentRegistry API to index.d.ts
Pull Request resolved: https://github.com/facebook/react-native/pull/54043
Test Plan: CI should be green
Reviewed By: christophpurrer
Differential Revision: D83830024
Pulled By: huntie
fbshipit-source-id: e63258b30aed4b33b2881656df0ad88a4a7d670a
Summary:
When using gnu coreutils, installation of ReactNativeDependenices on iOS fails at compile time with errors like in the following issue (in the Expo repo):
https://github.com/expo/expo/issues/38992
This is caused by a missing `.` in the end of the path name that the built-in MacOS cp command handles well, but that will create an extra Headers folder when using cp from gnu coreutils.
This commit fixes this by adding the missing `.`
## Changelog:
[IOS] [FIXED] - Fixed issue when using gnu coreutils cp command when using precompiled binaries causing compilation error
Pull Request resolved: https://github.com/facebook/react-native/pull/54063
Test Plan:
- Verify that you're running gnu coreutils (`cp --version`)
- Create new expo app `npx create-expo-app`
- Build on iOS - should error without this fix, should work with the fix.
Reviewed By: christophpurrer
Differential Revision: D83964083
Pulled By: javache
fbshipit-source-id: 46dc074ca9b7fc97fa5a37ef48d68a895e3310ff
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54033
This commit adds support for symbolication of the XCFrameworks on request.
Symbol files are big and only needed if you need to debug React Native itself - f.ex. if you are a framework developer like Expo.
Symbolication can be performed by setting the `RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS=1` environment variable. This will cause the `ReactNativeCoreUtils` class to download symbol files and symbolicate the XFrameworks by doing the following:
- After downloading the requested React.XCFramework the symbols will also be downloaded and places in the artifacts folder.
- The XCFrameworks will be expanded and the folders in the symbol archive will be extracted into the XCFramework before it is zipped up again.
<img width="400" alt="image" src="https://github.com/user-attachments/assets/ec8dd2e1-c7f8-4d5f-a3b6-b8ffbb678c95" />
## Changelog:
[IOS] [FIXED] - Added support for symbolication of precompiled React.xcframework
Test Plan:
```
RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS=1 RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
```
Remember to clean (remove the Pods directory) before turning on/off.
Reviewed By: christophpurrer
Differential Revision: D83753187
Pulled By: cipolleschi
fbshipit-source-id: f1522e1befdea99fb8c65695322ea3ed68e6caed
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54032
This commit adds building blocks to support the symbolication of the XCFrameworks on request.
Symbol files are big and only needed if you need to debug React Native itself - f.ex. if you are a framework developer like Expo.
This change introduces some helper function that are needed to handle the dSYMS:
- `processDSYMs` the main function that unzip the symbols and prepare the framework for them
- `remap_sourcemaps_for_symbols` a support function that creates a mapping symbol -> file so that the debug can interpret them properly
- `generate_plist_content` a support function that generates the plist with all the mappings
These functions are used in the next commit of the stack.
## Changelog:
[Internal] - Added building blocks to support symbolication
Test Plan:
These functions are used in the next commit.
We split the commit to simplify the review. See the Test plan of the next commit to test them.
Reviewed By: cortinico
Differential Revision: D83753189
Pulled By: cipolleschi
fbshipit-source-id: 5d8027f5393a4e5a11f1b736c9901d40e7c5139b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54031
This commit updates the cocoapods source for RNDependencies so that the source for the package is the locally downloaded file so we don't download twice!
## Changelog:
[IOS] [FIXED] - Update the `source`property to avoid multiple downloads
Test Plan:
Run:
```
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
```
Multiple times and observe that the dependencies are not downloaded multiple times.
Reviewed By: christophpurrer
Differential Revision: D83753188
Pulled By: cipolleschi
fbshipit-source-id: e3fedca921b0ff9ba10ec3e5a7ba18dfbdffc3ba
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54036
We are migrating away from the older V1 macros to the V2 macros, which have better code-stripped functionality and less business logic embedded in the API.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D83760301
fbshipit-source-id: b6c9ea155ebe22d6d4ce023a1dbb2cfd52fb8394
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54049
Changelog: [Internal]
Adds `JsiIntegrationTest`-based tests for the C++ layer responsible for handling the CDP `Network` domain. The tests use `NetworkReporter` to mimic the behaviour of a React Native platform that is generating network events.
NOTE: There are **significant problems** with the `NetworkReporter` / `NetworkHandler` singleton design: cross-Host and cross-Instance data pollution/corruption, inability to inspect multiple Hosts at once, inconsistency between the singleton's state and the CDP session's state, etc. The singletons similarly lack any kind of mechanism for test isolation (e.g. methods for clearing state between tests). As we iteratively fix these problems, the tests will require updating (and we'll be able to write stricter tests to cover the fixes).
Reviewed By: huntie
Differential Revision: D83746505
fbshipit-source-id: 7ee3c68e67f0d29587cbfafa98cf107d27065ffc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54042
Update the View component props to diff the `backgroundImage` property and assign the value to `experimental_backgroundImage` which maps to the `backgroundImage` property on the Android `ReactViewManager`.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D83788008
fbshipit-source-id: 5f9d93403af483c9494d2782aedad604cbb7cbbc
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54039
Adding toDynamic conversion to `ColorStop` and `ValueUnit` structs which are being used by the linear and radial gradient data structures.
Changelog: [Internal]
Reviewed By: christophpurrer
Differential Revision: D83788006
fbshipit-source-id: 1ec0300ac4f17b65b6896d4d2c131eb05a059a22
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54044
In rare cases, there may be a vertical ScrollView nested inside another vertical ScrollView. In these cases, when the requestChildFocus method is called, we may attempt to bring the entire focused child into view. However, we really only want to bring the entire nested ScrollView into view.
## Changelog
[Android][Fixed] Focused scroll into view behaviors for nested vertical scroll views
Reviewed By: bvanderhoof
Differential Revision: D83804043
fbshipit-source-id: 8df8f637e7f908cc283f55c0d78ee03ed3bb9117
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54038
This diff adds a Log error to discourage usages of getJSModule(RCTEventEmitter) in new architecture, recommending migration to new API
changelog: [Android][Changed] Add Log error to discourage usages of getJSModule(RCTEventEmitter) API
Reviewed By: shwanton
Differential Revision: D83523928
fbshipit-source-id: d967456087a59366a3bca9590cb4d6d1fdd5b60d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54023
Android 12 introduced a new AlertDialog that better fits a longer list of content.
Android 11 and earlier have an AlertDialog that has a very small list view, requiring users to scroll through to find what they need. This change also fixes Android 12+ enable/disable states on menu items, as it no longer uses `isEnabled` for styling.
Before:
{F1982416953}
After:
{F1982416486}
Android 12:
{F1982430956}
Changelog: [Internal]
Reviewed By: shwanton
Differential Revision: D83688775
fbshipit-source-id: a96120142f648e849be670bde5897c884f1f5f52
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54022
Perf monitor shows in a broken state if metro is started while the app is running. This change improves the tracing and monitor lifecycle around the metro connection events.
Before:
{F1982430185}
After:
{F1982430062}
Changelog: [Internal]
Reviewed By: shwanton
Differential Revision: D83714223
fbshipit-source-id: 76826122924baa1a80c04dcc5ff18bc756a8e816
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54029
Changelog: [Android][Fixed] Fixed `SoLoader` race condition in `InspectorNetworkRequestListener`
When enabling `LoadNetworkResrouce` with flag `nativeSourceCodeFetching` in `InspectorInterfaces.h`, running the app, and opening the debugger, the app was crashing with
```
No implementation found for void com.facebook.react.devsupport.inspector.InspectorNetworkRequestListener.onHeaders(int, java.util.Map)
(
tried
Java_com_facebook_react_devsupport_inspector_InspectorNetworkRequestListener_onHeaders
and
Java_com_facebook_react_devsupport_inspector_InspectorNetworkRequestListener_onHeaders__ILjava_util_Map_2
) - is the library loaded, e.g. System.loadLibrary?
```
Reviewed By: huntie
Differential Revision: D83741114
fbshipit-source-id: b878fb4680e6a51f9403e8dea2872da85254e024
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54019
Currently the performance monitor flickers on boot if there's no metro connection. This change checks first if we have a packager before enabling the monitor.
No metro connection:
{F1982423105}
Metro connection:
{F1982423112}
Changelog: [Internal]
Reviewed By: shwanton
Differential Revision: D83701372
fbshipit-source-id: d099880d3ab509942a937a6bde11ebdde13450cd
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54010
Bump Metro minimum to 0.83.3
This release fixes a regression in loading config files that export promises.
Full changelog: https://github.com/facebook/metro/releases/tag/v0.83.3
Changelog:
[General][Changed] Metro bump to ^0.83.3
Reviewed By: vzaidman
Differential Revision: D83655569
fbshipit-source-id: 106a957620e4591ef3cce21d327886354913560b
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54011
Gets the `jsinspector-modern` (CDP backend) integration tests in React Native to pass when run against all relevant versions of Hermes: Legacy Hermes (`xplat/hermes`), Static Hermes stable (`xplat/shermes/stable`), and Static Hermes trunk (`xplat/static_h`).
This involves disabling the two types of failing test:
1. Tests that should be legitimately disabled because Static Hermes omits the legacy, pre-Fusebox debugger infra (see changes to `ReactInstanceIntegrationTest.cpp`)
2. Tests that should be passing but expose a current bug in Static Hermes (see changes to `JsiIntegrationTest.cpp`)
This provides a useful baseline for upcoming work in CDPDebugAPI (etc) across the different versions of Hermes.
Changelog: [Internal]
Reviewed By: huntie
Differential Revision: D83564896
fbshipit-source-id: c27f02266d63d58983c660ba0e4be5c44f02c9b6
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53787
CoreModulesPackage is part of legacy architecture and unused on new architecture, let's delete it
changelog: [internal] internal
Reviewed By: rshest
Differential Revision: D82235543
fbshipit-source-id: bd18a1e26929c1f4533175d7567c552e142fbebb
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/54009
Packages haven't been bumped on main ahead of 0.83. This takes care of it.
Changelog:
[Internal] [Changed] -
Reviewed By: cipolleschi, huntie
Differential Revision: D83580515
fbshipit-source-id: 7471e77f74e3fb3b4ee6538a49369b5df1393098
Summary:
This diff adds AnimatedProps class that allows prop diffs to be passed to the backend. Currently it is implemented through subclassing, but the implementation details are subject to change. To simplify integration with animation frameworks AnimatedPropsBuilder class was created - frameworks can use it to prepare their diffs.
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[GENERAL] [ADDED] - AnimatedProps.h AnimatedPropsBuilder.h
[GENERAL] [CHANGED] - AnimationBackend initialisation and style updates
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
Pull Request resolved: https://github.com/facebook/react-native/pull/53526
Test Plan:
js1 fantom AnimatedBackend-itest.js
js1 fantom Animated-itest.js
Reviewed By: zeyap
Differential Revision: D81309558
Pulled By: bartlomiejbloniarz
fbshipit-source-id: 92476568b6498d7ee64203f70a17c3e578de7ac1
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53995
### Summary
Exposes the animation backend via UIManager by introducing two new methods: `unstable_setAnimationBackend` and `unstable_getAnimationBackend`. The `NativeAnimatedNodesManagerProvider` is updated to initialize the animation backend using the `useSharedAnimatedBackend` feature flag.
## Changelog:
[GENERAL] [ADDED] - unstable_setAnimationBackend, unstable_getAnimationBackend in UIManager
[GENRAL] [CHANGED] - call unstable_setAnimationBackend in NativeAnimatedNodesManager
Reviewed By: zeyap
Differential Revision: D81137954
fbshipit-source-id: b9a45b1d1e694e28865c27181bcbd578c1b7b9a0
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53996
## Summary
This diff makes changes to the `NativeAnimatedNodesManager` and `AnimationBackend` to initialize the backend closer to the `UIManager`.
## Changelog:
[GENERAL] [CHANGED] - initialize the backend in NativeAnimatedNodesManagerProvider
Reviewed By: sammy-SC
Differential Revision: D81138133
fbshipit-source-id: 5be0c8d5f5e3593bcd8111bbd1d0e90502a53a0d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53994
# Summary
This diff introduces the Shared Animation Backend - a class that can be used by animation frameworks to schedule and run animation updates.
## Changelog:
[GENERAL] [ADDED] - AnimationBackend-itest.js AnimationBackend BUCK/CmakeLists
[GENERAL] [ADDED] - useSharedAnimationBackend feature flag
[GENERAL] [CHANGED] - make AnimatedNodesManager use the backend behind the flag
Reviewed By: zeyap, sammy-SC
Differential Revision: D80809364
fbshipit-source-id: dbfe273362410cdf2f9fc37d78adac7faf4cd118
Summary:
Following the [RFC](https://github.com/react-native-community/discussions-and-proposals/pull/925), this PR adds new `RCTDevMenu` configuration and extends `RCTReactNativeFactory` API for passing it to the particular `RCTHost`. The `RCTDevMenuConfiguration` includes:
- isDevMenuEnabled,
- isShakeGestureEnabled,
- areKeyboardShortcutsEnabled
## Changelog:
[IOS][ADDED] - Add new configuration for `RCTDevMenu`
<!-- 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/53505
Test Plan:
Tested with different configurations on `RCTDevMenuConfiguration`:
<details>
<summary>Click to view code</summary>
```objc
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.reactNativeFactory = [[RCTReactNativeFactory alloc] initWithDelegate:self];
#if USE_OSS_CODEGEN
self.dependencyProvider = [RCTAppDependencyProvider new];
#endif
RCTDevMenuConfiguration *devMenuConfiguration = [[RCTDevMenuConfiguration alloc] initWithDevMenuEnabled:true shakeGestureEnabled:false keyboardShortcutsEnabled:false];
[self.reactNativeFactory setDevMenuConfiguration:devMenuConfiguration];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.reactNativeFactory startReactNativeWithModuleName:@"RNTesterApp"
inWindow:self.window
initialProperties:[self prepareInitialProps]
launchOptions:launchOptions];
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
return YES;
}
```
</details>
Run helloworld:
<img src="https://github.com/user-attachments/assets/16c35176-6fbe-498c-96fd-a0fe988a5e3c" alt="hello-world-screenshot" width="300">
Reviewed By: cipolleschi
Differential Revision: D81684275
Pulled By: coado
fbshipit-source-id: 500e170c93df25949de433970442d20c442be7f2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53998
As the previous few diffs, JSI `isArray` API should follow
`Array.isArray` from the JS spec.
The current implementation does not consider Proxy objects, only Array
exotic objects.
Changelog: [Internal]
Reviewed By: lavenzg
Differential Revision: D83391784
fbshipit-source-id: 6db8e5a48458a1aa57006fb0747f62ec78efa675
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53991
As part of D83474751 to migrate Store from arvr to xplat we discovered that ktx images are not setup correctly in xplat. Adding support for it in flow and jest
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D83562581
fbshipit-source-id: 8c7205417dc24ca2d48a2e2fa1ca7dea40504c18
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53984
Changelog: [ANDROID][CHANGED] - Request layout on configuration change only when the font scale has changed
Wraps call to `requestLayout` in a condition to only run layout when the font scale has changed to prevent it from executing in response to other configuration changes.
Reviewed By: Abbondanzo
Differential Revision: D83546632
fbshipit-source-id: 41a5199dd2ef72b8f6257637c1d35d4a790ea006
2025-09-30 08:40:09 -07:00
1263 changed files with 55000 additions and 39480 deletions
description:This action builds hermesc for Apple platforms
inputs:
hermes-version:
required:true
description:The version of Hermes
react-native-version:
required:true
description:The version of Hermes
slice:
required:true
description:The slice of hermes you want to build. It could be iphone, iphonesimulator, macos, catalyst, appletvos, appletvsimulator, xros, or xrossimulator
flavor:
required:true
description:The flavor we want to build. It can be Debug or Release
needs:[prepare_hermes_workspace, build_hermes_macos, prebuild_apple_dependencies, prebuild_react_native_core]# prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs
needs:[prepare_hermes_workspace, build_hermes_macos, prebuild_apple_dependencies, prebuild_react_native_core]# prepare_hermes_workspace must be there because we need its reference to retrieve a couple of outputs
- **Layout:** Make missing parent view state in updateLayout a soft error ([56ad8d9bfd](https://github.com/facebook/react-native/commit/56ad8d9bfd08ea70bc6f5726a2b4a6afb6d2d7c2) by [@javache](https://github.com/javache))
- **Layout:** Make missing parent view state in updateLayout a soft error ([f2e47d8dab](https://github.com/facebook/react-native/commit/f2e47d8dabcd61621ea81c86cd1e2488948c4229) by [@cipolleschi](https://github.com/cipolleschi))
- Fix regression that skips artifacts code generation ([f6f5ea0b2e](https://github.com/facebook/react-native/commit/f6f5ea0b2eed894725d8f6e8bd045c99c3182026) by [@kitten](https://github.com/kitten))
- Reapplied "Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source" ([bb73315a3f](https://github.com/facebook/react-native/commit/bb73315a3fd8cd203c4ddb3ffa10bfec307c7e92) by [@kitten](https://github.com/kitten))
## v0.82.0-rc.4
### Fixed
- **Hermes V1:** Fixed coordinates for Hermes V1 artifacts ([674fb77d93](https://github.com/facebook/react-native/commit/674fb77d93dfe67a5fe90449dc71b195b1851e13) by [@j-piasecki](https://github.com/j-piasecki))
#### iOS specific
- **Switch:** Fix Switch layout to work with iOS26 ([91d427fe52](https://github.com/facebook/react-native/commit/91d427fe52a307f9aa8579912ef956d61808dad2) by [@cipolleschi](https://github.com/cipolleschi))
## v0.82.0-rc.3
### Added
- **Hermes V1:** Added a dependency on hermes-compiler ([0caf8e70d5](https://github.com/facebook/react-native/commit/0caf8e70d53f611a73ad9b55879dfe0a5f036371) by [@j-piasecki](https://github.com/j-piasecki))
## v0.82.1
### Fixed
#### Android specific
-**Hermes V1:** Changed the coordinates of hermes artifacts when using Hermes V1 ([d0fb33822d](https://github.com/facebook/react-native/commit/d0fb33822de38183895c8b3421f46966909beaf3) by [@j-piasecki](https://github.com/j-piasecki))
-Fixed representation of transforms when view is originally zero-sized ([a81e94a40c](https://github.com/facebook/react-native/commit/a81e94a40ca8dca9e57b562db21f8f235c5b25a0) by [@javache](https://github.com/javache))
#### iOS specific
-**Codegen:** Fix regression that skips artifacts code generation ([f6f5ea0b2e](https://github.com/facebook/react-native/commit/f6f5ea0b2eed894725d8f6e8bd045c99c3182026) by [@kitten](https://github.com/kitten))
-Fixed issue when using gnu coreutils cp command when using precompiled binaries causing compilation error ([068ec39aea](https://github.com/facebook/react-native/commit/068ec39aea543617e5159fe22274b294bfb29026) by [@chrfalch](https://github.com/chrfalch))
## v0.81.3
### Fixed
#### iOS specific
- Reverted "Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source" ([537e3ad930](https://github.com/facebook/react-native/commit/537e3ad93041c0cef959f0d20586fe97818900a6) by [@gabrieldonadel](https://github.com/gabrieldonadel))
## v0.81.2
### Added
#### Android specific
- Create a debugOptimized buildType for Android ([5e3edafec6](https://github.com/facebook/react-native/commit/5e3edafec6c69558521061dced7a6bcd046576b0) by [@cortinico](https://github.com/cortinico))
- Add `useNativeEqualsInNativeReadableArrayAndroid` and `useNativeTransformHelperAndroid` feature flag to the experimental channel. This should alleviate some of the perf issue users are seeing on Android + Reanimated + NewArch on 0.81([a346096da8](https://github.com/facebook/react-native/commit/a346096da81fccf5fbc82d83bfc128695e6ec3a5) by [@cortinico](https://github.com/cortinico))
### Fixed
#### iOS specific
- Fix Node scripts related to prebuilt tarball extraction for paths containing whitespaces ([366f2ad505](https://github.com/facebook/react-native/commit/366f2ad5057ffecc1f5b211f6aae29567ae6b7e5) by [@kitten](https://github.com/kitten))
- Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source ([a2eb29e5e7](https://github.com/facebook/react-native/commit/a2eb29e5e7aef8bbdf4c647c8467b5292b013b20) by [@kitten](https://github.com/kitten))
## v0.82.0-rc.1
### Added
#### Android specific
- **Hermes V1:** Added opt-in to use the new Hermes ([3e9990f860](https://github.com/facebook/react-native/commit/3e9990f860eb9380837ef431ca02def32c4261ad) by [@j-piasecki](https://github.com/j-piasecki))
#### iOS specific
- **Hermes V1:** Added opt-in to use the new Hermes ([e9cdc308b4](https://github.com/facebook/react-native/commit/e9cdc308b4c04753d85757e8877ac00c3c687b95) by [@j-piasecki](https://github.com/j-piasecki))
### Changed
- **Hermes V1:** Changed the source of hermesc binary to be an npm package ([2e0bd13a25](https://github.com/facebook/react-native/commit/2e0bd13a2533fe7ab64125a95b9215b806018c6e) by [@j-piasecki](https://github.com/j-piasecki))
- **Build From Source:** Fix build from source due to missing folder error on Gradle 9.0 ([9fbce3eff1](https://github.com/facebook/react-native/commit/9fbce3eff18060f16e796badc415ba733ede19af) by [@cortinico](https://github.com/cortinico))
- **Prebuild:** Fix Node scripts related to prebuilt tarball extraction for paths containing whitespaces ([9731e8ebc5](https://github.com/facebook/react-native/commit/9731e8ebc5ea87526a91b9903172639e062cd920) by [@kitten](https://github.com/kitten))
- **Prebuild:** Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source ([f170db412b](https://github.com/facebook/react-native/commit/f170db412b3ab46fd0894d5d66431d9c230cd3a8) by [@kitten](https://github.com/kitten))
## v0.82.0-rc.0
## v0.82.0
### Breaking
@@ -99,6 +20,7 @@
- **`CxxSharedModuleWrapper`:** Removed CxxSharedModuleWrapper ([fafbee2402](https://github.com/facebook/react-native/commit/fafbee240235ea0e63eb01abd31ce32d6a576429) by [@javache](https://github.com/javache))
- **DOM API:** Enable DOM APIs in host component refs ([2ad845ccb2](https://github.com/facebook/react-native/commit/2ad845ccb2fea277e05513dcf41407026a8224f0) by [@rubennorte](https://github.com/rubennorte))
- **Error Handling:** Unhandled promises are now handled by ExceptionsManager.handleException, instead of being swallowed as Logbox Warnings. ([c4082c9ce2](https://github.com/facebook/react-native/commit/c4082c9ce208a324c2d011823ca2ba432411aafc) by [@krystofwoldrich](https://github.com/krystofwoldrich))
- **InteractionManager:** InteractionManager has been deprecated and no longer respects interaction handles. Instead, it is now recommended to avoid executing long-running JavaScript tasks by breaking them up into smaller tasks and scheduling them using `requestIdleCallback()`. ([03d9f34a82](https://github.com/facebook/react-native/commit/03d9f34a8252456d389d9f9a3bd04b99a2828c16) by [@yungsters](https://github.com/yungsters))
- **`shouldEmitW3CPointerEvents`:** Migrate `shouldPressibilityUseW3CPointerEventsForHover` to common private feature flags and remove `shouldEmitW3CPointerEvents` flag. ([fb4587780e](https://github.com/facebook/react-native/commit/fb4587780e8d6111139d73598a9a26ff392dee28) by [@coado](https://github.com/coado))
- **TurboModuleUtils:** Remove unused ReactCommon/TurboModuleUtils functions #deepCopyJSIObject and #deepCopyJSIArray ([ead669ade3](https://github.com/facebook/react-native/commit/ead669ade31ee703c407f96c0ce98d8f2991bdc8) by [@christophpurrer](https://github.com/christophpurrer))
- **TurboModules:** Delete old location of CallbackWrapper.h / LongLivedObject.h by ([cb94e71](https://github.com/facebook/react-native/commit/cb94e71845259ae7fa823eb4d21cde74fccd7435) [@christophpurrer](https://github.com/christophpurrer))
@@ -122,6 +44,7 @@
- **API:** Expose NativeComponentRegistry API as JavaScript root export ([f936780cd5](https://github.com/facebook/react-native/commit/f936780cd5c0c17797f9d2bbc8f5cee81c2eefce) by [@zhongwuzw](https://github.com/zhongwuzw))
- **API:** Expose `ReactNativeVersion` API as JavaScript root export ([ec5638abd0](https://github.com/facebook/react-native/commit/ec5638abd0e872be62b6ea5d8df9bed6335c2191) by [@huntie](https://github.com/huntie))
- **Codegen:** Added getDebugProps to codegen ([e547f466ee](https://github.com/facebook/react-native/commit/e547f466ee41415a75ec6b6f910171285ee7bfc3) by [@cipolleschi](https://github.com/cipolleschi))
- **Hermes V1:** Added a dependency on hermes-compiler ([0caf8e70d5](https://github.com/facebook/react-native/commit/0caf8e70d53f611a73ad9b55879dfe0a5f036371) by [@j-piasecki](https://github.com/j-piasecki))
- **Pressable:** Allow setting `blockNativeResponder` on Pressable ([6e4d23ded2](https://github.com/facebook/react-native/commit/6e4d23ded2da4a717bafcc032e3d7a0a5fbe3731) by [@zeyap](https://github.com/zeyap))
- **Yoga/API:** Make yoga/Yoga.h an umbrell header ([8ed2cee80e](https://github.com/facebook/react-native/commit/8ed2cee80e0aaac2f2a6a897ba450888f274a5a4) by [@rudybear](https://github.com/rudybear))
@@ -131,18 +54,23 @@
- **DevMenu:** Add long-press back as an option to open the DevMenu for devices that lack menu & fast-forward. ([32d37f03ad](https://github.com/facebook/react-native/commit/32d37f03ad05290205a4f04d756f6e1880c4ff89) by [@sbuggay](https://github.com/sbuggay))
- **DevTools:** `DevSupportManager::openDebugger` now supports an optional `panel` param determining the starting panel ([7eb3536728](https://github.com/facebook/react-native/commit/7eb3536728c4a20f7e51245f4f7b64aa505bd799) by [@huntie](https://github.com/huntie))
- **DevTools:** Adds a landing view parameter to opening RNDT, enabling arbitrary view focus on launch. ([635c707eec](https://github.com/facebook/react-native/commit/635c707eec18f6d2ceceac2dcee9f458f17f8aab) by [@sbuggay](https://github.com/sbuggay))
- **Hermes V1:** Added opt-in to use the new Hermes ([3e9990f860](https://github.com/facebook/react-native/commit/3e9990f860eb9380837ef431ca02def32c4261ad) by [@j-piasecki](https://github.com/j-piasecki))
- **HWInput:** Channel up/down hardware events. ([c2a3e4420e](https://github.com/facebook/react-native/commit/c2a3e4420e07147f9a040a665da98dbe22b87a2a) by [@sbuggay](https://github.com/sbuggay))
- **Manifest:** Add support to specify a single Manifest rather than 2 (main/debug) by using the `usesCleartextTraffic` manifest placeholder which is autoconfigured by RNGP. ([d89acc1596](https://github.com/facebook/react-native/commit/d89acc1596345534882938d2bbf40275a6cb89bd) by [@cortinico](https://github.com/cortinico))
#### iOS specific
- **API:** Add deprecation message for RCTAppdelegate APIs ([d503ea4efc](https://github.com/facebook/react-native/commit/d503ea4efc84b6511cef2a46421a16e044862e88) by [@cipolleschi](https://github.com/cipolleschi))
- **Fabric:** Add invalidation callback for non-recycled component instances ([dc4a6d2c7e](https://github.com/facebook/react-native/commit/dc4a6d2c7e2ed421b61929896f60b1a864a60d97) by [@kkafar](https://github.com/kkafar))
- **Hermes V1:** Added opt-in to use the new Hermes ([e9cdc308b4](https://github.com/facebook/react-native/commit/e9cdc308b4c04753d85757e8877ac00c3c687b95) by [@j-piasecki](https://github.com/j-piasecki))
- **New Architecture:** Add warning if RCT_NEW_ARCH_ENABLED is set to 0 ([7d0bef2f25](https://github.com/facebook/react-native/commit/7d0bef2f25a206d917e7f5cc2b9a6c088f13a832) by [@cipolleschi](https://github.com/cipolleschi))
- **New Architecture:** Crash the app if they force the legacy architecture. ([dc132a4fd4](https://github.com/facebook/react-native/commit/dc132a4fd4ca8dc28dc7dbb2406ac67dac1a0ee7) by [@cipolleschi](https://github.com/cipolleschi))
### Changed
- **Font:** Enabled `enableFontScaleChangesUpdatingLayout` feature flag by default ([686d14f1d1](https://github.com/facebook/react-native/commit/686d14f1d16c2f02720104ddd395f7d27c908350) by [@j-piasecki](https://github.com/j-piasecki))
- **Hermes:** Changed names of hermes binaries ([776fca1e7c](https://github.com/facebook/react-native/commit/776fca1e7c978a2d8f817d042836073e4dcb4e0e) by [@j-piasecki](https://github.com/j-piasecki))
- **Hermes V1:** Changed the source of hermesc binary to be an npm package ([2e0bd13a25](https://github.com/facebook/react-native/commit/2e0bd13a2533fe7ab64125a95b9215b806018c6e) by [@j-piasecki](https://github.com/j-piasecki))
- **Metro:** Bump Metro to ^0.83.1 ([840fd6c83f](https://github.com/facebook/react-native/commit/840fd6c83f45326a796bf2823f8c2fa942aed06c) by [@robhogan](https://github.com/robhogan))
- **React:** Bumped React to 19.1.1 ([ec5a98b1f5](https://github.com/facebook/react-native/commit/ec5a98b1f5c2137f5f6ff5f5f6706f20384c44df) by [@cipolleschi](https://github.com/cipolleschi))
- **Runtime:** CDP backend now accepts `addBinding` and `removeBinding` methods earlier, before a Runtime exists. ([3271e57c75](https://github.com/facebook/react-native/commit/3271e57c751e7d1193c1e9f7b53e545231511b9d) by [@motiz88](https://github.com/motiz88))
- **StyleSheet:** `StyleSheet.absoluteFillObject` is deprecated in favor of `StyleSheet.absoluteFill` (equivalent). ([83e19813ff](https://github.com/facebook/react-native/commit/83e19813ff5498ab3497d97fe38dba63a5554425) by [@huntie](https://github.com/huntie))
- Deprecate all the c++ classes not used by interop, or the new architecture. ([9539cd2626](https://github.com/facebook/react-native/commit/9539cd26261aef646379104833c7f719e3d83d02) by [@RSNara](https://github.com/RSNara))
@@ -229,6 +158,7 @@
- **Casting:** Casting rawValue to int was incorrectly truncating ([31b9f10364](https://github.com/facebook/react-native/commit/31b9f103645e67586bdfc5c2f590c28c04ca3871) by [@javache](https://github.com/javache))
- **Codegen:** Help Codegen find library's package.json if some libraries using `exports` field in their package.json file and the `./package.json` subpath is not explicitly defined ([739dfd2141](https://github.com/facebook/react-native/commit/739dfd2141015a8126448bda64a559f5bf22672e) by [@RakaDoank](https://github.com/RakaDoank))
- **Hermes:** Change leftover references to `hermes.framework` to `hermesvm.framework` ([7f051c5470](https://github.com/facebook/react-native/commit/7f051c54701b3585f76f63846abbf7e68e2688d2) by [@j-piasecki](https://github.com/j-piasecki))
- **Hermes V1:** Fixed coordinates for Hermes V1 artifacts ([674fb77d93](https://github.com/facebook/react-native/commit/674fb77d93dfe67a5fe90449dc71b195b1851e13) by [@j-piasecki](https://github.com/j-piasecki))
- **Performance Panel:** Fix typo in Performance.js type checking condition ([6caf2dfa38](https://github.com/facebook/react-native/commit/6caf2dfa382fd4f1184b8d21b030c36687a256e4) by [@YangJonghun](https://github.com/YangJonghun))
- **Performance Panel:** Add default cases to switch statements in headers ([323fe3a5d4](https://github.com/facebook/react-native/commit/323fe3a5d471ae5a2f94d5c2bd13cc97feffe0a5) by [@NSProgrammer](https://github.com/NSProgrammer))
- **ReactCommon:** Bring back ContextContainer::Shared = std::shared_ptr<const ContextContainer> alias ([daeb6e99ab](https://github.com/facebook/react-native/commit/daeb6e99abbca2b6395a9a703d2b0bb9e5091fb7) by [@christophpurrer](https://github.com/christophpurrer))
@@ -240,11 +170,13 @@
#### Android specific
- **Accessability:** Stabilize custom accessibility action IDs to prevent "incompatible action" errors in TalkBack. ([626568f9a3](https://github.com/facebook/react-native/commit/626568f9a3f956a52f6c55df1dc3bc5cd017e353) by [@leg234-png](https://github.com/leg234-png))
- **Build From Source:** Fix build from source due to missing folder error on Gradle 9.0 ([9fbce3eff1](https://github.com/facebook/react-native/commit/9fbce3eff18060f16e796badc415ba733ede19af) by [@cortinico](https://github.com/cortinico))
- **Determinism:** Turned off build IDs for native libraries, fixing issues with reproducibility ([4b8dbe7642](https://github.com/facebook/react-native/commit/4b8dbe7642be53d0ccfc68ca8c9b3f5e750a68c0) by [@Rexogamer](https://github.com/Rexogamer))
- **DevTools:** Fix stack trace linkifying failing when using Android emulator and other situations where the device and debugger have different bundle urls ([794df48ad6](https://github.com/facebook/react-native/commit/794df48ad6a259022e66de1a38ff54b5ec67c3e4) by [@vzaidman](https://github.com/vzaidman))
- **Edge to Edge:** Fix `Dimensions``window` values on Android < 15 when edge-to-edge is enabled ([3b185e4bce](https://github.com/facebook/react-native/commit/3b185e4bcef24e0689cccd4cf250d469b114d4da) by [@zoontek](https://github.com/zoontek))
- **Fonts:** Update font scale when recreating `RootView` ([5cda3065ce](https://github.com/facebook/react-native/commit/5cda3065ce635460a7458cbab5c10e24bea3bfe2) by [@j-piasecki](https://github.com/j-piasecki))
- **Fonts:** Fix incorrect positioning of inline view at the end of string when RTL text in LTR container ([7f224941bb](https://github.com/facebook/react-native/commit/7f224941bb807919b487d8e1634dd2124f9258b8) by [@NickGerleman](https://github.com/NickGerleman))
- **Hermes V1:** Changed the coordinates of hermes artifacts when using Hermes V1 ([d0fb33822d](https://github.com/facebook/react-native/commit/d0fb33822de38183895c8b3421f46966909beaf3) by [@j-piasecki](https://github.com/j-piasecki))
- **Locale:** Use the first available locale instead of the default one to decide `isDevicePreferredLanguageRTL` ([a03780d279](https://github.com/facebook/react-native/commit/a03780d279d0944e0dcbbf5a93680775006598b0) by Kaining Zhong)
- **New Architecture:** Correctly account for insets on first render of Modals on New Arch ([2e76fc8e8e](https://github.com/facebook/react-native/commit/2e76fc8e8ea01fbce5bd131f675364e688f49088) by [@cortinico](https://github.com/cortinico))
- **Performance:** Fix mounting is very slow on Android by shipping native transform optimizations ([c557311ed8](https://github.com/facebook/react-native/commit/c557311ed836cded8548c5bca32f3eded0abc7ff) by [@cortinico](https://github.com/cortinico))
@@ -257,13 +189,18 @@
- **Build:** Non-UTF8 crashes Info.plist local frameworks ([91e69b5d4c](https://github.com/facebook/react-native/commit/91e69b5d4c768278680a8d9ae979bc267624ce98) by [@philipheinser](https://github.com/philipheinser))
- **Build:** Fixed variable naming error in `set_fast_float_config` method in `react_native_pods.rb` ([327057fad5](https://github.com/facebook/react-native/commit/327057fad5c78a95e6c039bfe380d78672e83a43) by [@eliotfallon213](https://github.com/eliotfallon213))
- **Build:** Fix pure cocoapods dynamic framework build ([aa4555eaf1](https://github.com/facebook/react-native/commit/aa4555eaf1b6aab83660c600e867fa6c2da4128e) by [@cipolleschi](https://github.com/cipolleschi))
- **Codegen:** Fix regression that skips artifacts code generation ([f6f5ea0b2e](https://github.com/facebook/react-native/commit/f6f5ea0b2eed894725d8f6e8bd045c99c3182026) by [@kitten](https://github.com/kitten))
- **Native Modules:** Fix concurrent calls into resolve/reject inside native modules ([dc879950d1](https://github.com/facebook/react-native/commit/dc879950d196dfd429229f1c4c8e743ef1799d11) by [@RSNara](https://github.com/RSNara))
- **New Architecture:** Fix overriding (xc)framework Info.plist files with RCTNewArchEnabled field ([f84514a88b](https://github.com/facebook/react-native/commit/f84514a88be00f8dcae7972f84aa89d829392a58) by [@msynowski](https://github.com/msynowski))
- **Prebuild:** Fix Node scripts related to prebuilt tarball extraction for paths containing whitespaces ([9731e8ebc5](https://github.com/facebook/react-native/commit/9731e8ebc5ea87526a91b9903172639e062cd920) by [@kitten](https://github.com/kitten))
- **Prebuild:** Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source ([f170db412b](https://github.com/facebook/react-native/commit/f170db412b3ab46fd0894d5d66431d9c230cd3a8) by [@kitten](https://github.com/kitten))
- **RCTPullToRefreshViewComponentView:** Properly initialize the `RCTPullToRefreshViewComponentView` ([27217e8bd6](https://github.com/facebook/react-native/commit/27217e8bd601757b5db6efc022db428b552a2aa4) by [@cipolleschi](https://github.com/cipolleschi))
- **RCTReactNativeFactory:** Ask the delegate for `getModuleForClass` and `getModuleInstanceFromClass` ([85b47afb48](https://github.com/facebook/react-native/commit/85b47afb48e50b036d2c2c79a008f571d3bfcb43) by [@cipolleschi](https://github.com/cipolleschi))
- **ScrollView:** Correctly propagate `ScrollView` props to `RefreshControl` ([09daad27ea](https://github.com/facebook/react-native/commit/09daad27ea22b83fab65176ea3c7f5f1488ba408) by [@cipolleschi](https://github.com/cipolleschi))
- **ScrollView:** Make sure that `ScrollView` recycled refresh control have the right props setup. ([21b93d8d7d](https://github.com/facebook/react-native/commit/21b93d8d7d46a26f728df19764f85a8aebf318bb) by [@cipolleschi](https://github.com/cipolleschi))
- **Switch:** Fixed a crash when rendering the `Switch` component ([28275a0f7b](https://github.com/facebook/react-native/commit/28275a0f7b182a215010d47fb841d9c2c36bb24c) by [@cipolleschi](https://github.com/cipolleschi))
- **Switch:** Fix Switch layout to work with iOS26 ([91d427fe52](https://github.com/facebook/react-native/commit/91d427fe52a307f9aa8579912ef956d61808dad2) by [@cipolleschi](https://github.com/cipolleschi))
- **Text:** Fix selectable prop not working correctly ([f004cd39bc](https://github.com/facebook/react-native/commit/f004cd39bc4b632006085cbcf61df52bc5d25242) by [@iamAbhi-916](https://github.com/iamAbhi-916))
- **TextInput:** Update TextInput recycling logic to clean up the `inputAccessoryView` dependency. ([eb08f54594](https://github.com/facebook/react-native/commit/eb08f545948de9e2eca91ab3cb7569670c553b15) by [@ArturKalach](https://github.com/ArturKalach))
- **TextInput:** Fixed TextInput behavior when `maxLength={null}` is passed ([56ad53cb14](https://github.com/facebook/react-native/commit/56ad53cb14b5c842714fcf976b6ba81f68c140f2) by [@cipolleschi](https://github.com/cipolleschi))
@@ -273,6 +210,39 @@
- **Network:** Fixed vulnerability on undici and on-headers ([dd00c9055a](https://github.com/facebook/react-native/commit/dd00c9055a8f0c9ceac1716385a8a9874f7a4c2e) by [@cipolleschi](https://github.com/cipolleschi))
## v0.81.4
### Fixed
#### iOS specific
- Fix regression that skips artifacts code generation ([f6f5ea0b2e](https://github.com/facebook/react-native/commit/f6f5ea0b2eed894725d8f6e8bd045c99c3182026) by [@kitten](https://github.com/kitten))
- Reapplied "Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source" ([bb73315a3f](https://github.com/facebook/react-native/commit/bb73315a3fd8cd203c4ddb3ffa10bfec307c7e92) by [@kitten](https://github.com/kitten))
## v0.81.3
### Fixed
#### iOS specific
- Reverted "Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source" ([537e3ad930](https://github.com/facebook/react-native/commit/537e3ad93041c0cef959f0d20586fe97818900a6) by [@gabrieldonadel](https://github.com/gabrieldonadel))
## v0.81.2
### Added
#### Android specific
- Create a debugOptimized buildType for Android ([5e3edafec6](https://github.com/facebook/react-native/commit/5e3edafec6c69558521061dced7a6bcd046576b0) by [@cortinico](https://github.com/cortinico))
- Add `useNativeEqualsInNativeReadableArrayAndroid` and `useNativeTransformHelperAndroid` feature flag to the experimental channel. This should alleviate some of the perf issue users are seeing on Android + Reanimated + NewArch on 0.81([a346096da8](https://github.com/facebook/react-native/commit/a346096da81fccf5fbc82d83bfc128695e6ec3a5) by [@cortinico](https://github.com/cortinico))
### Fixed
#### iOS specific
- Fix Node scripts related to prebuilt tarball extraction for paths containing whitespaces ([366f2ad505](https://github.com/facebook/react-native/commit/366f2ad5057ffecc1f5b211f6aae29567ae6b7e5) by [@kitten](https://github.com/kitten))
- Use autolinking-generated react-native-config output in second step of cocoapods linking that generates artifacts and generated source ([a2eb29e5e7](https://github.com/facebook/react-native/commit/a2eb29e5e7aef8bbdf4c647c8467b5292b013b20) by [@kitten](https://github.com/kitten))
## v0.81.1
### Added
@@ -287,7 +257,6 @@
- **Infra:** Add missing Babel dependencies ([bf2c3af93b](https://github.com/facebook/react-native/commit/bf2c3af93b146943cb35866fa9badcd188e63f5b) by [@tido64](https://github.com/tido64))
- **Accessibility:** fix `aria-label` on `TextInput` ([6965d57e75](https://github.com/facebook/react-native/commit/6965d57e75ed0cf9f265c6020d478ddb9af4bf10) by [@mdjastrzebski](https://github.com/mdjastrzebski))
#### iOS specific
- **TextInput:** Setting maxLength to 0 in TextInput now correctly blocks typing ([c5956da8c0](https://github.com/facebook/react-native/commit/c5956da8c0b735d47761af51019ed25b49001c00) by [@riteshshukla04](https://github.com/riteshshukla04))
@@ -301,7 +270,6 @@
- **Prebuild:** Fix "file exists" error in `ReactNativeDependencies.podspec` ([4c570b5d31](https://github.com/facebook/react-native/commit/4c570b5d31ef46e04e5fa26fa92d7f7090bf15e2) by [@vonovak](https://github.com/vonovak))
- **Prebuild:** added explicit handling of ReactCodegen ([6526a98d68](https://github.com/facebook/react-native/commit/6526a98d68dbc8578ea15cbf117c0a216c6e9af0) by [@cipolleschi](https://github.com/cipolleschi))
## v0.81.0
### Breaking
@@ -856,6 +824,10 @@
- **Text:** Selection range not respected when changing text or selection when selection is forced ([d32ea66e6a](https://github.com/facebook/react-native/commit/d32ea66e6a945dd84092532401b265b12d482668) by Olivier Bouillet)
- **TextInput:** Fix TextInput `onContentSizeChange` event being dispatched only once on iOS on the new architecture ([5fd5188172](https://github.com/facebook/react-native/commit/5fd51881727b2d86f87abf04db032940ac0ec8c4) by [@j-piasecki](https://github.com/j-piasecki))
import*asefrom"../root/root.js";constt=e.Runtime.RNExperimentName,n={didInitializeExperiments:!1,isReactNativeEntryPoint:!1};classi{name;title;unstable;docLink;feedbackLink;enabledByDefault;constructor(e){this.name=e.name,this.title=e.title,this.unstable=e.unstable,this.docLink=e.docLink,this.feedbackLink=e.feedbackLink,this.enabledByDefault=function(e,t){if(null==e)return()=>t;if("boolean"==typeofe)return()=>e;returne}(e.enabledByDefault,!1)}}constr=newclass{#e=newMap;#t=newSet;register(e){if(n.didInitializeExperiments)thrownewError("Experiments must be registered before constructing MainImpl");const{name:t}=e;if(this.#e.has(t))thrownewError(`React Native Experiment ${t} is already registered`);this.#e.set(t,newi(e))}enableExperimentsByDefault(e){if(n.didInitializeExperiments)thrownewError("Experiments must be configured before constructing MainImpl");for(constnofe)if(Object.prototype.hasOwnProperty.call(t,n)){conste=this.#e.get(n);if(!e)thrownewError(`React Native Experiment ${n} is not registered`);e.enabledByDefault=()=>!0}elsethis.#t.add(n)}copyInto(e,t=""){for(const[i,r]ofthis.#e)e.register(i,t+r.title,r.unstable,r.docLink,r.feedbackLink),r.enabledByDefault({isReactNativeEntryPoint:n.isReactNativeEntryPoint})&&e.enableExperimentsByDefault([i]);for(consttofthis.#t)e.enableExperimentsByDefault([t]);n.didInitializeExperiments=!0}};r.register({name:t.JS_HEAP_PROFILER_ENABLE,title:"Enable Heap Profiler (Memory Panel)",unstable:!1,enabledByDefault:({isReactNativeEntryPoint:e})=>!e}),r.register({name:t.REACT_NATIVE_SPECIFIC_UI,title:"Show React Native-specific UI",unstable:!1,enabledByDefault:({isReactNativeEntryPoint:e})=>e}),r.register({name:t.ENABLE_PERFORMANCE_PANEL,title:"Enable Performance panel",unstable:!0,enabledByDefault:({isReactNativeEntryPoint:e})=>!e}),r.register({name:t.ENABLE_NETWORK_PANEL,title:"Enable Network panel",unstable:!0,enabledByDefault:()=>!1});vara=Object.freeze({__proto__:null,Instance:r,RNExperimentName:t,setIsReactNativeEntryPoint:function(e){if(n.didInitializeExperiments)thrownewError("setIsReactNativeEntryPoint must be called before constructing MainImpl");n.isReactNativeEntryPoint=e}});export{aasRNExperimentsImpl};
import*asefrom"../root/root.js";constt=e.Runtime.RNExperimentName,i={didInitializeExperiments:!1,isReactNativeEntryPoint:!1};classn{name;title;unstable;docLink;feedbackLink;enabledByDefault;constructor(e){this.name=e.name,this.title=e.title,this.unstable=e.unstable,this.docLink=e.docLink,this.feedbackLink=e.feedbackLink,this.enabledByDefault=function(e,t){if(null==e)return()=>t;if("boolean"==typeofe)return()=>e;returne}(e.enabledByDefault,!1)}}constr=newclass{#e=newMap;#t=newSet;register(e){if(i.didInitializeExperiments)thrownewError("Experiments must be registered before constructing MainImpl");const{name:t}=e;if(this.#e.has(t))thrownewError(`React Native Experiment ${t} is already registered`);this.#e.set(t,newn(e))}enableExperimentsByDefault(e){if(i.didInitializeExperiments)thrownewError("Experiments must be configured before constructing MainImpl");for(constiofe)if(Object.prototype.hasOwnProperty.call(t,i)){conste=this.#e.get(i);if(!e)thrownewError(`React Native Experiment ${i} is not registered`);e.enabledByDefault=()=>!0}elsethis.#t.add(i)}copyInto(e,t=""){for(const[n,r]ofthis.#e)e.register(n,t+r.title,r.unstable,r.docLink,r.feedbackLink),r.enabledByDefault({isReactNativeEntryPoint:i.isReactNativeEntryPoint})&&e.enableExperimentsByDefault([n]);for(consttofthis.#t)e.enableExperimentsByDefault([t]);i.didInitializeExperiments=!0}};r.register({name:t.JS_HEAP_PROFILER_ENABLE,title:"Enable Heap Profiler (Memory Panel)",unstable:!1,enabledByDefault:({isReactNativeEntryPoint:e})=>!e}),r.register({name:t.REACT_NATIVE_SPECIFIC_UI,title:"Show React Native-specific UI",unstable:!1,enabledByDefault:({isReactNativeEntryPoint:e})=>e}),r.register({name:t.ENABLE_NETWORK_PANEL,title:"Enable Network panel",unstable:!0,enabledByDefault:()=>!1});vara=Object.freeze({__proto__:null,Instance:r,RNExperimentName:t,setIsReactNativeEntryPoint:function(e){if(i.didInitializeExperiments)thrownewError("setIsReactNativeEntryPoint must be called before constructing MainImpl");i.isReactNativeEntryPoint=e}});export{aasRNExperimentsImpl};
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.