Commit Graph
31700 Commits
Author SHA1 Message Date
Nick GerlemanandFacebook GitHub Bot 355ca28b5d Reland: Sanitize measure function results
Summary:
D57285584 was reverted because we have service code with a faulty measure function, and adding logging to Yoga when invalid measurements were received was enough to spike error rate to elevated levels and block release.

This is a reland of the below change, with a couple modifications:
1. We log warnings instead of errors, which from what I heard, shouldn't block release, but should still make signal
2. We only zero the dimension which was NaN, to preserve exact behavior

## Original

We've started seeing assertion failures in Yoga where a `NaN` value makes its way to an `availableHeight` constraint when measuring Litho tree.

Because it's only happening on Litho, I have some suspicion this might be originating from a Litho-specific measure function. This adds sanitization in Yoga to measure function results, where we will log an error, and set size to zero, if either dimension ends up being negative of `NaN`.

This doesn't really help track down where the error was happening, but Yoga doesn't have great context to show this to begin with. If we see this is issue, next steps would be Litho internal intrumentation to find culprit.

Changelog: [Internal]

Reviewed By: sbuggay

Differential Revision: D57473295

fbshipit-source-id: 979f1b9a51f5550a8d3ca534276ec191a3cb7b9e
2024-05-17 19:12:13 -07:00
Oleh MalanchukandFacebook GitHub Bot af721084af Fix SurfaceMountingManager leaking activity from stopped surfaces (#44584)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44584

Changelog: [Android][Fixed] Surfaces no longer leak activity once stopped

Reviewed By: javache

Differential Revision: D57367419

fbshipit-source-id: 7aa69256284f97679ebcc3309f2b74650ec3fb51
2024-05-17 16:36:27 -07:00
Nick GerlemanandFacebook GitHub Bot 044aadbaf6 Fix bad merge of I18nUtil (#44600)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44600

I didn't pay close enough attention during merge between V1 and V2 of D57248205, and what I ultimately checked in is not correct. Fix the logic here.

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D57488372

fbshipit-source-id: c9db597a6ae4ca5ae81e6ccd9913a14be268dd57
2024-05-17 06:20:29 -07:00
Blake FriedmanandFacebook GitHub Bot 355fe7717c mark hasRtlSupport as public API (#44599)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44599

Contributed in D57248205 / facebook/react-native#44538

From:
```
buck2 run //xplat/js/scripts/rn-api:generate-rn-api-metadata
```

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D57487065

fbshipit-source-id: 35308c7a1ef7368b4b1792fe26cf057e45de1360
2024-05-17 03:40:28 -07:00
NishanandFacebook GitHub Bot f997b81288 feat(iOS/fabric): percentage support in translate (#43192)
Summary:
This PR adds percentage support in translate properties for new arch iOS. Isolating this PR for easier reviews.

The approach taken here introduces usage of `ValueUnit` struct for transform operations so it can support `%` in translates and delay the generation of actual transform matrix until view dimensions are known. I have tried to keep the changes minimal and reuse existing APIs, open to changes if there's an alternative approach.

## Changelog:
[IOS] [ADDED] - Percentage support in translate in new arch.
<!-- 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/43192

Test Plan:
- Checkout TransformExample.js -> Translate percentage example.
- Added a simple test in `processTransform-test.js`. The regex is not perfect (values like 20px%, 20%px will pass, can be improved, let me know!)

Related PRs - https://github.com/facebook/react-native/pull/43193, https://github.com/facebook/react-native/pull/43191

Reviewed By: javache

Differential Revision: D56802425

Pulled By: NickGerleman

fbshipit-source-id: 978cbbdde004afe1e68ffee9a3c7eb7d16336b46
2024-05-16 19:35:15 -07:00
Nick GerlemanandFacebook GitHub Bot 82c6f8a580 Set and require android:supportsRtl="true" for RTL layout (#44538)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44538

Android originated without RTL support. When RTL support was added, Applications needed to set `android:supportsRtl="true"` in their manifest, to allow Android to do RTL specific layout and drawing. This became the default for new projects created by Android Studio at some point.

React Native was not setting this in template, which means apps created from it do not do any of Android's RTL layout, text alignment, or drawing (e.g. in D3652980 8 years ago, a native drawer component came from the wrong side of the screen). RN would still layout the app using Yoga in RTL if in RTL locale though.

This change sets `android:supportsRtl` in template matching default new Android projects, and to avoid mismatched states in the future, will only tell I18NManager that RTL is allowed if `android:supportsRtl` is also set. This is breaking, since existing apps may not get Yoga RTL support unless telling Android that the application should support RTL layout.

Changelog:
[Android][Breaking] - Set and require `android:supportsRtl="true"` for RTL layout

Reviewed By: joevilches

Differential Revision: D57248205

fbshipit-source-id: 3f60c9f855db26f8d34a2e05d460f95961f5ffeb
2024-05-16 19:06:18 -07:00
Nick GerlemanandFacebook GitHub Bot 258b481ae5 Revise ComponentValue parsing model (#44561)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44561

D57089275 introduced a layer to parse component values out of the token stream. I modeled this similar to the tokenizer, as a flat iterator of component values. Because function components can nest a variable number of child component values, this now looks like storing a fully resolved tree of tokens on the heap during parsing.

This diff changes the model, so that `CSSSyntaxParser::consumeComponentValue()` no longer returns a resolved CSS function value. Instead, users of the parser are expected to provide "visitors" which continue parsing, matched based on component value type pattern matched. Visitors can perform parsing specific to their context, and propagate values up the stack, based on their evaluation of the component value.

Removing the heap allocated list of tokens here also lets this core CSS parsing stack keep constexpr, so I added that back, though we need to keep expression trees for math expressions in uncommon cases, so the layer up probaly won't keep constexpr.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D57206706

fbshipit-source-id: 25db84d376ef18f6291e60ed953e29c4000a7a26
2024-05-16 15:19:25 -07:00
Blake FriedmanandFacebook GitHub Bot 0c7095faa3 Fix ReadableNativeMap linting warning (#44596)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44596

Minor fix to get CI running again.

Changelog: [Internal]

Reviewed By: GijsWeterings

Differential Revision: D57454420

fbshipit-source-id: be80fbc8e899ad9aaeafa2cf63fbb6cd4ce32269
2024-05-16 14:17:46 -07:00
Blake FriedmanandFacebook GitHub Bot 1aabefc5b3 build and install an iOS app (#44465)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44465

Allows us to `yarn build ios` the helloworld app.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D57067038

fbshipit-source-id: 3e2f3184a698fc5f39da9949c1ee17bd2b2ca7f5
2024-05-16 12:57:09 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 6b2e5df382 Migrate *NativeMap classes to Kotlin (#44581)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44581

# Changelog:
[Internal] -

This converts the vertical of NativeArray/ReadableNativeArray/WritableNativeArray classes to Kotlin.

Reviewed By: javache

Differential Revision: D57329244

fbshipit-source-id: 8c6b8138801c6e07c21da65a2dbf1dcb7e0f2183
2024-05-16 09:50:08 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 44bac48ed6 Kotlinify functional interfaces in react.bridge (#44546)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44546

# Changelog:
[Internal] -

This is the first chunk of moving all of the interfaces to Kotlin inside `react.bridge`, covering the small-ish (functional/SAM and such) interfaces.

Reviewed By: javache

Differential Revision: D57253634

fbshipit-source-id: aa26d26b9681ac7c6059c249b985ff5121ad1e9d
2024-05-16 07:13:50 -07:00
Blake FriedmanandFacebook GitHub Bot c481bce649 Add getEntries API to breaking-change-detector (#44592)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44592

The breaking change detector snapshot update to include getEntries:

  buck2 run //xplat/js/scripts/rn-api:generate-rn-api-metadata

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D57436792

fbshipit-source-id: c910dc145ef49ac4836918f4ec4d6d7020e7ec0f
2024-05-16 06:22:01 -07:00
Pieter De BaetsandFacebook GitHub Bot 0bf8c6e422 Stub more methods of performance API (#44583)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44583

This native module is only available in the new architecture, stub the methods elsewhere.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D57382785

fbshipit-source-id: f6c988bcfd12633697b45a1f862b2cd4fb5d00d4
2024-05-16 02:57:45 -07:00
abingandFacebook GitHub Bot 16775215d5 Fix RCTPerfMonitor not showing up in scene based app (#43476)
Summary:
Currently RCTPerfMonitor won't show up in scene based app, we should first try to extract the window from the connected scenes, and fallback to the window in `UIApplicationDelegate`.

## 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
-->

[iOS] [Fixed] - Fix RCTPerfMonitor not showing up in scene based app

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

Test Plan:
- Tested RCTPerfMonitor in app not using scenes;
- Tested RCTPerfMonitor in app using scenes in iOS 13 & 14;
- Tested RCTPerfMonitor in app using scenes in iOS 15+.

Reviewed By: rshest

Differential Revision: D57381551

Pulled By: javache

fbshipit-source-id: fd6cce20c9a4ed41d7aae84751fc0c83391d0865
2024-05-16 02:52:21 -07:00
SvenandFacebook GitHub Bot 46d4b837a5 fix hint when using createRootViewWithBridge to show correct method name (#44585)
Summary:
I used the `createRootViewWithBridge` in a Project and got the hint to migrate to the `customiseView` Method. I searched for the Method, but found it under a different name: `customizeRootView`.
So i thought it would be helpful to use the correct Method name inside the hint message.

## Changelog:
<!-- 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
-->
[IOS] [FIXED] - fixed Method name in hint from customiseView to customizeRootView

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

Test Plan:
* Use `createRootViewWithBridge`
* Should get a hint to migrate to `customizeRootView` method

Reviewed By: fabriziocucci

Differential Revision: D57431185

Pulled By: javache

fbshipit-source-id: 14f8c33771551ea3fb66d2c8f3fce4b4e3ef962a
2024-05-16 02:29:43 -07:00
Ramanpreet NaraandFacebook GitHub Bot d94c4c46f2 Keep ReactImageView logging disabled in bridgeless (#44578)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44578

In bridgeless mode, when we fix themed react context, this code-path slows rendering (in dev), starting a feedback loop.

Best understanding of feedback loop:
1. Some code tries to render an <Image/> component.
2. Fabric preallocates the <Image/> component, assigns a null src to the image.
3. The image component warns that there's no src: [RNLog.w](https://www.internalfb.com/code/fbsource/[8cf3936aee379b1f5fa31cc8f02745ceafa72ff3]/xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java?lines=603-609).
4. **Prior to the themed react context fix,** RNLog.w() would just noop: this [ThemedReactContext.hasActiveReactInstance()](https://www.internalfb.com/code/fbsource/[19ba3ff63f5342a4ba86e18f2e790c69c6cfc7e1]/xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/util/RNLog.kt?lines=93-95) returned false.
5. **After the themed react context fix,** RNLog.w() dispatches a [native -> javascript call](https://github.com/facebook/react-native/blob/44f9371f246932215627a7ea01fbedf5c13e3019/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/util/RNLog.kt#L94). This renders a LogBox.
6. LogBox renders a <Image/>, which re-starts this loop.

We're not sure what the right long-term solution here is. But, I will follow up! But, until then, it's important that we unblock the ThemedReactContext fix.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D56970919

fbshipit-source-id: 26f0cf0acaf6647ded26e6c816483b9ea3e4f4c2
2024-05-15 17:25:39 -07:00
Pieter De BaetsandFacebook GitHub Bot ad4c39ec94 Revert D57329165: Shortcut emitDeviceEvent in bridgeless
Differential Revision:
D57329165

Original commit changeset: 6506a7afb522

Original Phabricator Diff: D57329165

fbshipit-source-id: 98fb81b7c16a2330f1bd58ad6bbfee6f04934b57
2024-05-15 08:43:59 -07:00
Donald RoshiandFacebook GitHub Bot 86dffb3f15 fix(ios) use condensed system font (#43188)
Summary:
The current implementation does not support System font variants. Currently the isCondensed variable is always returning false. This pr adds an extra check to support the 'SystemCondensed' font variant on iOS.

## 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
-->

[IOS][ADDED] - Update font to handle system condensed variant

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

Test Plan:
```
<Text style={{ fontSize: 28, fontFamily: 'System' }}>System</Text>
<Text style={{ fontSize: 28, fontFamily: 'SystemCondensed' }}>SystemCondensed</Text>
<Text style={{ fontSize: 28, fontFamily: 'AmericanTypewriter-Condensed' }}>AmericanTypewriter-Condensed</Text>
<Text style={{ fontSize: 28, fontFamily: 'HelveticaNeue' }}>HelveticaNeue</Text>
<Text style={{ fontSize: 28, fontFamily: 'HelveticaNeue-CondensedBold' }}>HelveticaNeue-CondensedBold</Text>
```
![Simulator Screenshot - iPhone 15 Pro - 2024-02-26 at 17 56 40](https://github.com/facebook/react-native/assets/63480001/36daea22-2e75-4526-8b2d-f0555fbf2441)

Reviewed By: fabriziocucci

Differential Revision: D57329036

Pulled By: javache

fbshipit-source-id: b0fffde1a568cb498f907e0a007df4da3e11d586
2024-05-15 05:15:25 -07:00
Pieter De BaetsandFacebook GitHub Bot 524e3eec3e Fix bridgeless triggering reloads twice from BridgelessDevSupportManager (#44554)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44554

Noticed than when reload is triggered by Metro (`handleReloadJS`), the application would often get stuck and not respond to further reload commands. Often an IOException would get printed as well, due to concurrent bundle loads happening.

Changelog: [Android][Fixed] Improved resiliency of reloads when bundle loading fails

Reviewed By: RSNara

Differential Revision: D57112152

fbshipit-source-id: b0bf8c8311264504684a137c0910e2eeb008b0c7
2024-05-15 03:47:13 -07:00
Pieter De BaetsandFacebook GitHub Bot d0bb396ddb Shortcut emitDeviceEvent in bridgeless (#44574)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44574

`emitDeviceEvent` is frequently used for perf-critical operations such as sending network responses from native to JS. We don't need to go through JavaScriptModule Proxy (which is missing caching in bridgeless) and instead can immediately invoke the callable JS module.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D57329165

fbshipit-source-id: 6506a7afb522b672a1f3dc7d348c9b80e6734225
2024-05-15 02:03:46 -07:00
Tim YungandFacebook GitHub Bot 95f7a5c597 RN: Delete AnimationsDebugModule (#44577)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44577

There are no references to `AnimationsDebugModule` and it is also no longer public, so it is dead code. This cleans it up.

Changelog:
[Android][Removed] - Removed `NativeAnimationsDebugModule` (already not Public API)

Differential Revision: D57351893

fbshipit-source-id: 5a78a3b8e93a87ccb0cd5cdf8d2308d6c53d0ffa
2024-05-14 18:05:49 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 734ac42d61 Kotlinify react.bridge.CatalystInstance interface (#44545)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44545

# Changelog:
[Internal] -

As in the title.

Reviewed By: javache

Differential Revision: D57253633

fbshipit-source-id: d8631f5d25c00bdf4c94fcd0d56746c35e5b2fc3
2024-05-14 11:51:39 -07:00
Thomas NardoneandFacebook GitHub Bot 13dff7cdf2 Nullsafe views/scroll module (#44532)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44532

Changelog: [Internal]

Fix nullsafe errors in the module and add the annotation

Reviewed By: rshest

Differential Revision: D57218666

fbshipit-source-id: 9fc8c6d002bb2c4b53c0874a6d8c38fcf52b9e19
2024-05-14 09:21:15 -07:00
Thomas NardoneandFacebook GitHub Bot 6876775dc7 Fix ViewManager.receiveCommand nullability (#44531)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44531

Changelog: [Internal]

Properly propagate the `Nullable` to the delegates.

Reviewed By: rshest

Differential Revision: D57218665

fbshipit-source-id: 2783ad9b37688e0928ad2e3cf6a2ab1f41190fe7
2024-05-14 09:21:15 -07:00
Gilad BarandFacebook GitHub Bot 1a56b9a808 Revert D57285584: Sanitize measure function results
Differential Revision:
D57285584

Original commit changeset: 935fcdd28c05

Original Phabricator Diff: D57285584

fbshipit-source-id: 3c5d7ccefd608885af4d6f08c0d1cd00553f1f34
2024-05-14 07:13:21 -07:00
Marlene CotaandFacebook GitHub Bot b53aa08678 EventPerformanceLogger + BoundedConsumableBuffer - switch members to size_t (#44564)
Summary:
The RNW integration to RN 04/13 (https://github.com/microsoft/react-native-windows/pull/13226) adds EventPerformanceLogger.cpp and PerformanceEntryReporter.cpp.

We're getting the following errors:
![image](https://github.com/facebook/react-native/assets/1422161/33a4dc42-1d14-4ac4-befd-87ec5cd02640)

![image](https://github.com/facebook/react-native/assets/1422161/6269968d-c0e8-489b-992e-0bb41b6ef7c6)

Switching to size_t fixes it.

## Changelog:
[Internal] [FIXED] - EventPerformanceLogger + BoundedConsumableBuffer - switch members to size_t

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

Test Plan: Builds on Windows

Reviewed By: fabriziocucci

Differential Revision: D57327696

Pulled By: javache

fbshipit-source-id: 21ec3a9597958aa70fbca64710bd615a1022292d
2024-05-14 05:34:37 -07:00
Nick GerlemanandFacebook GitHub Bot 2ad51e53f0 Move showSoftInputOnFocus example to TextInputSharedExamples (#44558)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44558

Right now this is only exposed to RNTester on iOS, but the prop exists on both platforms.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D57281892

fbshipit-source-id: 9effc2b9c6421f8c74a2f4b933ab0fa0f15e7d70
2024-05-14 05:26:35 -07:00
huzhanbo.lucandFacebook GitHub Bot 62cbdbbcc6 fix: android native rejections should be instanceof Error (#44487)
Summary:
fix https://github.com/facebook/react-native/issues/44050

## Changelog:

[ANDROID] [FIXED] - fix: android native rejections should be instanceof Error

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

Test Plan: reject returns Error.

Reviewed By: NickGerleman

Differential Revision: D57205131

Pulled By: javache

fbshipit-source-id: a5950481d0c4909be4dbea0b430e75222258ae68
2024-05-14 04:57:01 -07:00
SunbreakandFacebook GitHub Bot 7dd91d3437 fix: use local scheduler for thread-safe (#44565)
Summary:
`getScheduler()` is intended for thread-safe

## Changelog:

[Android][FIXED] - local scheduler for thread-safe

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

Test Plan: none

Reviewed By: fabriziocucci

Differential Revision: D57326255

Pulled By: javache

fbshipit-source-id: fa3a1df0f2653d5c286fdb537e0d44ab6fd1ed54
2024-05-14 04:05:36 -07:00
Nick GerlemanandFacebook GitHub Bot 2cc3ba1f19 Mark IntBufferBatchMountItem as nullsafe (#44540)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44540

Noticed when running `arc nn`

> Advice xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java:39
> [Class has 0 issues and can be marked Nullsafe] Congrats! `IntBufferBatchMountItem` is free of nullability issues. Mark it `Nullsafe(Nullsafe.Mode.LOCAL)` to prevent regressions.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D57249958

fbshipit-source-id: d38559a3fafae0ad778c19dd85c5da610a650d7c
2024-05-14 00:08:56 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 61887338ea Kotlinify DeviceInfoModule (#44536)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44536

# Changelog:
[Internal] -

As in the title.

Reviewed By: alanleedev

Differential Revision: D57248069

fbshipit-source-id: 4187b620483d439da5fc4c81012c1124fa19fc09
2024-05-14 00:05:23 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 8593eee9fe Kotlinify I18nManagerModule (#44537)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44537

# Changelog:
[Internal] -

As in the title.

Reviewed By: NickGerleman

Differential Revision: D57248159

fbshipit-source-id: 800de0454e4ac1bbb95679eaad6c24dc4d48ad22
2024-05-13 22:45:04 -07:00
Nick GerlemanandFacebook GitHub Bot 44f9371f24 Sanitize measure function results (#44557)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44557

We've started seeing assertion failures in Yoga where a `NaN` value makes its way to an `availableHeight` constraint when measuring Litho tree.

Because it's only happening on Litho, I have some suspicion this might be originating from a Litho-specific measure function. This adds sanitization in Yoga to measure function results, where we will log an error, and set size to zero, if either dimension ends up being negative of `NaN`.

This doesn't really help track down where the error was happening, but Yoga doesn't have great context to show this to begin with. If we see this is issue, next steps would be Litho internal intrumentation to find culprit.

Changelog: [Internal]

Reviewed By: joevilches

Differential Revision: D57285584

fbshipit-source-id: 935fcdd28c05bbac0d73e1c7654ae11a74898537
2024-05-13 17:12:49 -07:00
Nick GerlemanandFacebook GitHub Bot 5a100ae3fe Fix CircleCI Android GTest Build (#44562)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44562

D56963463 deleted some tests for code it also deleted. This broke the Android GTest OSS build, which is a centralized list of these test files. Remove from there as well.

Changelog: [Internal]

Reviewed By: joevilches, realsoelynn

Differential Revision: D57299969

fbshipit-source-id: 1bf0b718ca5fcee03272dd0142f80ea2f8257902
2024-05-13 15:42:56 -07:00
Sam ZhouandFacebook GitHub Bot 062205ba50 Update hermes-parser and related packages to 0.21.1 (#44560)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44560

Changelog: [Internal]

Reviewed By: alexmckenley

Differential Revision: D57289099

fbshipit-source-id: c1525c8e9606a05f479a3964f450c71b131f01f1
2024-05-13 14:16:09 -07:00
Blake FriedmanandFacebook GitHub Bot 2fd7733137 Add support for building using Metro (#44464)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44464

Adds `app` to allow building and serving your React Native app in a similar structure to the boostrap and build tasks.  This is the more comprehensive followup to D57067040.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D57067039

fbshipit-source-id: fdbe891657d826535cb779a4d1b71cfd13921684
2024-05-13 14:06:33 -07:00
Blake FriedmanandFacebook GitHub Bot 6b56fb0d0b iOS autolinking.rb needs to export react_native_pods.rb (#44462)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44462

Users using the new `react-native/scripts/cocoapods/autolinking.rb` script will expect all of the helper methods previously exposed throug `react_native_pods.rb`.

This was an oversight.

Changelog: [iOS][Fixed] exposes react_native_pods methods through autolinking.rb

Reviewed By: cipolleschi

Differential Revision: D57066094

fbshipit-source-id: d65dc79430101c9c43cbd90d1456630e338a22bb
2024-05-13 14:06:33 -07:00
Blake FriedmanandFacebook GitHub Bot fedb1452a2 cli helper methods (#44463)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44463

Helper methods to help the cli grab system state, devices and run react-native/core-cli-utils tasks using Listr.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D57067037

fbshipit-source-id: 28cb4239f3a93558b88417f366a2146f696cc411
2024-05-13 14:06:33 -07:00
Blake FriedmanandFacebook GitHub Bot 9b0072ad71 Add metro app building support (#44466)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44466

Contains a *light* wrapper to help launch Metro and build bundles or wait for localhost requests against Metro's dev-server.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D57067040

fbshipit-source-id: 8ab7ecb5d9b98d1abddd5d4f04c7eb25129cd0a1
2024-05-13 14:06:33 -07:00
Nick GerlemanandFacebook GitHub Bot fd8f1f5274 Remove folly::dynamic AttributedString storage (#44512)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44512

We only ever go through MapBuffer now, so we can remove the code related to storing text fragments in folly::dynamic.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D56963463

fbshipit-source-id: 98bce8aa4ccad134ce18bf35028e1b7b5082c3ca
2024-05-13 13:40:53 -07:00
Jorge Cabiedes AcostaandFacebook GitHub Bot 082e29ed4e Fix border-radius percentage formula typo (#44529)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44529

The percentage formula was incorrect. We actually want to consider the shorter side as 100%. If we set a radius > minimum side there are no changes reflected. This is correct on iOS.

D56943825's summary also highlights the reasoning.

Changelog:
[Android][Fixed] Border-Radius percentages are now correctly resolved.

Reviewed By: NickGerleman

Differential Revision: D57214561

fbshipit-source-id: 45125b80289506a6dd51d24451e2b0222cd227c0
2024-05-13 11:10:40 -07:00
Tim YungandFacebook GitHub Bot 651c1d2cf5 RN: Cleanup Comment Reference to Navigator (#44542)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44542

React Native no longer has a `Navigator` component, so let's clean up this reference in a comment in the `StatusBar` component definition.

Changelog:
[General][Changed] - Obsolete comments referencing Navigator

Reviewed By: GijsWeterings

Differential Revision: D57251899

fbshipit-source-id: bf2923bcaf22daf525381efbc3577c3610afaec4
2024-05-13 08:46:23 -07:00
Tim YungandFacebook GitHub Bot cdc3b9cdfc RN: Disable Babel Plugin for Arrow Functions for Hermes (#44534)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44534

Reapplies {D50818568} (reverted by D50885400).

Changelog:
[General][Changed] - Disable Babel plugin for arrow functions for Hermes

Reviewed By: robhogan

Differential Revision: D57242622

fbshipit-source-id: 63ec2aeb7562dbb1a049dedd6a35b10aa822193c
2024-05-13 08:45:14 -07:00
Ruslan ShestopalyukandFacebook GitHub Bot 02d2f8c984 Migrate MathMatrixHelper to Kotlin (#44547)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44547

# Changelog:
[Internal] -

As in the title.

Reviewed By: javache

Differential Revision: D57254265

fbshipit-source-id: 532fd8fe4b120d16b3ec3fa173233a0290c93aff
2024-05-13 07:18:03 -07:00
Fabrizio CucciandFacebook GitHub Bot f44476dd9d Fix experimental_filter validation error in bridgeless (#44524)
Summary:
Changelog: [Internal]

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

After D56845572, I've started seeing the following redbox when running apps in bridgless mode:

 {F1633641432}

Note sure this is the correct/complete fix but, after this, the error seems to go away.

Reviewed By: RSNara

Differential Revision: D57207925

fbshipit-source-id: c02b9b268c135aabaaa1dc8329abc80ca5c8a500
2024-05-13 04:23:19 -07:00
Kudo ChienandFacebook GitHub Bot c70d791036 Fix dangling surfaces in ReactHostImpl (#44393)
Summary:
Though the `ReactHost.destroy()` is not being used from OSS code, we use it at Expo for expo-dev-client to change loading apps from different dev servers. Without cleanup the `mAttachedSurfaces`, it will have dangling or duplicated attached surfaces that cause duplicated react trees.

<img src="https://github.com/facebook/react-native/assets/46429/f84d274e-aaad-4352-9e3c-6262571a5625">

This PR tries to cleanup the `mAttachedSurfaces` from destroying.

## Changelog:

[ANDROID] [FIXED] - Fixed dangling `mAttachedSurfaces` after `ReactHost.destroy()`

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

Test Plan: have to manually call `ReactHost.destroy()` and recreate the MainActivity without killing the process. then reload the app will startSurface for the same attached surfaces.

Reviewed By: RSNara

Differential Revision: D56901863

Pulled By: javache

fbshipit-source-id: c7f822501d971810ac6aa7262b15da69ec41355e
2024-05-13 04:04:07 -07:00
Pieter De BaetsandFacebook GitHub Bot 596e14e423 Fix missing systrace marker end (#44527)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44527

Marker was never closed.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D57204350

fbshipit-source-id: 271d285fa55d72e9d3b2f74575ebff5a3fc01045
2024-05-13 03:58:13 -07:00
Dmitry RykunandFacebook GitHub Bot 6a75662c9c Back out "Fix race condition in native module invalidation" (#44523)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44523

This is a revert of https://github.com/facebook/react-native/pull/44048
The original change has introduced some regression in native module invalidation stability.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D57207598

fbshipit-source-id: eb967102351434c652cb9d6f9935cbf9952d7328
2024-05-13 02:47:18 -07:00
Nick GerlemanandFacebook GitHub Bot a37111a4dd CSS function component values (#44470)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44470

CSS component values, as defined in the syntax spec, are either "preserved tokens", CSS functions, or simple blocks. This is distinct from the higher-level "component value type" specified in the [values and units](https://www.w3.org/TR/css-values-3/#component-types) spec.

I was previously short-circuiting a bit, from preserved tokens, to a higher level data structure. This separates them out, adding a layer exposing the preserved token as `CSSSyntaxParser::Token`, and now a `CSSSyntaxParser::Function`, which can represent a named function and its nested component values.

This does not yet wire functions beyond CSSParser returned component values.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D57089275

fbshipit-source-id: 97eeb1a7b3363c79d99f9419ba6e022c4c3c31d0
2024-05-11 16:37:39 -07:00
Samuel SuslaandFacebook GitHub Bot 3f17c8b5f0 isolate mapbuffer only to components that use it (#44521)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44521

changelog: [internal]

mapbuffer leaks into every component even though it is only used by 2: Paragraph and TextInput. Let's isolate it only to those two.

To do that, I added a new template prop: usesMapBufferForStateData. It is false by default and only Paragraph and TextInput set it to true.

Reviewed By: christophpurrer

Differential Revision: D56636011

fbshipit-source-id: 4a99e6e68caaf40111b6b7b205854a71f33c5864
2024-05-11 03:11:21 -07:00