Commit Graph

12270 Commits

Author SHA1 Message Date
Dmitry Rykun a9618b33be Expose UIManager.getConstants instead of getNativeViewConfig to JS in bridgeless mode (#37865)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37865

In bridge mode UIManager's `constants` contain view configs for every registered native component and possibly some extra data.

On iOS there is no extra data, but on Android in addition to view configs there are `genericBubblingEventTypes` and `genericDirectEventTypes`. They are then [merged](https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/ReactNative/getNativeComponentAttributes.js#L110-L116) into `bubblingEventTypes` and `directEventTypes` of every view config.

This diff replaces `getNativeViewConfig` binding with `getConstants` to make this behaviour possible in the bridgeless mode.

This diff also removes caching on native side with the expectation that `constants` will be cached on JS side just as [it is done](https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/ReactNative/PaperUIManager.js#L24-L32) in bridge mode.

Changelog: [Internal] - Expose UIManager.getConstants instead of getNativeViewConfig to JS in bridgeless mode.

Reviewed By: RSNara

Differential Revision: D46698717

fbshipit-source-id: f9c96e220e49f6947766336ea545c01e38cb46ac
2023-06-28 04:17:07 -07:00
Phillip Pan 2df19cec82 convert ProjectMock path type from string to Pathname (#38085)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38085

Changelog: [Internal]

the path instance attribute on `Project` is not actually supposed to be `String`, but `Pathname`: https://www.rubydoc.info/github/CocoaPods/Xcodeproj/Xcodeproj/Project#path-instance_method

i need this actually to be a pathname, so doing the refactor in this diff

Reviewed By: cipolleschi

Differential Revision: D47041355

fbshipit-source-id: 8b43c3a6f1cbc0f930749f380bd9d06ed44c0c37
2023-06-27 16:06:54 -07:00
Xixi Liran 6fbbe26f5f Fix 'out-of-line definition of constexpr' build error for XCode 15 for React Native (#38079)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38079

This diff fixes the
```
out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated [-Werror,-Wdeprecated]
```
error in `RAMBundleRegistry`

## Changelog:
[internal] - Fix Xcode 15 namespace build errors in `RAMBundleRegistry`.

Reviewed By: javache, cipolleschi

Differential Revision: D46988689

fbshipit-source-id: 5dc34b0f7d6fb266bc379b3639244bf69505aa88
2023-06-27 13:20:36 -07:00
Intl Scheduler 01e62d9498 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907907694341
Sandcastle Job Instance ID: 22517999117287273
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47069434

fbshipit-source-id: 89018bf327fbf77f911ad422d512be8c365e2410
2023-06-27 12:12:43 -07:00
Ken Tominaga 04d1de5896 Remove iOS 12 version check (#33460)
Summary:
I removed the code checking iOS 12 availability because the iOS minimum deployment target is now iOS 12.4 after these commits (https://github.com/facebook/react-native/commit/982ca30de079d7e80bd0b50365d58b9048fb628f, https://github.com/facebook/react-native/commit/c71e6efbcd2b95faee327d9763d321488120bc5e).

My previous pull requests regarding iOS 11
* [Remove iOS 11 version check by ken0nek · Pull Request https://github.com/facebook/react-native/issues/32151 · facebook/react-native](https://github.com/facebook/react-native/pull/32151)
* [Remove iOS 11 availability check by ken0nek · Pull Request https://github.com/facebook/react-native/issues/32488 · facebook/react-native](https://github.com/facebook/react-native/pull/32488)
* [Remove iOS 11 deprecation warnings around SafeArea by ken0nek · Pull Request https://github.com/facebook/react-native/issues/32851 · facebook/react-native](https://github.com/facebook/react-native/pull/32851)

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://github.com/facebook/react-native/wiki/Changelog
-->

[iOS] [Changed] - Remove iOS 12 availability check

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

Reviewed By: NickGerleman

Differential Revision: D35021632

Pulled By: javache

fbshipit-source-id: bf85d44874a2c10cb345d33df7c9e4789312a7cd
2023-06-27 11:51:00 -07:00
Matt Blagden 48791bcd98 Fix grouping of console logs (#37835)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37835

Chrome Dev Tools doesn't correctly display grouped console logs (i.e. console output between a `console.group` and `console.groupEnd`) when timestamps are all zero.

Populate the timestamp field so grouping functions as expected.

Changelog: [General] [Fixed] Fix timestamps and grouped display of console messages within in a `console.group`

Reviewed By: fbmal7

Differential Revision: D46605659

fbshipit-source-id: c5821bfb4807c7f0ce28b7bb95ea08de29caf8a2
2023-06-27 10:44:42 -07:00
Jordan Brown 37460b06a4 Deploy 0.210.0 to xplat (#38097)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38097

Changelog: [Internal]

Reviewed By: mroch

Differential Revision: D47056034

fbshipit-source-id: 3a5f387722b637ad56a7871008bd9afecb0c52c8
2023-06-27 09:14:20 -07:00
trashcoder e35ca71bca Trashcoder/blob slice content type (#38078)
Summary:
I added the contentType parameter to Blob.slice like it's in the MDN Web docs.
This PR fixes https://github.com/facebook/react-native/issues/38058

When i slice a Blob for chunked uploads with react native i lost the content type, e.g. "image/jpeg", so the server doesn't know what kind of file he gets. In the docs of MDN the slice method was described with a third contentType parameter which was missing in Metas implementation.
## Changelog:
 [GENERAL] [ADDED] added a third parameter "contentType" to method slice of class Blob.

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

Test Plan:
I tested it with the unit-tests:
yarn run test Blob-test.js
yarn run v1.22.19
$ jest Blob-test.js
 PASS  packages/react-native/Libraries/Blob/__tests__/Blob-test.js
  Blob
    ✓ should create empty blob (5 ms)
    ✓ should create blob from other blobs and strings
    ✓ should slice a blob (1 ms)
    ✓ should slice a blob and sets a contentType
    ✓ should close a blob (4 ms)

My added unit test results "✓ should slice a blob and sets a contentType".

Reviewed By: hoxyq

Differential Revision: D47057162

Pulled By: blakef

fbshipit-source-id: 0931b0b828f81b9b90562ffd51d4111c81034ffc
2023-06-27 09:10:13 -07:00
Samuel Susla ebbd22c9d8 Add nullptr check to SharedFunction (#38075)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38075

changelog: [internal]

`SharedFunction<>` is created with nullptr for its internal `std::function`. If called after created with default constructor, it crashes app. It also does not have API to check if its internal function is not nullptr.

With image cancelation, there is a race between when native component calls `imageRequest.cancel()` and when cancelation function is set in `RCTImageManager`.
To fix this, this diff adds a nullptr check inside SharedFunction. So it is always safe to call.

Reviewed By: javache

Differential Revision: D47022957

fbshipit-source-id: 0a04a87cd1ffe6bf3ca2fded38f689f06cc92ca9
2023-06-27 09:01:29 -07:00
Riccardo Cipolleschi a702d0515f Warn users when a component is registered in Rendere and in the interop (#38089)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38089

This change add a warning if a component is registered in both the New Renderer and in the Interop layer.

This can help users migrating their components once the library has been migrated.

## Changelog:
[iOS][Added] - Add warning to help users migrate away from the interop layer.

Reviewed By: cortinico

Differential Revision: D47053556

fbshipit-source-id: cc2ba09db16aaa370947a77173b6ea6a0acfa519
2023-06-27 08:45:10 -07:00
Riccardo Cipolleschi a28881a3d7 Implement multiple manager lookup for the interop layer (#38093)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38093

In [this issue](https://github.com/facebook/react-native/issues/37905), the community detected a strict assumption in the interop layer for which, given a component `XXXView`, its ViewManager must be called `RCTXXXViewManager`.

That's not the case for some components, for example, `BVLinearGradient`, which View manager is `BVLinearGradientManager` and not `RCTBVLinearGradientManager`.

This diff adds a secondary lookup logic:
1. We look for the `RCTXXXViewManager`.
2. If not found, we look for `XXXViewManager`.

We will assess whether to generalize this logic once and for all or to expand other lookup cases on an example/failure basis as it's not a goal to have a 100% accurate interop layer. The Goal is to cover most use cases.

## Changelog:
[iOS][Added] - Allow to lookup for ViewManager without the RCT prefix in the Interop Layer

Reviewed By: sammy-SC

Differential Revision: D47055969

fbshipit-source-id: 1d31f3f4bc6f1f543edbd157ce04ad9daf23dbc6
2023-06-27 08:43:23 -07:00
Saad Najmi f7219ec02d Allow RCTBundleURLProvider to request an inline source map (#37878)
Summary:
See: http://blog.nparashuram.com/2019/10/debugging-react-native-ios-apps-with.html
When using direct debugging with JavaScriptCore, Safari Web Inspector doesn't pick up the source map over the network. Instead, as far as I can tell, it expects you to pass the source URL at the time you load your bundle:  https://developer.apple.com/documentation/javascriptcore/jscontext/1451384-evaluatescript?language=objc . This leads to a very sub-par developer experience debugging the JSbundle directly. It will however, pick up an inline source map. Therefore, let's add a way to have React Native tell metro to request an inline source map.

I did this by modifying `RCTBundleURLProvider` to have a new query parameter for `inlineSourceMap`, and set to true by default for JSC.

## Changelog:

[IOS] [ADDED] - Added support to inline the source map via RCTBundleURLProvider

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

Test Plan:
I can put a breakpoint in RNTester, via Safari Web Inspector, in human readable code :D

<img width="1728" alt="Screenshot 2023-06-14 at 4 09 03 AM" src="https://github.com/facebook/react-native/assets/6722175/055277fa-d887-4566-9dc6-3ea07a1a60b0">

Reviewed By: motiz88

Differential Revision: D46855418

Pulled By: huntie

fbshipit-source-id: 2134cdbcd0a3e81052d26ed75f83601ae4ddecfe
2023-06-27 07:26:16 -07:00
Intl Scheduler 3be3731f48 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907907347476
Sandcastle Job Instance ID: 984101041
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47054390

fbshipit-source-id: df0ccc7937a4c6167670155d8ca20453ea6a6dc7
2023-06-27 04:25:35 -07:00
Moti Zilberman 2d6106055b Default to ignoring cached Metro bundle when offline (#38076)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38076

Changelog: [Android][Breaking] Default to ignoring cached Metro bundle when offline

Currently, on Android, if we can't find a Metro server at startup, we try to run the last cached Metro bundle instead of the prebuilt bundle asset in the APK. This is inconsistent with the iOS behaviour, and breaks bundle features that rely on a runtime Metro connection to work correctly - such as HTTP asset loading and lazy bundling (which is the default as of D43600054).

Here we change the default for `ReactInstanceManager`'s `useFallbackBundle` property to `true`, which has the effect of ignoring the cached Metro bundle.

This is a **breaking change** because some developers' workflows might depend on performing a build while connected to a Metro instance, then using the app standalone without access to Metro. This may be exacerbated by the fact that the RN Gradle plugin [skips including a prebuilt bundle in debug builds](https://github.com/facebook/react-native/blob/eaafc260c14674bfbf7ce3a647404c70d546854f/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt#L54). This means that, out of the box, debug builds of Android RN apps will only start if connected to Metro. (Contrast with iOS where a "fallback" bundle *is* included out of the box.)

We recommend that developers always connect to a Metro server in development, and perform a release build for standalone use. Alternatively, developers can use `ReactInstanceManager.setUseFallbackBundle(false)` to restore the old behaviour.

Reviewed By: javache, luluwu2032

Differential Revision: D47021957

fbshipit-source-id: 43ce8078ec95f5d65790b56f4d3dfa4f6a4e9023
2023-06-27 03:39:10 -07:00
Intl Scheduler 71f715ab17 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907907240476
Sandcastle Job Instance ID: 4503600608757187
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47044946

fbshipit-source-id: 945a811a8782d53e903adee4d58f6b701136f490
2023-06-26 19:53:20 -07:00
David Vacca 55786f26c6 Reduce visibility of BridgelessReactContext (#38009)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38009

This diff reduces dependency of BridgelessReactContext to package only, this way we are removing BridgelessReactContext out of the Stable API, and app developers won't be able to access it directly.

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46410796

fbshipit-source-id: e887faecdc62b3109bdc7c9616821338e7b66136
2023-06-26 17:52:22 -07:00
David Vacca 1334594704 Refactor start of ReactHost in ReactHostTest (#37986)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37986

Refactor start of ReactHost in ReactHostTest from previous diffs comments

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46815048

fbshipit-source-id: ff68890413e91804b5b4997d637d81be29b8bff4
2023-06-26 16:58:14 -07:00
David Vacca add10419b6 Test lifecycle evetns in ReactHost (#37985)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37985

Test lifecycle evetns in ReactHost

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46814334

fbshipit-source-id: 888574c3099ddceec4f7f0aaaf14b883b1a4dc0b
2023-06-26 16:58:14 -07:00
David Vacca 015e7cbd93 Create method to test reload of ReactHost (#37981)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37981

This diff introduces a the test ReactHost.testReload() to verify that reloading of react host works as expected

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46813814

fbshipit-source-id: 59e23e2f296c81b7ca3decb81e1f53b5871bbff4
2023-06-26 16:58:14 -07:00
David Vacca de786cddbc Create test that verifies ReactHost.destroy() works as expected (#37983)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37983

Create test ReactHostTest.testDestroy() that verifies ReactHost.destroy() works as expected

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46813611

fbshipit-source-id: 65432dae1b69412af3dec23265f57f73d49cca68
2023-06-26 16:58:14 -07:00
David Vacca 93ec2206e3 Rename testPreload() -> testStart() (#37984)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37984

I'm renaming testPreload -> testStart to make tests consistents with ReactHost

changelog: [internal] internal

Reviewed By: fkgozali

Differential Revision: D46812084

fbshipit-source-id: e53a3ffecba4520015f3fcb078cc9f94ceceeb6e
2023-06-26 16:58:14 -07:00
David Vacca 2c14a0cf41 Fix ReactHostTest.testPreload() (#37980)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37980

In this diff I'm fixing the ReactHostTest.testPreload test that was broken due to concurrency issues between a task submited in bolts that interacted with the UIThread and RobolectricTestRunner blocking on the UI Thread.

I created an utility method to wait for completion of the task

see: https://robolectric.org/blog/2019/06/04/paused-looper/

changelog: [internal] internal

Reviewed By: fkgozali

Differential Revision: D46812085

fbshipit-source-id: 1a8f9de8ef22071e708280720d0384b1562dd56b
2023-06-26 16:58:14 -07:00
David Vacca 9c646ec79a Re-enable ReactHostTest (#37982)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37982

ReactHostTest was disabled as part of D44729814, I'm re-enabling it as they pass locally

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46806278

fbshipit-source-id: 7fa530b4ea5bcacb72253218eded6f9a96e4cdf9
2023-06-26 16:58:14 -07:00
Samuel Susla 247da6ef7f Invalidate NSTextStorage on AttributedString change (#38070)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38070

changelog:
[iOS][fix]: Correctly invalidate NSTextStorage when non layout related props change

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

Problem:
NSTextStorage was not invalidated if non-layout props were changed. So for example 'color' dynamically changed, it wouldn't get invalidated and font of incorrect color would be rendered on screen.

Reviewed By: javache

Differential Revision: D47019250

fbshipit-source-id: bd5d8e6ee4493791dedbafc64a8b8df48a5681e4
2023-06-26 13:49:47 -07:00
Pieter De Baets 772c9eb9f2 Remove unused mapException methods (#38042)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38042

Follow-up cleanup from D34379950, now that fbjni has been upgraded. Also synced the internal and external build flags.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D46975010

fbshipit-source-id: 7d2fd215b68bcebbf259e23923fb3fec1ca09f8a
2023-06-26 04:55:14 -07:00
Nicola Corti e6502d85bf Remove unnecessary @JvmDefault (#38063)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38063

I'm cleaning up the ReactApplication code a bit to use a property with custom setter
Moreover I'm also removing the JvmDefault annotation as that is unnecessary as we use
the `-Xjvm-default=all`, plus is deprecated and will be removed soon by Kotlin.

Changelog:
[Internal] [Changed] - Remove unnecessary JvmDefault

Reviewed By: javache

Differential Revision: D47016727

fbshipit-source-id: 8ab1325c6a9d1db2f8290fb89b766e3d93674b0d
2023-06-26 04:39:02 -07:00
Matthias Giger 3273d38d3b Remove testID from TextStyle types (#38053)
Summary:
`testID` which is a valid prop for `<Text>` is also found in the types for `TextStyle`. This pull request removes said property from the styles.

## Changelog:

General Fixed - Remove testID from TextStyle types

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

Test Plan:
```tsx
const styles = StyleSheet.create({
  view: {
    testID: 'should-error-in-typescript-but-does-not'
  }
})
```

`TextStyle` is used to type the `StyleSheet` along with `ViewStyle` and `ImageStyle` which do not contain `testID`.

```tsx
const MyText = <Text testID="already-typed-fine">Hello</Text>
```

`testID` is used to identify components with the mentioned prop. This works for `Text` and will continue to do so, `TextProps` has `testID` added specifically. When using `getByTestId` in jest adding testID to the style already has no effect.

When adding `testID` to a style a warning will already be shown in development: Warning: Failed prop type: Invalid props.style key `testID` supplied to `Text`.

Reviewed By: javache

Differential Revision: D47006787

Pulled By: NickGerleman

fbshipit-source-id: 6993579ee9c173677594f8f3aea499ac8d8ab232
2023-06-26 04:12:38 -07:00
Lulu Wu c5a1f70087 Get rid of internal macros (#38048)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38048

As title

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D46847633

fbshipit-source-id: 113580ab2bdbafa2dcea6192360ca169b4aa1a98
2023-06-26 03:45:56 -07:00
Lulu Wu 016e77a033 Enable JSC (#38007)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38007

Enable JSC for Bridgeless and wire it up with RNTester Android

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D46527692

fbshipit-source-id: 68f36a6db5573a70156864904bb428a4f789d4f5
2023-06-26 03:45:56 -07:00
Intl Scheduler 85666e4081 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907906946598
Sandcastle Job Instance ID: 18014399490860764
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47017543

fbshipit-source-id: 2989bf74c2d497b1c6e47fe04a13044e68cf0179
2023-06-26 03:41:56 -07:00
Intl Scheduler 26ef0d55be translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907906774786
Sandcastle Job Instance ID: 13510799862654777
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47010828

fbshipit-source-id: 5b3125dff4785c6d0d13e28087b29ebaf6d17e02
2023-06-25 19:10:54 -07:00
Intl Scheduler 945ab0deca translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907906626416
Sandcastle Job Instance ID: 18014399490624584
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47007688

fbshipit-source-id: c271ae134beeaf8033cc93e193b4023552358b20
2023-06-25 11:50:32 -07:00
David Vacca 890565000e Fix RNTester build in CI (#38057)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38057

Fix RNTester build in CI

changelog: [internal] internal

Reviewed By: fkgozali

Differential Revision: D47006806

fbshipit-source-id: 762d2ef82af368acbfb4012879c3851f844c84ec
2023-06-25 11:05:09 -07:00
David Vacca 68fe124fdc Convert ReactApplication to kotlin (#37987)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37987

Convert ReactApplication to kotlin

bypass-github-export-checks

changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D46772472

fbshipit-source-id: 70c6b9fad3e4e365434b59f184753ca23cf5ed56
2023-06-25 00:29:55 -07:00
Intl Scheduler ca9d74a377 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907906271032
Sandcastle Job Instance ID: 36028797999638817
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47002631

fbshipit-source-id: e481ef017174cff7102ff5c192adf0dc5f0b618b
2023-06-24 21:14:08 -07:00
Intl Scheduler f87ab6275b translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907906218720
Sandcastle Job Instance ID: 31525198372512735
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D47000159

fbshipit-source-id: 4ba45af4d7dbefc641eee0795cddd39dff246f22
2023-06-24 12:02:02 -07:00
Lulu Wu f1d8214990 Enable Bridgeless
Summary: Set RuntimeConfig for RNTester

Reviewed By: cortinico

Differential Revision: D46527569

fbshipit-source-id: f0fe0a169723390585e9eeb672cb799953f57e85
2023-06-24 09:37:30 -07:00
Lulu Wu 0876170681 Enable Bridgeless (#38002)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38002

Enable Bridgeless in RNTester Android by adding the initialization logic

Changelog: [Internal]

Reviewed By: fkgozali

Differential Revision: D46375362

fbshipit-source-id: 4c62cba5920d4c90d83a43afed4c4f91e52ec469
2023-06-24 08:06:55 -07:00
Intl Scheduler 72fab3c39a translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907905665807
Sandcastle Job Instance ID: 31525198372178606
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D46995091

fbshipit-source-id: 1a0ba488be5f497fa5d72e90c1fed782798fb812
2023-06-23 21:05:53 -07:00
Intl Scheduler 53529a110f translation auto-update for i18n/messenger.config.json on master
Summary:
Chronos Job Instance ID: 1125907905665807
Sandcastle Job Instance ID: 31525198372178606
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D46995080

fbshipit-source-id: a6b2d2a3b08971325c3832ff8a63034b2563f77a
2023-06-23 21:05:53 -07:00
Pieter De Baets 330639f740 Fix Runnables used with enableEarlyScheduledMountItemExecution being unguarded (#38038)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38038

Changelog: [Internal]

Also un-deprecating the constructors of other Guarded runnables, as an extension of D46685374

Reviewed By: rshest

Differential Revision: D46971220

fbshipit-source-id: cf982f7efe9bcd1ddb7285aa35d836b7c57c4d24
2023-06-23 11:33:09 -07:00
Intl Scheduler 2f1f313123 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907905296658
Sandcastle Job Instance ID: 27021598742167931
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D46971035

fbshipit-source-id: 3a46bc8d7c84dda531122fac886b7a72df4be0fa
2023-06-23 05:54:37 -07:00
Kryštof Woldřich 6c729acd12 Use new getCanonicalName and getMessage methods exposed by fbjni (#37879)
Summary:
When a new version of `fbjni` is released, we can simplify `getName` and `getMessage` calls on throwables.

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

[ANDROID] [CHANGED] - Use new `getCanonicalName` and `getMessage` methods exposed by `fbjni`

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

Test Plan: https://github.com/facebookincubator/fbjni/pull/78

Reviewed By: cortinico

Differential Revision: D46966561

Pulled By: javache

fbshipit-source-id: f30720a30146cf8fe5125336435a1512063c253d
2023-06-23 04:49:15 -07:00
Ruslan Shestopalyuk c34aabbb90 Fix copypasta function documentation in ImageLoaderModule (#38029)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/38029

# Changelog:
[Internal] -

A trivial fix - I was looking into some deeper issues with `Image.prefetch`, noticed that code docs were copypasted and incorrect.

Reviewed By: cipolleschi

Differential Revision: D46959350

fbshipit-source-id: 4e4196f9399d91402d9b206c20f2bbd0d1d0eb2a
2023-06-23 04:24:59 -07:00
Tommy Nguyen eb5f23c07a fix(ios): fix pod install --project-directory=ios failing (#37992)
Summary:
![image](https://user-images.githubusercontent.com/4123478/217618490-4f99e408-1a07-4acf-a05c-e8837562a931.png)

`pod install --project-directory=ios` currently fails when new arch is enabled: https://github.com/react-native-async-storage/async-storage/pull/910

- Patch for 0.71: https://github.com/facebook/react-native/pull/37993
- Patch for 0.72: https://github.com/facebook/react-native/pull/37994

## Changelog:

[IOS] [FIXED] - Fix `pod install --project-directory=...` when New Arch is enabled

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

Test Plan:
```
git clone https://github.com/react-native-async-storage/async-storage.git
cd async-storage
gh pr checkout 910
yarn
RCT_NEW_ARCH_ENABLED=1 pod install --project-directory=example/ios
```

Reviewed By: cortinico

Differential Revision: D46966225

Pulled By: cipolleschi

fbshipit-source-id: 00b4650189175c09c9ec928f85d075890ba4c7c1
2023-06-23 03:27:05 -07:00
Rubén Norte a94bbfbe0e Enable IntersectionObserver in Catalyst and RNTester (#37863)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37863

This creates 2 examples for IntersectionObserver in RNTester:
* The first example is just a copy of the example provided by MDN in the documentation page for `IntersectionObserver` (https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API). This example is useful to show how React Native behaves the same way with the same code.
* The second example is a "stress test" for the API: a screen with 500 simultaneous node being observed at the same time with different observers. As we compute the intersections after scroll (after "mounting" the state update with the updated scroll position) in the main thread, this highlights a possible impact on scroll performance.

IntersectionObserver isn't yet enabled by default, so no need to add a changelog entry about this. We'll add one when the API becomes generally available.

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D45736845

fbshipit-source-id: 40b6bce39f90e04653504b1033a4edfaa65e93ca
2023-06-23 02:56:04 -07:00
Rubén Norte 387bd70e49 Basic implementation of IntersectionObserver (#37853)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37853

This adds a basic implementation of `IntersectionObserver`. This will not be available yet and is only compatible with the new React Native architecture. This shouldn't show up in the changelog until we're ready to enable this in some form.

Changelog: [Internal]

## Context

This implements a basic version of the `IntersectionObserver` API (as defined on the Web) for React Native.

The motivation for this is supporting several use cases that are not possible in React Native at the moment, most importantly:
* Tracking paint times for elements in the screen.
* Tracking precise visibility of elements in the screen outside the context of a `VirtualizedList` (with an even better precision and control).

## Implementation details

This API is implemented as a native module that registers a mount hook in Fabric. Whenever there's a mount (an update to the UI of the host platform) we check for intersections in the shadow tree. The shadow tree contains information about the representation of the UI in a given time (including scroll position), which we use as source of truth for this in a cross-platform fashion. We rely on the fact that scroll position is updated regularly in the shadow tree to provide an up-to-date view into the UI.

**This implementation is completely cross-platform.** The only platform-specific part is the report of mounts in mount hooks from the host platform to Fabric.

This API uses a centralized entity in JS and native to handle registration of observers and dispatch of notifications. The dispatch the notifications for all observers in the same callback so we can easily change the sequencing of events easily (for example, we can change this to use microtasks when they're available in RN).

## Known limitations

* Timestamps are generally accurate for paint (as we report mounts right after they happen in the host platform), but **state updates (like scroll) are reported with a slight delay**.
  * In regular rendering, we first update the shadow tree and then mount it (paint), which is generally precise. In state updates, the UI is updated first and then the shadow tree is updated. In this case, we're not correctly reporting the timestamp of the scroll event (which we should be using) but the timestamp of when the update is processed. We'll fix this in a following diff.
* The IntersectionObserver API has a concept of initial notification. This is a mechanism to report the initial state of an observed target. If we start observing a target when it's added to the tree but before it's painted, this initial notification is supposed to provide initial paint time (which is important for performance measurements). This implements some logic to handle that correctly (we check if there is a pending transaction) but it's currently unreliable:
  * React Native does not currently block paint on microtasks or layout effects, so setting up an observer in these stages could have race conditions with actual mount. If mount happens before the observation is started, the initial notification doesn't report initial time but observation time. If mount happens after, the initial notification should be fine (except in some cases on Android, see the next point).
  * On Android, we have a push model to send mutations to the host platform, we means we consume transactions after commit, not immediately before mount. This breaks this logic and we need to figure out a solution in a following diff.

----

Reviewed By: sammy-SC, rshest

Differential Revision: D45278720

fbshipit-source-id: de350388c6325128f1cf73328779a9d3577a258a
2023-06-23 02:56:04 -07:00
Nicola Corti c54092fe3b Update NativeAnimatedNodeTraversalTest to be more idiomatic (#37970)
Summary:
Follow up to:
- https://github.com/facebook/react-native/pull/37960

## Changelog:

[INTERNAL] - Update NativeAnimatedNodeTraversalTest to be more idiomatic

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

Test Plan: Will run on CI

Reviewed By: javache, cipolleschi

Differential Revision: D46853581

Pulled By: cortinico

fbshipit-source-id: 73776493163413b045482344b7b1be0635f5aa25
2023-06-23 02:31:39 -07:00
Intl Scheduler 7e934947d7 translation auto-update for i18n/fb4a.config.json on master
Summary:
Chronos Job Instance ID: 1125907905026809
Sandcastle Job Instance ID: 9007200231768659
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D46959288

fbshipit-source-id: 6d3e6c9a40a99847babddf1264a17cf332eb51eb
2023-06-22 18:08:55 -07:00
Intl Scheduler 5f18d7f993 translation auto-update for i18n/anna.config.json on master
Summary:
Chronos Job Instance ID: 1125907905026809
Sandcastle Job Instance ID: 9007200231768659
allow-large-files
ignore-conflict-markers
opt-out-review

Differential Revision: D46959269

fbshipit-source-id: 8cba4ed298805285ed0ece857eec08c9d7a704a3
2023-06-22 18:08:55 -07:00