Commit Graph
31967 Commits
Author SHA1 Message Date
alicata 457d14bd1b Fix onprogress not firing when Content-Length is not available for XMLHttpRequest (#44899)
Summary:
When an XMLHttpRequest is performed, the `onprogress` event it is not invoked when the `Content-Length` header is missing in the response. This is the case when we are calling an endpoint that responds with `transfer-encoding: chunked` (https://tools.ietf.org/html/rfc9112#section-7.1), preventing the user to keep track of the progress while the server is sending chunks. Despite we will never know the total length of the content (because it will not be known due to the RFC specification, so it will be always `-1`), we will now be able to keep track of the loaded data.

Note that in Android, this is the current default behaviour.

To address this issue:
- I removed the condition where the `downloadProgressBlock` was dispatched only when  `response.expectedContentLength` was greater than 0
- I created a new test case for `XMLHttpRequest` in the tester app to download a chunked file

## Changelog:

[IOS] [CHANGED] - fire `onprogress` event for `XMLHttpRequest` even when the `Content-Length` header is missing in the response headers

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

Test Plan:
|before|after|
|----------|:-------------:|
|https://github.com/facebook/react-native/assets/37150312/6da3518f-eed3-4808-a2f8-abe26e5c7487|https://github.com/facebook/react-native/assets/37150312/ed1da300-dcf7-4874-a941-a2289f1cb777

Reviewed By: cortinico

Differential Revision: D58562088

Pulled By: NickGerleman

fbshipit-source-id: 23a1cafa49ddcd25fa0db7d04fae845126771425
2024-06-14 13:58:14 -07:00
zhongwuzw 9d637e4622 Fixes NSDataBigString length calculation (#44900)
Summary:
We assume data[length] is '\0', like Android https://github.com/facebook/react-native/blob/33aa83a0e6f63d3d50d4803074ad9e2243439100/packages/react-native/ReactCommon/cxxreact/JSBigString.h#L81. So we should minus 1 after we called `ensureNullTerminated`. it may crash in hermes engine because hermes should ensure data[length] is `\0`.

## Changelog:

[IOS] [FIXED] - Fixes NSDataBigString length calculation

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

Test Plan:
We can mimic the crash by changes some code :
![image](https://github.com/facebook/react-native/assets/5061845/cc65f232-c37c-452c-bf0d-aeb71b7b2950)

Reviewed By: javache

Differential Revision: D58561775

Pulled By: NickGerleman

fbshipit-source-id: 0f7879a028b84379f4f00c65bcfc6b1a7d66814a
2024-06-14 13:55:58 -07:00
Nicola Corti 2b640bec34 Fix for broken test_helloworld_android on Release (#44952)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44952

The test_helloworld_android Release variant are broken on GHA.
This fixes it as it forces hermesc to be built *before* the app attempts to create a bundle.

Changelog:
[Internal] [Changed] - Fix for broken test_helloworld_android on Release

Reviewed By: cipolleschi, blakef

Differential Revision: D58591480

fbshipit-source-id: 2afc1cfe8c416da6f5919d20098639653798dd1a
2024-06-14 11:11:20 -07:00
Riccardo Cipolleschi f1a362d834 Update the testing-script to use github actions (#44923)
Summary:
With the migration to GHA, we are updating the testing scripts to work with the new CI.

There are a bit of shenanigans due to:
* How GHA archives artifacts => they are all `.zip` files, so I had to play around with unzipping them
* GHA seems to create a different commit, like if it is forking the repo instead of using it. I think that it is how the checkout action works. *Note:* this might be a problem for the `Create React Native Release` workflow because it has to commit on the stable branch!
* Android is building only the simulator architecture when running from regular CI. The app is not configured to run only on that, so the RNTestProject was a failing because it was trying to build all the available architectures. It is an easy fix in the user project space when release testing.

## Changelog:
[Internal] - Update the testing script to work with the new CI

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

Test Plan:
Tested locally.

* [iOS] RNTester - Hermes 
* [iOS] RNTester - JSC 
* [Android] RNTester - Hermes 
* [Android] RNTester - JSC 
* [iOS] RNTestProject - Hermes   (The project is created correctly and it builds, crash at runtime for https://github.com/facebook/react-native/issues/44926)
* [iOS] RNTestProject - JSC  (The project is created correctly and it builds, crash at runtime for https://github.com/facebook/react-native/issues/44926)
* [Android] RNTester - Hermes  (Needed to build only the simulator architecture)
* [Android] RNTester - JSC  (Needed to build only the simulator architecture)

Reviewed By: andrewdacenko

Differential Revision: D58528432

Pulled By: cipolleschi

fbshipit-source-id: 733065de4c532b13d8e95e2217f9aafd5a2ef8a0
2024-06-14 10:56:52 -07:00
Ruslan Lesiutin 09bdbace95 refactor[LogBox]: filter out ANSI color styles (#44924)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44924

# Changelog: [Internal]

For Strict Mode, RDT backend will apply ANSI escape codes to style the message, basically to dim it for 2-nd invocations of logs / warnings / errors in Strict Mode.

With these changes, LogBox will filter out these stylings, so that the message is displayed correctly in the LogBox bubble and in LogBox panel (full screen mode).

Reviewed By: rickhanlonii, yungsters

Differential Revision: D58477316

fbshipit-source-id: 17773f658d2a3bfa7f6a3ccec9fc88a97dd2c0af
2024-06-14 10:42:12 -07:00
Christoph Purrer 810a516475 Call Turbo Module methods 'methods' in the Turbo Module JSON schema (#44919)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44919

## Changelog:

[Internal] [Fixed] - Call Turbo Module methods 'methods' in the Turbo Module JSON schema

We don't support `properties` on Turbo Modules. We only support methods (even eventEmitters are just methods)

Reviewed By: javache

Differential Revision: D58510557

fbshipit-source-id: 02b1dc93a37b58b47bb9fd94a9658b5a7301bf55
2024-06-14 10:36:31 -07:00
Wojciech Lewicki 358fe46969 fix: make it possible to add multiple mountingOverrideDelegates (#44927)
Summary:
PR changing the single mountingOverrideDelegate to a vector of those, so other listeners can operate on the transaction. Used by `react-native-screens` in https://github.com/software-mansion/react-native-screens/pull/2134 and `react-native-reanimated` in https://github.com/software-mansion/react-native-reanimated/pull/6055.

Till now, only one listener could be added there, meaning that e.g. `Layout Animations` from `react-native`,  `Layout Animations` from `react-native-reanimated` and listening for `Screen` removal in `react-native-screens` could not operate at the same time.

## Changelog:

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

[GENERAL] [FIXED] - Add option for multiple `mountingOverrideDelegates`

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

Test Plan: The code of `LayoutAnimations` inside `react-native` should work the same since it will add just one listener then. For other cases, different libraries can read/mutate transactions.

Reviewed By: javache

Differential Revision: D58530278

Pulled By: sammy-SC

fbshipit-source-id: d6305963621000be11d51a50cffff64526cca934
2024-06-14 10:22:32 -07:00
Riccardo Cipolleschi 9093f6f9c1 Move to M1 machines (#44944)
Summary:
CircleCI is removing support for intel machines at the end of June, hence we have to migrate to M1.

## Changelog:
[Internal] - Migrate to M1

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

Test Plan: CircleCI is green

Reviewed By: robhogan

Differential Revision: D58589100

Pulled By: cipolleschi

fbshipit-source-id: da7359d8c13093ef1595adc5fabb4f3628006c7a
2024-06-14 10:17:33 -07:00
Nicola Corti 19f6aec4a1 AGP to 8.5.0 (#44951)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44951

As the latest minor of AGP just released, let's bump it so that 0.75 users can use it.

Changelog:
[Android] [Changed] - AGP to 8.5.0

Reviewed By: cipolleschi

Differential Revision: D58587826

fbshipit-source-id: c14091faba1cb270ea2386f22fdbf079bce61421
2024-06-14 09:48:30 -07:00
Nicola Corti 9c7c955834 Add package.json to default lockFiles for ReactSettingsExtension (#44948)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44948

This is a small improvement suggested by tido64 to also account for package.json when computing caching
for autolinking of libraries.

Changelog:
[Internal] [Changed] - Add package.json to default `lockFiles` for ReactSettingsExtension

Reviewed By: cipolleschi

Differential Revision: D58587739

fbshipit-source-id: 6e0acf7d4badd8d8cc25dd90bb55fd6c0fa3779b
2024-06-14 09:33:45 -07:00
Ramanpreet Nara e78742a9d8 Allow native module loads during react instance init
Summary:
## Context
Right now, the ReactInstance construtor eagerly initializes native modules.

## Problem
When these modules initialize, they may load other modules. But, all those loads will fail, because the react instance is in the process of being constructed.

## Changes
Eagerly initialize modules after the react instance is created. That way, these native module requires work.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D58537536

fbshipit-source-id: d0e424df708ec35b014f5cecda11e8756e8f4346
2024-06-14 09:17:32 -07:00
Ramanpreet Nara 74d030de70 Attach react instance to react host immediately
Summary:
## Changes
1. Store the react instance inside a private property (vs in the mReactInstanceTaskRef)
2. Attach the react instance to that property immediatley, after create

## Problems resolved
1. React host apis that use the instance (like ReactContext.getNativeModule()) will now also work **during** react native init. (see T191972567).
2. If exceptions get thrown during react instance init, the react instance will now get cleaned up (see test plan).

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D58537535

fbshipit-source-id: fddf44d45b214b52a950e33d67ac6612a50ddcba
2024-06-14 09:17:32 -07:00
Blake Friedman 2e2b71eeab replace test_android_template with test_android_helloworld (#44905)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44905

Replaces the last template CI job.

Changelog: [Internal] [Changed] Use Helloworld in GHA CI workflow.

Reviewed By: cortinico

Differential Revision: D58466813

fbshipit-source-id: 333b9a4c71eec6901c78f144db48f365539c6a5a
2024-06-14 08:08:26 -07:00
Blake Friedman 7061649c03 Fixes for release builds (#44943)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44943

Release builds require more configuration.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D58529721

fbshipit-source-id: ca78ab530a459e6b9ec4595d22c1aecc66bc9dc0
2024-06-14 06:10:52 -07:00
Riccardo Cipolleschi c7d3220f4d Properly export the hermes tarball path to reuse it in RNTester (#44931)
Summary:
While working on GHA, I realized that RNTester is not reusing the hermes package we create in the previous steps.

This change should fix that, saving ~5 minute per RNTester test as it does not have to rebuild hermes every time.

## Changelog:
[Internal] - Improve CI to reuse hermes tarballs

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

Test Plan:
| Before | After |
| --- | --- |
| <img width="847" alt="Screenshot 2024-06-13 at 16 02 32" src="https://github.com/facebook/react-native/assets/11162307/099fd2d4-0954-4e64-baf0-6322e02d57bb"> | <img width="1203" alt="Screenshot 2024-06-13 at 16 34 20" src="https://github.com/facebook/react-native/assets/11162307/f8b9f9b6-0bd3-4ea4-8acd-3a4c1bffbc88"> |

Reviewed By: cortinico

Differential Revision: D58530335

Pulled By: cipolleschi

fbshipit-source-id: e711ae8affd78a4da4b64e6092cfffafd40589e5
2024-06-14 04:42:15 -07:00
Ruslan Lesiutin 7bd98eecd0 Add test showcasing memory leak in RemoteObjectsTable in Hermes (#44936)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44936

# Changelog: [Internal]

Added a small test that uses `folly:ManualExecutor`, which reproduces the memory leak issue in Hermes' RemoteObjectsTable:
1. Send `Runtime.enable`
2. Evaluate `console.log(<object>);` to populate `RemoteObjectsTable`
3. Send `Page.reload` to reload VM

This test is expected to fail, because by the time it is published, the D58398254 hasn't landed.

Reviewed By: motiz88

Differential Revision: D58531763

fbshipit-source-id: 99af3bfce0a31fe905d5bf2bf433f62cfbc34897
2024-06-14 04:05:10 -07:00
Alex Taylor (alta) 6584b408fb Deploy 0.238.0 to xplat (#44941)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44941

Changelog: [Internal]

Reviewed By: cyan33

Differential Revision: D58565114

fbshipit-source-id: ba6cba0445327ff7ff57505dbb498f2b5d8d5fe7
2024-06-14 02:19:11 -07:00
Charles Dudley 8b53d41a88 Update RN Share.share()'s argument types to be more explicit (#44887)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44887

The previous inexact object types and documentation for Share.share()'s arguments have led to confusion in how this library should be used. This diff updates the argument types to be more explicit, and rewrites some of the documentation for clarity.

Changelog:
[General][Breaking] Update `Share.share()`'s argument types to be more explicit.

Reviewed By: NickGerleman

Differential Revision: D58224906

fbshipit-source-id: 5ac8efe7caa0ecdd430fa7a1951c73c4acd8c6a1
2024-06-13 14:55:27 -07:00
Richard Howell 261f7b9f11 make yogaApple modular (#44938)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44938

Yoga is transitively included in Swift targets and needs to be modular.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D58469454

fbshipit-source-id: 72bc6b5d3e5ee0710d9334a626e4e7297ce26b09
2024-06-13 14:18:45 -07:00
Rubén Norte 49a911fab4 Back out "Revert D58459930: [react-native][PR] Add ReactMarkerConstants.CONTENT_APPEARED support on Android"
Summary:
Changelog: [ANDROID] [ADDED] - Add the ReactMarkerConstants.CONTENT_APPEARED support on Android in bridgeless mode.

This re-applies https://github.com/facebook/react-native/pull/43620 which was reverted because a CI job started failing because we forgot to update `packages/react-native/ReactAndroid/api/ReactAndroid.api`.

Reviewed By: cortinico

Differential Revision: D58535868

fbshipit-source-id: 9eec33c5e798850a7434a6c391abf2fc3fc9d0a6
2024-06-13 12:49:25 -07:00
Moti Zilberman be6eda8c98 Suppress LogBox for warnings if Fusebox console is available
Summary:
Changelog: [Internal]

Showing warnings in LogBox is noisy, confusing for web developers, and not the best use of screen real estate on mobile platforms. Since the Fusebox console offers a superior experience, as of this diff we'll suppress warnings in LogBox if we detect that Fusebox is available.

*The first time* a warning is suppressed, globally (i.e. at most once per app launch), we'll show a notification pointing the user towards Fusebox. When the notification is clicked, we call the `DevSettings.openDebugger` method and dismiss it.

The wording of the notification ("Open debugger to view warnings") is intentional:

1. It's short enough to fit on small screens in its entirety.
2. It doesn't actually say "*click here* to open the debugger". This is for the best because `DevSettings.openDebugger` is a best-effort method that might fail, and in the current implementation there's no reliable feedback to the user about the success/failure of the launch.

Reviewed By: huntie

Differential Revision: D57681446

fbshipit-source-id: fe6101785780de3bc586ade11f471f7c74707be1
2024-06-13 12:22:48 -07:00
Moti Zilberman e3a76c5155 Expose DevSettings.openDebugger method to JS (#44934)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44934

Resubmission of D57681447 with an updated `ReactAndroid.api`.

 ---

Changelog: [Internal]

Adds a private API that gives JS the ability to trigger the same "open debugger" action as in the Dev Menu. This is in preparation for changes to LogBox.

For simplicity, this method operates on a best-effort basis - i.e. it doesn't report the success or failure (or failure reason) of the launch.

Reviewed By: huntie

Differential Revision: D58529832

fbshipit-source-id: e5510f529a19e0149d8dce04fa610e6c2371cc79
2024-06-13 12:22:48 -07:00
Vitali Zaidman dc460147bb Update debugger-frontend from 06a25f7...f7e972c (#44935)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44935

Changelog: [Internal] - Update `react-native/debugger-frontend` from 06a25f7...f7e972c

Resyncs `react-native/debugger-frontend` from GitHub - see `rn-chrome-devtools-frontend` [changelog](https://github.com/facebookexperimental/rn-chrome-devtools-frontend/compare/06a25f749e9653fb794878e28e1fc4ffab53ccb8...f7e972ce2917749a125fc0871781d9307ca336e8).

Reviewed By: hoxyq

Differential Revision: D58531480

fbshipit-source-id: 72d6d56a6a0d2262fb0a9120276add25fd4c219a
2024-06-13 10:40:30 -07:00
Pieter Vanderwerff a237e8da7a Destructure all overridden props (#44910)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44910

Props within the `Text` component are accessed both via destructuring the props object but also in some cases by using a "dot" access on the destructured `restProps`. However in all of the "dot" access cases the property is being overrided. Which means in the final JSX these properties get set twice, e.g. via the `restProps` spread then overrrided by static properties. This change just destructures all values to avoid this inefficiency.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D58446569

fbshipit-source-id: 12a800f5e2218a1d95d57cc689a4c79caab480b4
2024-06-13 10:14:56 -07:00
Alex Hunt 1c6bf24cfb Fix default accessor for unstable_fuseboxEnabled (RNTester crash)
Summary: Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D58527490

fbshipit-source-id: 7974189ab2f4d4e7f38199d5e824611634cd4d7b
2024-06-13 08:28:23 -07:00
Riccardo Cipolleschi ece68f0efd Remove the trigger-react-native-release to use the GHA workflow_dispatch UI (#44898)
Summary:
This change removes the need for the trigger-react-native-release.js script.
Thanks to the migration to Github Actions, we can now leverage the GHA workflow UI to trigger a Prepare Release job that creates a github tag that will spin a new release.

The pro of this approach are:
- less code to maintain: instead of a complex trigger release scripts, we only have to maintain two very straightforward scripts for the CI
- easier to trigger a release: instead of running a script, we can now just use the GH UI

The `trigger-react-native-release` script was doing the following steps:
- check that we are in the release branch ==> Already implemented in the GHA workflow
- Gets the branch name (not needed) ==> the job will automatically run on the stable branch
- Check for unsent changes (not needed) ==> we are not in a local environment
- get the gh token (not needed) ==> You need to be logged in GH and have write access to the repo
- get the version ==> provided as a parameter
- fails if the tag is already there ==> Functionality added in the workflow
- Parse and validate the version ==> Functionality added to the action prepare-release action + the JS Script
- Compute the npmTag ==> Functionality added to the action prepare-release action + the JS Script
- trigger the release workflow ==> The GH UI does that for us

## Changelog:
[Internal] - Remove the trigger-react-native-release.js

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

Test Plan: Testing in Production!

Reviewed By: cortinico, huntie

Differential Revision: D58461470

Pulled By: cipolleschi

fbshipit-source-id: 32bb0ee91370c9483a29e2ca2e18e24557d5fd53
2024-06-13 08:19:58 -07:00
Sergei Rybalkin 726a4a1e5e Revert D57681447: Expose DevSettings.openDebugger method to JS
Differential Revision:
D57681447

Original commit changeset: ddb1fbd0f1c8

Original Phabricator Diff: D57681447

fbshipit-source-id: 94bf94227bcc9fab8282bd68ddf3f4f1df64656b
2024-06-13 07:20:18 -07:00
Sergei Rybalkin 7e0f894d3a Revert D58459930: Add ReactMarkerConstants.CONTENT_APPEARED support on Android
Differential Revision:
D58459930

Original commit changeset: 4498a3623c50

Original Phabricator Diff: D58459930

fbshipit-source-id: 8bc5ef3c8b1e42a4085ee6d2834bf6906c936c0d
2024-06-13 07:19:45 -07:00
Alfonso Curbelo 3cb03cb297 Add 0.72.15 to Changelog (#44904)
Summary:
Add 0.72.15 to Changelog

## Changelog:
[Internal] [Changed] - Generated 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

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

Reviewed By: cipolleschi

Differential Revision: D58470819

Pulled By: cortinico

fbshipit-source-id: 20a1816811213ed9a69f1ede3579aa8fc661faf2
2024-06-13 04:53:46 -07:00
Blake Friedman b2e6a37e5b configure to build from source (#44920)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44920

Configure helloworld to build from source, using a combination of our [How to Build from Source](https://reactnative.dev/contributing/how-to-build-from-source#update-your-project-to-build-from-source) guide, as well as using rn-tester's config as a guide.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D58287748

fbshipit-source-id: 836b09416f4da4087fbdea4476d29cd226157914
2024-06-13 04:51:20 -07:00
Blake Friedman 6970854a15 cli assemble support (#44903)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44903

Call our wrapper to assemble an Android build of helloworld.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D58287785

fbshipit-source-id: 15aa303008254780b3d1b625b392bdbe2869a19a
2024-06-13 04:51:20 -07:00
Blake Friedman 20c89f6d83 point react gradle config to monorepo (#44901)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44901

Point Gradle to the monorepo instead of a node_modules, as well as remove some commented out entries we're not interested in.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D58287786

fbshipit-source-id: 92b3d15d05c55a2589bb8a6b75dc3d5d0f9756ff
2024-06-13 04:51:20 -07:00
Blake Friedman 89f16da89e Fix cli assemble, build & install (#44902)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44902

Add support for building (assembling) a React Native Android project.

Changelog: [General][Added] core-cli-utils Android support

Reviewed By: cortinico

Differential Revision: D58287783

fbshipit-source-id: 381909fd461902723d6046b82ea5a2047a99deab
2024-06-13 04:51:20 -07:00
Biki-das 45ac64ee13 Fix:-fixed dark mode appearance for the a11y and action sheet examples in … (#44795)
Summary:
Fixes the `a11y` and actionSheet examples in the RN tester iOS app, where in dark mode, some text were not taking the appropriate color

**Before**

<img width="401" alt="Screenshot 2024-06-05 at 5 28 28 PM" src="https://github.com/facebook/react-native/assets/72331432/a17f2713-66e8-45bc-9923-baa328f40839">

<img width="401" alt="Screenshot 2024-06-05 at 5 28 37 PM" src="https://github.com/facebook/react-native/assets/72331432/4ca765a1-ebff-41e5-97ba-84f4d274f0c3">

**After**

<img width="401" alt="Screenshot 2024-06-05 at 5 29 56 PM" src="https://github.com/facebook/react-native/assets/72331432/c4f82d2c-4602-4165-abef-5620cbe45446">

<img width="401" alt="Screenshot 2024-06-05 at 5 30 08 PM" src="https://github.com/facebook/react-native/assets/72331432/973558dd-854c-4eb8-91d6-a288ba7b0561">

## Changelog:

N/A

Pick one each for the category and type tags:

[INTERNAL] [FIXED] - Fix RN tester Example appearance in dark mode for A11y and ActionSheet.

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

Test Plan: Tested using the RN tester app.

Reviewed By: NickGerleman

Differential Revision: D58469005

Pulled By: huntie

fbshipit-source-id: 05f991f1c3efae7ccfc90535aaa62d6075aad18e
2024-06-13 04:26:27 -07:00
Moti Zilberman 1fb5a4b283 Expose DevSettings.openDebugger method to JS (#44647)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44647

Changelog: [Internal]

Adds a private API that gives JS the ability to trigger the same "open debugger" action as in the Dev Menu. This is in preparation for changes to LogBox.

For simplicity, this method operates on a best-effort basis - i.e. it doesn't report the success or failure (or failure reason) of the launch.

Reviewed By: hoxyq

Differential Revision: D57681447

fbshipit-source-id: ddb1fbd0f1c8d07bfa57d65c54e3a34bb7a470a8
2024-06-13 04:01:25 -07:00
Kudo Chien 5da9fdf8f1 Add ReactMarkerConstants.CONTENT_APPEARED support on Android (#43620)
Summary:
Add the `ReactMarkerConstants.CONTENT_APPEARED` support on Android in bridgeless mode. This is an important marker for TTI measurement.

## Changelog:

[ANDROID] [ADDED] - Add the `ReactMarkerConstants.CONTENT_APPEARED` support on Android in bridgeless mode.

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

Test Plan:
adding this on RNTesterActivity to see if the log is executed

```kotlin
ReactMarker.addListener { name, tag, instanceKey ->
  if (name == ReactMarkerConstants.CONTENT_APPEARED) {
    Log.i("XXX", "XXX")
  }
}
```

Reviewed By: cortinico

Differential Revision: D58459930

Pulled By: rubennorte

fbshipit-source-id: 4498a3623c506d228aea995c8aeafdb51fcc5b96
2024-06-13 03:57:16 -07:00
Nicola Corti 1cb587c620 Do not publish Gradle Scans (#44925)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44925

I have the suspect this is causing our builds to be slower and especially causing the template tests to take 6 hours.
Let's try to disable it.

Changelog:
[Internal] [Changed] - Do not publish Gradle Scans

Reviewed By: cipolleschi

Differential Revision: D58520463

fbshipit-source-id: 028e16a725ea87e178ed4e0bf134737f32780544
2024-06-13 03:41:39 -07:00
Riccardo Cipolleschi 9fe9f032e6 Fix publish-release regex (#44921)
Summary:
The publish_release job is broken due to the initial regex. This change would like to fix it

## Changelog:
[Internal] - Fix publish_release job

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

Test Plan:
Test on PR

<img width="1028" alt="Screenshot 2024-06-13 at 08 51 59" src="https://github.com/facebook/react-native/assets/11162307/0f68be41-a820-454e-9aca-99b2178984cd">

Reviewed By: huntie

Differential Revision: D58513441

Pulled By: cipolleschi

fbshipit-source-id: 55d632e111c4057431c5c607330571af2848534e
2024-06-13 03:24:40 -07:00
Phillip Pan b19bf2b6d7 ship shared module queue (#44916)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44916

Changelog: [Internal]

reached ship decision last year, getting rid of the gating here

Reviewed By: javache

Differential Revision: D58476997

fbshipit-source-id: 0ad52d29ac79b1751d6f10e67dc6886bf88e5ba4
2024-06-12 21:13:38 -07:00
Pieter Vanderwerff f7aea0c8e1 Fork onPress callbacks for ios highlighting (#44909)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44909

Today we wrap all `onPressIn` and `onPressOut` callbacks we pass to pressability so we can set the `highlighted` state. However highlighted state is only ever set to anything other that false on iOS. This change not only skips calling `setHighlighted(false)` on every press event but also skips wrapping the callback.

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D58391419

fbshipit-source-id: e79f51469609a59063098501f015f8078e3db79f
2024-06-12 19:12:15 -07:00
Peter Abbondanzo 0ad107b988 Add Clipboard module to base packages (#44881)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44881

Updates the companion object for `ClipboardModule` to re-export the generated parent's `NAME`.

Changelog: [Internal]

Differential Revision: D58426185

fbshipit-source-id: a60462a990003413f9b0c646a97026217a64b418
2024-06-12 17:06:27 -07:00
Jakub Kosmydel 3753b7a0e7 Fix inverted flat list (#44168)
Summary:
This PR solves [this issue](https://github.com/facebook/react-native/issues/44151).
Inverted FlatList doesn't work (elements cannot be clicked) when the list is scrolled.

## 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
-->
[GENERAL] [FIXED] - Fix clicking items on the inverted FlatList on the new architecture

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

Test Plan:
# Steps
1. `buck2 install catalyst-ios` or `buck2 install catalyst-android`
2. Go to `RNTester Browser - Fabric` -> `FlatList` -> `Inverted`
3. Toggle inverted to `true`
4. Scroll to the top
5. Tap down and drag to either left or right
6. Expected is to have Red highlighted (which indicate Press Down) when dragged.

## iOS
| Before | After |
|-----------------------|----------------------|
|  https://pxl.cl/53vCW  |  https://pxl.cl/53vDq |

## Android
| Before | After |
|-----------------------|----------------------|
|  https://pxl.cl/53vFp |  https://pxl.cl/53vFG |

## Reproducing steps from OSS

1. Use this reproducer: https://github.com/WoLewicki/reproducer-react-native/tree/%40wolewicki/flatlist-inverted
2. Apply changes from this PR & build the app.
3. Scroll a bit the list, so it changes the position.
4. The `onPress` should be fired when the button is clicked.
5. Do the following tests:
  1. Add a `horizontal` prop to the FlatList - verify everything works.
  2. Remove a `inverted` prop - verify everything works.
  3. Remove a `inverted` prop and add a `horizontal` prop - verify everything works.
6. Test different combinations of transforms of the FlatList, example:
```javascript
      <FlatList
        inverted
        horizontal
        style={{
          transform: [
            {scaleY: -1},
            {scaleY: -2},
            {scaleY: -0.5},
            {translateY: 20},
            {translateY: -10},
            {skewX: '10deg'},
            {rotateX: '10deg'},
          ],
        }}
      />
```

<details>

<summary>Reproducrer</summary>

https://github.com/facebook/react-native/assets/104823336/28cfe607-43e8-4f80-bbfb-59085ae0f986

</details>

<details>

<summary>RN tester</summary>

https://github.com/facebook/react-native/assets/104823336/e00cd488-d98f-4ece-9cab-b8a7212acb04

</details>

Reviewed By: arushikesarwani94

Differential Revision: D56441112

Pulled By: realsoelynn

fbshipit-source-id: 82c47f6bcc1f25cfbbd55aedf9652052bb86cf47
2024-06-12 16:18:23 -07:00
Blake Friedman d54fd6219e disable on PRs (#44912)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44912

While moving from CircleCI → GHA, we're removing this blocking folks landing PRs and just running on main.  We will re-enable once GHA is stable.

Changelog: [General][Changed] Disable GHA on PRs until it's stable

Reviewed By: NickGerleman

Differential Revision: D58478000

fbshipit-source-id: 053ee53455956bf19b6f9113cb796346359ad4ef
2024-06-12 14:41:25 -07:00
Peter Abbondanzo b6c3433537 Hybrid image aliasing (#44803)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44803

This change introduces a new prop to the Android `Image` component: `resizeMultiplier`. This prop can be used when the `resizeMethod` is set to `resize`, and it directly modifies the resultant bitmap generated in memory from Fresco to be larger (or smaller) depending on the multiplier. A default of 1.0 means the bitmap size is designed to fit the destination dimensions. A multiplier greater than 1.0 will set the `ResizeOptions` provided to Fresco to be larger that the destination dimensions, and the resulting bitmap will be scaled from the hardware size.

This new prop is most useful in cases where the destination dimensions are quite small and the source image is significantly larger. The `resize` resize method performs downsampling and significant image quality is lost between the source and destination image sizes, often resulting in a blurry image. By using a multiplier, the decoded image is slightly larger than the target size but smaller than the source image (if the source image is large enough).

It's important to note that Fresco still chooses the closest power of 2 and will not scale the image larger than its source dimensions. If the multiplier yields `ResizeOptions` greater than the source dimensions, no downsampling occurs.

Here's an example:
If you have a source image with dimensions 200x200 and destination dimensions of 24x24, a `resizeMultiplier` of `2.0` will tell Fresco to downsample the image to 48x48. Fresco picks the closest power of 2 (so, 50x50) and decodes the image into a bitmap of that size. Without the multiplier, the closest power of 2 would be 25x25, which is half the quality.

## Changelog

[Android][Added] - Adds a new `Image` prop `resizeMultiplier` to help increase quality of small images on low DPI devices

Reviewed By: javache

Differential Revision: D58120352

fbshipit-source-id: e0ebf4bd899170134825a29f72a68621447106c0
2024-06-12 12:57:53 -07:00
Edmond Chui deb4819229 Update debugger-frontend from fa5df76...06a25f7 (#44907)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44907

Changelog: [Internal] - Update `react-native/debugger-frontend` from fa5df76...06a25f7

Resyncs `react-native/debugger-frontend` from GitHub - see `rn-chrome-devtools-frontend` [changelog](https://github.com/facebookexperimental/rn-chrome-devtools-frontend/compare/fa5df7604089aa4015132bb66b1d0b88411cc4c6...06a25f749e9653fb794878e28e1fc4ffab53ccb8).

Reviewed By: huntie

Differential Revision: D58469457

fbshipit-source-id: c79a41888726d526ffc851bcc7550fd287bbf26b
2024-06-12 12:11:53 -07:00
Pieter Vanderwerff 54997e429a Cleanup accessibility checks (#44885)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44885

Cleanup accessibility related props checks to ensure we are doing the minimal amount of work. e.g. reduce duplicate `null` checks and shift checks to conditional branches that use them.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D58390430

fbshipit-source-id: f2c8989b6520cda9f14f9a04cd4fd6e126c501fd
2024-06-12 11:51:44 -07:00
Gijs Weterings b44e3f69a4 Add java and JS coverage collection to RNTester for Jest E2E (#44856)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44856

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D58360098

fbshipit-source-id: dd06f9d3f2fe887cb9311ccfef811a2965ca5750
2024-06-12 11:48:07 -07:00
Moti Zilberman df35e258b2 Prevent Fusebox infra crash if RCTBridge is dealloc'ed off the main queue (#44877)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44877

Changelog: [Internal]

We're seeing a sporadic iOS crash that suggests `[RCTBridge dealloc]` is being called off the main queue (despite a comment suggesting it shouldn't be). This exposes a race condition between destroying the `HostTarget` and attempting to unregister the instance+runtime from it . Here we use `RCTExecuteOnMainQueue` to make sure the `HostTarget` destruction is always sequenced after the `unregisterFromInspector()` call.

Reviewed By: huntie

Differential Revision: D58415684

fbshipit-source-id: a22e239c80c3204fe32b9e73719ffaa131feaffb
2024-06-12 11:31:56 -07:00
Riccardo Cipolleschi 11e5394796 Revert D58288489: Multisect successfully blamed "D58288489: [RN][Fusebox][iOS] Implement new HostTargetMetadata fields (iOS)" for one test failure (#44911)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44911

This diff reverts D58288489
D58288489: [RN][Fusebox][iOS] Implement new HostTargetMetadata fields (iOS) by huntie causes the following test failure:

Tests affected:
- [fbsource//xplat/js/react-native-github/packages/react-native/ReactCommon/jsinspector-modern:testsAndroid - main](https://www.internalfb.com/intern/test/844425054538351/)

Here's the Multisect link:
https://www.internalfb.com/multisect/5466028
Here are the tasks that are relevant to this breakage:
T191385299: 50+ tests unhealthy for react_native

The backout may land if someone accepts it.

If this diff has been generated in error, you can Commandeer and Abandon it.

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D58475289

fbshipit-source-id: 3a4476d1350c4986cdb673bdb4ac52af353a00ea
2024-06-12 11:30:13 -07:00
Peter Abbondanzo 297ded90aa Fall back to app AlertDialog for non AppCompat themes (#44495)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/44495

## Summary
Migrates the `AlertFragment` from `android.app.AlertDialog` to `androidx.appcompat.app.AlertDialog`. This backports tons of fixes that have gone into the AlertDialog component over the years, including proper line wrapping of button text, dark mode support, alignment of buttons, etc.

This change provides a fallback to the original `android.app.AlertDialog` if the current activity is not an AppCompat descendant.

## For consideration
- Alert dialog themes may no longer need the `android` namespace, meaning themes can now be specified as `alertDialogTheme` rather than `android:alertDialogTheme`.

## Changelog:

[Android] [Changed] - Migrated `AlertFragment` dialog builder to use `androidx.appcompat`

Reviewed By: zeyap

Differential Revision: D57113950

fbshipit-source-id: ba5109c9d79b6ceb042ff93eebe796a2d14ebd63
2024-06-12 11:24:56 -07:00