Commit Graph
34076 Commits
Author SHA1 Message Date
Nicola Corti 5e31b45fc7 Undo breaking change on Dynamic.type and Dynamic.isNull (#45378)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45378

Kotlin consumers of those APIs are forced with this breaking change:

```
# Before thanks to Java property conversion
Dynamic.type
# After
Dynamic.getType()
```
This restores the old more idiomatic API by moving those 2 funcitons to be vals.

Changelog:
[Android] [Fixed] - Undo breaking change on Dynamic.type and Dynamic.isNull

Reviewed By: javache

Differential Revision: D59631783

fbshipit-source-id: 8d720af34e104ee0e4f3120302a4a84fc17a7b1c
2024-07-11 12:19:55 -07:00
David Vacca 384983025a Introduce Systrace.beginSection with args (#45392)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45392

In this diff I'm introducing a new overload of Systrace.beginSection to receive arguments by parameter

changelog: [Android][Added] Introduce Systrace.beginSection with arguments

Reviewed By: sammy-SC

Differential Revision: D59639329

fbshipit-source-id: 23d43e5dd48fdde9c7d49a1c10fa9ecc4c3b7196
2024-07-11 12:18:06 -07:00
Pieter De Baets b1405b5a81 Cleanup enableRemoveDeleteTreeInstruction experiment (#45385)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45385

We ran various experiments with this flag, and this does not turn out to provide any significant benefits at this point to make it worth the complexity and platform divergence it introduced.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D58355433

fbshipit-source-id: 4b857a5d0b8aa5915b4a880cbcae2526a16a08a9
2024-07-11 11:19:55 -07:00
zhongwuzw fcb6cdc710 【iOS】Fixes ellipsis carries background from trimmed text (#39408)
Summary:
Fixes https://github.com/facebook/react-native/issues/37926.

## Changelog:

[IOS] [FIXED] - Fixes ellipsis carries background from trimmed text

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

Test Plan:
Demo code:
```
<Text numberOfLines={1} ellipsizeMode={'tail'}>Long text <Text style={{backgroundColor: 'red'}}>Nested text</Text></Text>
```

Before fix:
![image](https://github.com/facebook/react-native/assets/5061845/05467128-a4f9-4f81-bb22-c1085a3bc721)

After fix:
![image](https://github.com/facebook/react-native/assets/5061845/b6b024ae-5329-47d3-a07c-1ba089802edd)

Reviewed By: cipolleschi

Differential Revision: D59519171

Pulled By: javache

fbshipit-source-id: 87c985859e9892fd2e4d6bb3d62b08627247df70
2024-07-11 08:46:26 -07:00
Pieter De Baets c4a6bbc8fd Do eager native module init on mqt_native thread (#45324)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45324

Improve concurrency during startup of bridgeless by concurrently initializing eager native modules and triggering bundle load.

Changelog: [Android][Changed] Modules marked with needsEagerInit = true will now be created on the mqt_native thread.

Reviewed By: mdvacca

Differential Revision: D59465977

fbshipit-source-id: 55cc0f0359bafcf32dc538f4346c6a5d5546f658
2024-07-11 07:47:10 -07:00
Nicola Corti 2ea9c360dc Undo breaking change on getJsCallInvokerHolder (#45376)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45376

This reduces one breaking change users are seeing on `CatalystInstance.getJsCallInvokerHolder`.
I had to specify:

```
Suppress("INAPPLICABLE_JVM_NAME")
get:JvmName("getJSCallInvokerHolder")
```

as the Kotlin compiler is unhappy with me setting a JvmName on a interface property.
More on this here: https://youtrack.jetbrains.com/issue/KT-31420

Changelog:
[Android] [Fixed] - Undo breaking change on `CatalystInstance.getJsCallInvokerHolder`

Reviewed By: javache

Differential Revision: D59631640

fbshipit-source-id: 4d5b3499e4e0e0bec1d380c4b7942ea28ae35465
2024-07-11 07:45:55 -07:00
Samuel Susla 33262c1717 remove gating for prevent double measure flag (#45375)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45375

changelog: [internal]

this is shipped, let's remove gating.

Reviewed By: javache

Differential Revision: D59585030

fbshipit-source-id: 05c76099c27010a7e2e2167c5af5bb5346a00f47
2024-07-11 05:26:27 -07:00
Riccardo Cipolleschi 6e2ba742ff Factor out the CXX language standard in a separate const (#45374)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45374

This change factors out the language standard in a separate constant so we can easily control it from a single place.

There are only 2 exception to this:
1. hermes-engine: the podspec is used in CI and it has no access to the rct_cxx_language_standard variable
2. Yoga: it can be used as a separate pod, outside of React Native, so it makes sense to leave it alone.

This change also fixes a problem where, in some setup, the language was set to C++14

## Changelog
[Internal] - Refactor Cxx language standard in a single constant

Reviewed By: dmytrorykun, blakef

Differential Revision: D59629061

fbshipit-source-id: 41eac64e47c14e239d8ee78bd88ea30af244d695
2024-07-11 05:25:38 -07:00
Pieter De Baets 2455a84db8 Simplify Java TurboModule lookup (#45322)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45322

Instead of using multiple weak_ptr and weak_ref, use a single weak_ref to the Java object and use that to get back to the original C++ instance, without the need for additional shared_ptr.

Changelog: [Internal]

Reviewed By: RSNara

Differential Revision: D59465976

fbshipit-source-id: d410bdacf21a1886c6ed95d2c57ac8c6e17428e3
2024-07-11 04:48:18 -07:00
Riccardo Cipolleschi 7b424f090a Factor out build hermes Macos (#45371)
Summary:
Factor out the build-hermes-macos job to reuse the code

## Changelog:
[Internal] - Factor out build hermes macos action

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

Test Plan: GHA are green

Reviewed By: blakef

Differential Revision: D59627977

Pulled By: cipolleschi

fbshipit-source-id: 84226d8a2c036f816fa8ea949b467873a7eef37c
2024-07-11 03:50:15 -07:00
Miklós Fazekas 3782511350 fix: android autolinkLibrariesFromCommand should handle timeout or non zero exit code (#45333)
Summary:
Fixes: https://github.com/facebook/react-native/issues/45307

## Changelog:

[Android] [Fixed] - if `npx react-native-community/cli config` fails or timeouts proper error is shown and built is aborted, instead of leaving and empty autolinking.json

During build `npx react-native-community/cli config` is generated into autolinking.json. When command fails, we should error and should not leave and empty `autolinking.json`

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

Test Plan:
Output of the reproducer in https://github.com/facebook/react-native/issues/45307 looks like this:

```log
android % ./gradlew assembleDebug
Starting a Gradle Daemon (subsequent builds will be faster)
ERROR: autolinkLibrariesFromCommand: Failed to create /Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/build/generated/autolinking/autolinking.json - process npx react-native-community/cli config  exited with error code: 126

FAILURE: Build failed with an exception.

* Where:
Settings file '/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/settings.gradle' line: 3

* What went wrong:
A problem occurred evaluating settings 'android'.
> ERROR: autolinkLibrariesFromCommand: Failed to create /Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/build/generated/autolinking/autolinking.json - process npx react-native-community/cli config  exited with error code: 126

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 10s
8 actionable tasks: 4 executed, 4 up-to-date
```

Output if you modify the package.json to be invalid looks like this:

```log
android % ./gradlew assembleDebug
ERROR: autolinkLibrariesFromCommand: process npx react-native-community/cli config  exited with error code: 1
JSONError: JSON Error in /Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/package.json:

  35 |     "node": ">=18"
  36 |   },
> 37 |   SOMETHING_NON_JSON
     |   ^
  38 |   "packageManager": "yarn@3.6.4",
  39 |   "resolutions": {
  40 |     "rtn-centered-text": "portal:../RTNCenteredText"

Unexpected token "S" (0x53) in JSON at position 1019 while parsing near "...ode\": \">=18\"\n  },\n  SOMETHING_NON_JSON\n ..."

  35 |     "node": ">=18"
  36 |   },
> 37 |   SOMETHING_NON_JSON
     |   ^
  38 |   "packageManager": "yarn@3.6.4",
  39 |   "resolutions": {
  40 |     "rtn-centered-text": "portal:../RTNCenteredText"

    at parseJson (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/parse-json/index.js:29:21)
    at loadJson (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/loaders.js:48:16)
    at #loadConfiguration (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:116:36)
    at #loadConfigFileWithImports (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:87:54)
    at #readConfiguration (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:84:82)
    at search (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:50:63)
    at emplace (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/util.js:36:20)
    at ExplorerSync.search (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/ExplorerSync.js:78:42)
    at getUserDefinedOptionsFromMetaConfig (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/index.js:32:37)
    at mergeOptionsBase (/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/node_modules/react-native-community/cli-config/node_modules/cosmiconfig/dist/index.js:60:31)

FAILURE: Build failed with an exception.

* Where:
Settings file '/Users/boga/Work/OSS/RNMBGL/rn-fabric-boolattribute/ReproducerApp/android/settings.gradle' line: 3

* What went wrong:
A problem occurred evaluating settings 'android'.
> ERROR: autolinkLibrariesFromCommand: process npx react-native-community/cli config  exited with error code: 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 2s
8 actionable tasks: 4 executed, 4 up-to-date
```

Reviewed By: cipolleschi

Differential Revision: D59582430

Pulled By: cortinico

fbshipit-source-id: bedb9563175cc5c46f5af80cf309769e56b803cc
2024-07-11 03:43:23 -07:00
Nick Gerleman 52dc7a8326 Make ReactImageView use standardized background drawing code (#45366)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45366

This updates ReactImageView to share the background drawing and clipping code used by other built-in components. This means manipulating a background drawable, and clippping at draw time, instead of using Fresco hierarchy background (in view foreground), and radii which manipulate the underlying bitmap.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D59495407

fbshipit-source-id: ce3c975e5ed323fa3d4610ec1515ef3c8dd8b2d1
2024-07-11 02:58:36 -07:00
Nick Gerleman ea6928fcb9 Fix Android removeClippedSubviews in horizontal ScrollView in RTL (#45356)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45356

Subview clipping was disabled for RTL on Android due to a bug where TextInputs automatically blur when selected. This bug is reintroduced when `set_android_layout_direction` is set.

When `set_android_layout_direction` is enabled, and we use View `getLayoutDirection()` instead of `I18nManager.isRTL()`, the layout direction is not known until layer in the mounting process. This defeats the check a `setRemoveClippedSubviews()` prop setter to ignore the prop if the view is RTL (since it doesn't invalidate when a new layout direction is set).

The root cause of the underlying RTL bug is due to updating clipping status triggered by `onSizeChanged()`, which is called before `onLayout()`, where `ReactHorizontalScrollContainerView` offsets content in RTL. This also seems potentially erroneous, as we do not update the clipping rect on position change (unless that is handled elsewhere).

I moved the check to `onLayout()`, called after ReactHorizontalScrollView will change metrics, which seems to fix the issue. I then removed the exclusion in `removeClippedSubviews` prop setter.

Changelog:
[Android][Fixed] - Fix Android removeClippedSubviews in RTL

Reviewed By: mdvacca

Differential Revision: D59566611

fbshipit-source-id: a2eb12b984dc78940756804b6b7a3950377af9de
2024-07-10 20:17:03 -07:00
Jakub Piasecki 2932c0f71f Implement baseline alignment function on the new architecture (#45102)
Summary:
On the new architecture, the setup that would allow Yoga to read the baseline of a node was missing. This PR adds it:
- adds new ShadowNode trait - `BaselineYogaNode` that marks a node as having a custom baseline function
- adds `yogaNodeBaselineCallbackConnector` that's responsible for allowing Yoga to call baseline function on the node
- changes signatures of `lastBaseline` and `firstBaseline` to accept `LayoutContext` as the first argument, which is necessary to build an attributed string
- adds implementation of `lastBaseline` that's invoked by `yogaNodeBaselineCallbackConnector`
- adds methods for calculating the last baseline in platform-specific `TextLayoutManagers`, using the same approach on both Android and iOS (this differs from the old architecture where calculations were different)

## Changelog:

[GENERAL] [FIXED] - Fixed `alignItems: 'baseline'` not working correctly on the new architecture

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

Test Plan:
Tested on the relevant part of RNTester:

### Android

|Old arch|New arch before|New arch after|
|-|-|-|
|<img width="426" alt="baseline-android-old-arch" src="https://github.com/facebook/react-native/assets/21055725/08550dfc-cf30-4938-8872-9bef916dc53c">|<img width="426" alt="baseline-android-new-arch-before" src="https://github.com/facebook/react-native/assets/21055725/9e3667f7-5c42-4e23-8972-fd2e994694a4">|<img width="409" alt="Screenshot 2024-07-02 at 16 40 38" src="https://github.com/facebook/react-native/assets/21055725/13379b11-b69e-4082-81cc-dec5e6d092f2">|

### iOS

|Old arch|New arch before|New arch after|
|-|-|-|
|<img width="519" alt="baseline-ios-old-arch" src="https://github.com/facebook/react-native/assets/21055725/da3956a1-5588-4933-87ce-4b5a9c256957">|<img width="519" alt="baseline-ios-new-arch-before" src="https://github.com/facebook/react-native/assets/21055725/09aef2c1-2eec-4710-b237-0f4a0c3d52d0">|<img width="519" alt="Screenshot 2024-07-02 at 16 40 29" src="https://github.com/facebook/react-native/assets/21055725/0a8a7251-1f6f-40db-81d7-4f37142932db">|

Reviewed By: NickGerleman

Differential Revision: D59323974

Pulled By: cortinico

fbshipit-source-id: e50882d399a0791a39ce8b416ed96d8fd3c48f23
2024-07-10 12:43:42 -07:00
Jakub Piasecki 83716298f8 Fix text shadow on TextInput on Android when backgroundColor is set (#45343)
Summary:
When setting a shadow on a `Text` inside a `TextInput`, the shadow was rendered with artifacts when `backgroundColor` was set on the `TextInput`.

This is caused by how attributed strings are constructed on the new architecture - all text attributes from the text input (including background color) are propagated onto the string. Then, it's converted to a `Spannable` on Android side, which includes `ReactBackgroundColorSpan` being set on the entire text when it doesn't have a background color set explicitly. Then Android tries to render the shadow not only for the text but also for the background rect which results in the artifacts.

This PR prevents background color from the `TextInput` from being propagated onto the attributed string, so the `ReactBackgroundColorSpan` is only applied when a text fragment has its background set explicitly.

## Changelog:

[ANDROID] [FIXED] - Fixed text shadow rendering with artifacts when `backgroundColor` was set on the `TextInput`

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

Test Plan:
Checked relevant examples on RNTester

|Old arch|New arch (before)|New arch (after)|
|-|-|-|
|<img width="436" alt="Screenshot 2024-07-09 at 14 44 52" src="https://github.com/facebook/react-native/assets/21055725/64005ec4-3e42-4327-9b09-f57d3c477fb6">|<img width="436" alt="Screenshot 2024-07-09 at 14 43 03" src="https://github.com/facebook/react-native/assets/21055725/f558ad26-08de-4231-acdf-92f596ec186c">|<img width="436" alt="Screenshot 2024-07-09 at 14 41 46" src="https://github.com/facebook/react-native/assets/21055725/6b4ff6ed-5267-4f1a-a895-1bbd760f73e5">|

Reviewed By: NickGerleman

Differential Revision: D59527817

Pulled By: cortinico

fbshipit-source-id: d03d4749e4435ef04e51b1018f046be0e5e0bca4
2024-07-10 11:54:30 -07:00
Riccardo Cipolleschi 0fd4a9447e Factor out hermes slice apple (#45359)
Summary:
Factor out build-apple-slices-hermes to a seprate action to reuse code

## Changelog:
[Internal] - Refactor the CI to reuse code

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

Test Plan: GHA are green

Reviewed By: cortinico

Differential Revision: D59575467

Pulled By: cipolleschi

fbshipit-source-id: 5d253f3dd523cb70b768c62db10fb7ff39fbd49f
2024-07-10 06:38:49 -07:00
Tomek Zawadzki 778fcecf35 Update comments for ~ShadowNodeWrapper() and ~ShadowNodeListWrapper() (#45357)
Summary:
This PR updates the comments for `~ShadowNodeWrapper()` and `~ShadowNodeListWrapper()` to align them with the actual implementation that now uses `jsi::NativeState` instead of `jsi::HostObject`.

## Changelog:

[GENERAL] [FIXED] - Updated comments for `~ShadowNodeWrapper()` and `~ShadowNodeListWrapper()`

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

Reviewed By: sammy-SC

Differential Revision: D59578988

Pulled By: javache

fbshipit-source-id: 1c46ce8407fc8b337f3a6762caee3b2e0e1edfc6
2024-07-10 04:57:42 -07:00
Samuel Susla 8f98c58d38 delete background executor (#45110)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45110

changelog: [internal]

Reviewed By: fkgozali, javache

Differential Revision: D58737295

fbshipit-source-id: 1f644b910e07a27cffb9107502aefd9b382d8f93
2024-07-10 04:28:22 -07:00
Samuel Susla 082706ccd4 remove event emitter from view preallocation (#45351)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45351

changelog: [internal]

event emitter is always null during view preallocation. Let's just remove it completely from the method signature

Reviewed By: rubennorte

Differential Revision: D59522141

fbshipit-source-id: cb4f3b314607b4ee8b2209a8ab55e066ee7e075a
2024-07-10 04:17:55 -07:00
Riccardo Cipolleschi b4b6614034 Factor out build hermesc apple (#45346)
Summary:
Factor out the action to build hermesc for apple platform so we can reuse it across jobs

## Changelog:
[Internal] - Factor out hermesC apple to reuse code

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

Test Plan: GHA are green

Reviewed By: cortinico

Differential Revision: D59521564

Pulled By: cipolleschi

fbshipit-source-id: c99966e314b3d418d1d83d653c0be68b2931b03b
2024-07-10 01:06:39 -07:00
Robert Pasiński 9a1ae97c22 fix: Headless tasks in bridgeless mode (fixes #44255) (#45100)
Summary:
HeadlessTaskService was to create a Bridge instance in bridgeless mode.

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

## Changelog:

[ANDROID] [FIXED] - Fixed Headless JS tasks in New Architecture

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

Reviewed By: cortinico

Differential Revision: D59471277

Pulled By: arushikesarwani94

fbshipit-source-id: 400e2f67d35e015a976f3df917ca27c43e292685
2024-07-09 16:06:47 -07:00
Pieter De Baets 57e3451557 Do not mutate output of flattenStyle in TextInput (#45348)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45348

flattenStyle may return an object which is already frozen (in development), so it is incorrect to further mutate this.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D59525418

fbshipit-source-id: 094b7c9c952d8684e24203cc07d6bda51bdf12b5
2024-07-09 15:58:12 -07:00
Nick Gerleman 2bed2ab1a6 Fix ReactImageView.hasOverlappingRendering() (#45352)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45352

We claim that we will never draw multiple elements on top of each other, which isn't correct when we have a background.

We should claim that we can draw overlapping elements if we have a background drawable which we place in the Drawee hierarchy (part of the ImageView foreground drawable), or if the underlying view has a background drawable (which is handled by `ImageView` superclass `hasOverlappingRendering()`).

The effect of this is subtle, and just means that we get correct compositing when an opacity is set on image with background.

Changelog:
[Android][Fixed] - Fix ReactImageView.hasOverlappingRendering()

Reviewed By: mdvacca

Differential Revision: D59489788

fbshipit-source-id: fe2922f064b91f1709ed546dd647d4d4112d04c1
2024-07-09 14:59:40 -07:00
Nick Gerleman 58c726a6ba Encapsulate float-ish border color APIs (#45338)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45338

`CSSBackgroundDrawable` is a silly goose and reuses layout types to store color. This has extended into a really strange public API, where we use floating point colors, where the color is itself in int with packed integer color components.

This hides that away, and marks some classes with `UnstableReactNativeAPI` that I plan to hide shortly.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D59488811

fbshipit-source-id: 7dc57edc9888f8a92088d2410ee71c2768ae8ec1
2024-07-09 14:59:40 -07:00
Rubén Norte 0e621295fb Propagate intersection times in image performance logging for RN (#45350)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45350

Changelog: [internal]

Reviewed By: steelrooter

Differential Revision: D59524510

fbshipit-source-id: 28d38e199fcfcaf421296a4499e11138d43f3b04
2024-07-09 14:55:58 -07:00
Liron Yahdav 539788eb6e Feed React tracing into Instruments signposts API (#45169)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45169

This is a follow-up to D56280451 where I made all SystraceSection calls feed into the Instruments signposts API. This will additionally do the same for all calls to nativeTraceBeginSection/nativeTraceEndSection from JSITracing.cpp.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D58895740

fbshipit-source-id: ee1cdff883ac1172f9bafe11ab950738d7ae7f82
2024-07-09 14:01:39 -07:00
Gabriel Donadel fa9fd59a1f chore: Add changelog for 0.73.9 (#45353)
Summary:
Adds changelog for the 0.73.9 patch.

## Changelog:

[Internal] [Changed] - Add 0.73.9 changelog

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

Reviewed By: NickGerleman

Differential Revision: D59538388

Pulled By: arushikesarwani94

fbshipit-source-id: 8a410c6d65bbf0ac85bde6fde826fb999181950d
2024-07-09 13:37:46 -07:00
Joe Vilches 0f87250d29 Adjust shadow's corner radius based on spread (#45336)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45336

The spec says we need to adjust the border radius of the shadow if spread is present. It gets bigger for outset shadows and smaller for inset shadows.

Source https://drafts.csswg.org/css-backgrounds/#shadow-shape

> To preserve the box’s shape when spread is applied, the corner radii of the shadow are also increased (decreased, for inner shadows) from the border-box (padding-box) radii by adding (subtracting) the spread distance (and flooring at zero). However, in order to create a sharper corner when the border radius is small (and thus ensure continuity between round and sharp corners), when the border radius is less than the spread distance (or in the case of an inner shadow, less than the absolute value of a negative spread distance), the spread distance is first multiplied by the proportion 1 + (r-1)3, where r is the ratio of the border radius to the spread distance, in calculating the corner radii of the spread shadow shape.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D59296120

fbshipit-source-id: e55327701547f27961a0d612ed595b4383e1d763
2024-07-09 13:24:18 -07:00
Panos Vekris 5daa899f4a remove one_sided_type_guards option from flowconfigs (on by default) (#45349)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45349

This is on by default as of version 0.239.0:

https://github.com/facebook/flow/blob/v0.239/src/commands/config/flowConfig.ml#L268

Changelog: [Internal]

Reviewed By: SamChou19815

Differential Revision: D59525192

fbshipit-source-id: b4bf456e3c03a712f4c6f5d72d157b3abf8f9895
2024-07-09 10:47:31 -07:00
Pieter De Baets ef2e9410d0 Do not mutate output of flattenStyle (#45340)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45340

flattenStyle may return an object which is already frozen (in development), so it is incorrect to further mutate this.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D59515063

fbshipit-source-id: 92df158d5841988d40bcd76b861963b06dad1573
2024-07-09 08:26:58 -07:00
Pieter De Baets 0733e36278 Remove TurboModule debug info (#45323)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45323

We're no longer running experiments with TurboModule and legacy module rollout, so this debug info is no longer required, and adds unnecessary verbosity to TurboModule lookup errors.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D59465974

fbshipit-source-id: 87a2ebd9c05ad312889bcbd819ccbe885b429064
2024-07-09 07:34:11 -07:00
Pieter De Baets 5a62606ab3 Lookup TurboModules before fallbacks (#45320)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45320

TurboModule should be the default path, and we should only fallback to the legacy native modules if we can't find a module through the TurboModule mechanism.

Changelog: [General][Changed] - TurboModules will be looked up as TurboModules first, and fallback to legacy modules after.

Reviewed By: christophpurrer

Differential Revision: D59465978

fbshipit-source-id: c5672d34e90dcee321de0a5acd3a50b6bb1092b8
2024-07-09 07:34:11 -07:00
Samuel Susla 5b03453b5f trigger image fetch during view preallocation (#45330)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45330

changelog: [internal]

With view preallocation, we want to trigger image download in case there is only a single image source even if layout hasn't been determined.

This can lead to images appearing 100s of milliseconds earlier.

This optimisation is already used by plain ImageView: https://fburl.com/code/cp87xmw7

Reviewed By: rubennorte

Differential Revision: D59465972

fbshipit-source-id: e045d6bd9d595d366541ffa32364488be4766ef8
2024-07-09 05:51:40 -07:00
Pieter De Baets 8e8e0ba13b Cleanup unstable_useTurboModuleInteropForAllTurboModules (#45319)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45319

This test has been cleaned up, we can remove the callers.

Changelog: [Internal]

Reviewed By: fabriziocucci

Differential Revision: D59465975

fbshipit-source-id: 01f4b24f221aa017fbfd2238f81454d38d05920a
2024-07-09 05:43:26 -07:00
Nick Gerleman 12b64b7824 Loosen SectionList renderItem required return type (#45305)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45305

Allow SectionList render functions to return any React node, instead of just React.Element. This matches VirtualizedList/FlatList, and general Flow component conventions.

Changelog:
[General][Fixed] - Loosen SectionList `renderItem` required return type

Reviewed By: joevilches

Differential Revision: D59404511

fbshipit-source-id: 3055d8f01845ff5ef8ae75b87f60d8cd26dc07b4
2024-07-08 17:40:59 -07:00
Sam Zhou 3441641682 Deploy 0.239.1 to xplat
Summary: Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D59493995

fbshipit-source-id: 9f0c6d030ef44cc833940e8c33ad72b3489d3a43
2024-07-08 16:42:30 -07:00
Pieter De Baets a4a2fa6a11 Sync comments on measure and requestLayout to Fabric implementation (#45325)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45325

We don't want to lose this context when we cleanup the old architecture.

Changelog: [Internal]

Reviewed By: sammy-SC

Differential Revision: D59466876

fbshipit-source-id: 3cf3c63d619d9e8535e369ec1ef7c5706431b85d
2024-07-08 14:50:31 -07:00
Samuel Susla 9fbc904592 remove gating for optimized text (#45317)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45317

changelog: [internal]

ship optimized version of Text componant. In local benchmarking this version shows 35% improvement over old Text component.

Reviewed By: NickGerleman

Differential Revision: D59460871

fbshipit-source-id: c3a41d3aac4cd40e054b669d56295bcb631d8310
2024-07-08 12:39:46 -07:00
Benoit Girard c9fbc05bbc Register Thread For Hermes Sampling (#45331)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45331

Let's add the a new JSRuntime API  to register the thread. This allows Hermes sampling to correctly work in Bridgeless/Activity.

## Changelog:
[General][Added] - Add experimental api to JSRuntimeFactory to initialize runtime on js thread

Reviewed By: RSNara

Differential Revision: D58787655

fbshipit-source-id: 2202271b9ad88cf8ba2145fb4e9e7bfd6e0c09fa
2024-07-08 12:20:11 -07:00
Riccardo Cipolleschi c0d56225a8 Add changelog for 0.75-RC.4 (#45332)
Summary:
Added changelog for 0.75.0-RC.4

## Changelog:
[Internal] - Add changelog for RC.4

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

Test Plan: N/A

Reviewed By: sammy-SC, GijsWeterings, arushikesarwani94, realsoelynn

Differential Revision: D59474501

Pulled By: cipolleschi

fbshipit-source-id: 8619ebe46bf4b0861bd981297b2c3b4a6e47c243
2024-07-08 11:38:34 -07:00
Riccardo Cipolleschi d6c90cf7ed Make sure to pass the BridgeProxy to view managers in the interop layer (#45329)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45329

Thanks to [#45232](https://github.com/facebook/react-native/issues/45232) we found a bug in the interop layer, where we were not passing the BridgeProxy in bridgeless mode to the view managers.

This Change should fix that issue.

## Changelog:
[iOS][Fixed] - Make sure to pass the RCTBridgeProxy to  ViewManagers

Reviewed By: dmytrorykun

Differential Revision: D59468292

fbshipit-source-id: 00666be21385a735878eb567c4b8a0986c609c5f
2024-07-08 11:07:29 -07:00
Pieter De Baets 6b7076e923 Move assertion about invalidated ReactInstanceManager to UI thread (#45328)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45328

This assertion is currently not actionable since the stack trace will always be just `mCreateReactContextThread`. Moving this assert is safe, as the only other place we write it is also the UI thread.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D59467576

fbshipit-source-id: c4606672255149a202f99a8f787230e2a23a868a
2024-07-08 09:49:28 -07:00
Rubén Norte ef9b2baa9a Create test to move parts of TextInput state to refs to avoid unnecessary updates in effects (#45321)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45321

Changelog: [internal]

This creates a variant of the internal hook in `TextInput` that handles the synchronization of the state between native and JS. The new variant moves everything that's not needed for rendering to refs instead of state.

One of the reasons for this change is that by not setting state in layout effects, we're not forcing passive effects to be flushed synchronously, which can improve perceived performance (as we can start painting before passive effects are executed).

Reviewed By: sammy-SC

Differential Revision: D59400624

fbshipit-source-id: 540c20daf49919fbfabd357a1a057ca126ec6b03
2024-07-08 09:42:46 -07:00
Rubén Norte 1265958d52 Extract TextInput synchronization mechanism to a custom hook (#45315)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45315

Changelog: [internal]

This moves some logic from the `TextInput` component to its own hook. It's just a refactor in preparation for a following change were we're going to test replacing this hook with an alternative version that relies less on state (using refs for some things instead).

Reviewed By: sammy-SC

Differential Revision: D59400614

fbshipit-source-id: ea37b8514f89e94be1386774ad70d56389878886
2024-07-08 09:42:46 -07:00
Nicola Corti ca17d87ed1 Upstream CLI autolinking changes to RNGP (#45314)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45314

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

I'm ustreaming two changes that happened inside the CLI/Autolinking logic that are
missing inside core autolinking.

Changelog:
[Internal] [Changed] - Upstream CLI autolinking changes to RNGP

Reviewed By: blakef

Differential Revision: D59460504

fbshipit-source-id: a6e7ab6a46fec26620dc965e77b13fdeba84fae3
2024-07-08 09:38:29 -07:00
Nicola Corti 40582d5b24 Attempt to limit the Gradle cache size (#45318)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45318

I'm setting the Gradle cache to write-only for build_android on main/stable branches.
This is so we start from a fresh cache on those jobs (as they're not on the critical path for developers).

Changelog:
[Internal] [Changed] - Attempt to limit the Gradle cache size

Reviewed By: cipolleschi

Differential Revision: D59466459

fbshipit-source-id: 8b7936ebe053ae06256f8506093eb17c07219de9
2024-07-08 08:40:56 -07:00
shubhamguptadream11 ead50d6b11 fix: added showSoftInputFocus handling for iOS new architecture (#45298)
Summary:
Fixes: https://github.com/facebook/react-native/issues/45297

In iOS New Architecture When we are passing `showSoftInputOnFocus` prop to TextInput as false it should prevent soft keyboard from showing.
Here, the problem is in Fabric counterpart of TextInput, there we are not handling `showSoftInputOnFocus` props anywhere.

## Changelog:

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

Pick one each for the category and type tags:

[iOS] [ADDED] - Added handling of `showSoftInputOnFocus` props for new arch.

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

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

Test Plan:
Below is the screen recording of fix made.

https://github.com/facebook/react-native/assets/85783070/de94877a-f684-4f8d-9ec4-a16f9755663e

Reviewed By: cipolleschi

Differential Revision: D59447432

Pulled By: dmytrorykun

fbshipit-source-id: 240854bc1101bdf0b04d7978c557215ff3f8a449
2024-07-08 07:19:38 -07:00
Samuel Susla 83392a9cd9 do not call [super loadView] in RN's UIViewController (#45312)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45312

changelog: [internal]

loadview shouldn't call its super method. Even though it isn't broken now, the official docs recommend against it.

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview

Reviewed By: christophpurrer

Differential Revision: D59376105

fbshipit-source-id: ee04020c008a3f208aafc79991c6ff24a71b226f
2024-07-08 06:08:58 -07:00
Kacper Rozniata 258f41a30f fix(iOS): remove deprecated method from RCTPerfMonitor & fix position (#43058)
Summary:
This PR removes usage of deprecated `statusBarFrame` method in `RCTPerfMonitor` . Instead `RCTPerfMonitor` now uses `safeAreaInsets` which also fixes issue causing Perf Monitor to appear under corner in landscape mode on e.g. `iPhone 15 Pro`. It also fixes initial position of expanded state which was causing it to render under notch.

Also removed duplicate background color setting

## Changelog:
[IOS] [REMOVED] - Remove usage of deprecated statusBarFrame method
[IOS] [FIXED] - Fix position of RCTPerfMonitor in landscape mode & expanded mode

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

Test Plan: `RNTester` builds and runs successfully, `RCTPerfMonitor` works and displays correctly

Reviewed By: dmytrorykun

Differential Revision: D59116913

Pulled By: cipolleschi

fbshipit-source-id: 0ff61f61b206c530cfb9e471bc2dc33a0a43c833
2024-07-08 04:04:06 -07:00
Damian Stasik 8c8c77b974 Remove unreachable if-condition in refresh logic (#45296)
Summary:
The `hasUnrecoverableErrors` function has been [hardcoded](https://github.com/facebook/react/blob/f38c22b244086f62ae5ed851b6ed17029ec44be5/packages/react-refresh/src/ReactFreshRuntime.js#L602) to always return false for the past 5 years, since React Refresh [can recover from all errors](https://github.com/facebook/react/pull/17438). This hardcoding was introduced in react-refresh v0.7.1, and RN currently uses v0.14.2.

## Changelog:

[INTERNAL] [REMOVED] - Remove unreachable if-condition in refresh logic

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

Test Plan: Fast Refresh should still work as expected.

Reviewed By: NickGerleman

Differential Revision: D59405648

Pulled By: arushikesarwani94

fbshipit-source-id: 6fefedb484eeab032028d738b48ac936a9044cb0
2024-07-05 15:53:43 -07:00