Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37761
Changelog: [Android] [Fixed] - W3CPointerEvents: fix a case where cancel can cause NPE
When we need to dispatch a pointercancel event, we clear the previous state (last coordinates, last hit path) for the active pointer ID (this is needed in order to fire the proper events when the action causing the cancel is over).
Previously, we stored the previous state in the form of references to the corresponding state in the current `PointerEventState`. However, this PointerEventState is also used later when actually dispatching the events. Since the dispatch can happen asynchronously, alterations to the event state might be visible during the dispatch. In particular, we saw some cases where an NPE can occur due to removing entries from our local state (which got reflected in the event state).
This change fixes the issue by making copies of the data from the PointerEventState instead of just storing references to it.
Reviewed By: rozele
Differential Revision: D46522585
fbshipit-source-id: 78d6dd60cf8f5419870fb9f6703443c957d4d048
Summary:
This PR converts JSStackTraceTest.java to Kotlin as requested in https://github.com/facebook/react-native/issues/37708.
## Changelog:
[INTERNAL] [CHANGED] - Convert JSStackTraceTest to Kotlin
Pull Request resolved: https://github.com/facebook/react-native/pull/37751
Test Plan:
Run ./gradlew :packages:react-native:ReactAndroid:test.
All tests should pass.
Reviewed By: mdvacca
Differential Revision: D46525516
Pulled By: cortinico
fbshipit-source-id: 880479fc4a38fcacb4a09820e9dbc469393a6cdb
Summary:
Migrates the **ClipboardModuleTest** Java class to Kotlin. It also changes the import for **ClipboardManager** from `android.text.ClipboardManager` to `android.content.ClipboardManager`. Since the import from `android.text` is deprecated and in the [ClipboardManager.java](https://github.com/facebook/react-native/blob/main/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.java) the import refers to `android.content`, so it's safe to update the import in test file as well.
It's a sub-task of the umbrella issue [here](https://github.com/facebook/react-native/issues/37708)
## Changelog:
[INTERNAL] [CHANGED] ClipboardModuleTest class migrated from Java to Kotlin
<!-- 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/37726
Test Plan:
🟢 Test passes when running the following:
```sh
./gradlew :packages:react-native:ReactAndroid:test
```
Reviewed By: cortinico
Differential Revision: D46486129
Pulled By: mdvacca
fbshipit-source-id: 10ca6efdeea1236162dc40871cc0159cbe492335
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37745
`codegen-typescript-test` is using Jest 24 still, which has transitive dependencies on node-notifier < 8.0.1. This is causing us to fail our oss requirements (T139285789), but the original task for it got reaped (T81929770)
Changelog: [Internal]
Reviewed By: makovkastar
Differential Revision: D46506536
fbshipit-source-id: 83037459775f3c8edb000f34f6e6f77ea7059ff0
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37636
Moves `flow-typed/` directory from `packages/react-native/flow-typed/` to the repo root.
- This is a more suitable location for `flow-typed` definitions for 3P dependencies to be used across React Native packages.
- **Breaking**: We no longer publish these 3P libdefs as part of the `react-native` package (assuming that external use of React Native with Flow is extremely rare, and that these projects can manage their own package libdefs).
Changelog:
[General][Breaking] Remove included `flow-typed/` directory from the `react-native` package
- **Upgrade instructions**: Projects using Flow should install or replicate third party `flow-typed` definitions for React Native dependencies — see https://github.com/facebook/react-native/tree/main/flow-typed and [#37636](https://github.com/facebook/react-native/pull/37636).
Reviewed By: hoxyq
Differential Revision: D46313482
fbshipit-source-id: 3d97d5408e44dd43132664c4933f3ff1075f90a1
Summary:
Converts InterpolatorTypeTest from Java to Kotlin, as per issue https://github.com/facebook/react-native/issues/37708
## Changelog:
[Internal] [Changed] - Convert InterpolatorTypeTest to Kotlin
<!-- 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/37724
Test Plan:
Tests pass: `./gradlew :packages:react-native:ReactAndroid:test`
Formatted with [KtFmt](https://facebook.github.io/ktfmt/)
Reviewed By: cortinico, yungsters
Differential Revision: D46486141
Pulled By: mdvacca
fbshipit-source-id: bcdfa6497b9170640b4b9f3f20f6afad8fb56bee
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37695
In this diff I'm reducing visibility of RCTDeviceEventEmitter interface in ReactContext.
This is an internal interface that has no usages externally (neither at Meta or github source)
changelog: [internal] internal
Reviewed By: cortinico, luluwu2032
Differential Revision: D46241623
fbshipit-source-id: 297256b7394768c54b24125ad91f7b3fabbd42d0
Summary:
Converts InstanceHandleHelper from Java to Kotlin, as per issue https://github.com/facebook/react-native/issues/37708
## 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
-->
[Internal] [Changed] - Convert InstanceHandleHelper to Kotlin
Pull Request resolved: https://github.com/facebook/react-native/pull/37740
Test Plan:
Tests pass: `./gradlew :packages:react-native:ReactAndroid:test`
Formatted with [KtFmt](https://facebook.github.io/ktfmt/)
Reviewed By: rshest
Differential Revision: D46515395
Pulled By: cortinico
fbshipit-source-id: 5091d1932c2ad623f063972661ec82ceb4c74089
Summary: SetSpanOperation.java doesn't have the required licence header, causing a compliance failure for OSS repo checkup. This diff adds the header.
Reviewed By: cortinico
Differential Revision: D46505914
fbshipit-source-id: 278021ff08b30b4f051a0f0a6a7dec580e012225
Summary:
Part of https://github.com/facebook/react-native/issues/37708
Convert FakeEventDispatcher to Kotlin
## 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
-->
[Internal][Changed]: Convert FakeEventDispatcher to Kotlin
Pull Request resolved: https://github.com/facebook/react-native/pull/37739
Test Plan:
```
./gradlew :packages:react-native:ReactAndroid:test
```
Reviewed By: rshest
Differential Revision: D46514164
Pulled By: cortinico
fbshipit-source-id: 355f568ad9b36073aa9f1981472a2c7567e7ab2d
Summary:
Converts StackTraceHelperTest from Java to Kotlin, as per issue https://github.com/facebook/react-native/issues/37708
## 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
-->
[Internal] [Changed] - Convert StackTraceHelperTest to Kotlin
Pull Request resolved: https://github.com/facebook/react-native/pull/37741
Test Plan:
Tests pass: `./gradlew :packages:react-native:ReactAndroid:test`
Formatted with [KtFmt](https://facebook.github.io/ktfmt/)
Reviewed By: cortinico
Differential Revision: D46498064
Pulled By: mdvacca
fbshipit-source-id: d0d62097edfa8fe3649e2c72acb4ae8b3d20a89a
Summary:
[Migrate](https://github.com/facebook/react-native/issues/37708) BlobModuleTest class to Kotlin
## 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
-->
[INTERNAL] [CHANGED] `BlobModuleTest` class migrated from Java to Kotlin
Pull Request resolved: https://github.com/facebook/react-native/pull/37719
Test Plan:
Tests should pass
```sh
./gradlew :packages:react-native:ReactAndroid:test
```
Reviewed By: yungsters
Differential Revision: D46485981
Pulled By: cortinico
fbshipit-source-id: 69858fedfd84b59d6c1c2aca99f6fa9c0a8832fa
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37744
This diff introduces the new generic class BoltsFutureTask<> that will be used by ReactHost to expose async task in its API.
The goal of BoltsFutureTask is to avoid leadking the bolts.Task dependency into the ReactHost API.
Public methods of this class follow the spec defined in the Future interface, see: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html. I didn't add javadocs to avoid duplicated documentation with Future and also
becuase this is private class.
Task Cancellation follows the patters defined in bolts documentation: https://github.com/BoltsFramework/Bolts-Android#cancelling-tasks
changelog: [internal] internal
Reviewed By: NickGerleman
Differential Revision: D46170466
fbshipit-source-id: eed92584bcd3ff0145e7cbb5d735139fbb6b0f33
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37638
Changelog: [Android] [Fixed] - W3CPointerEvents: properly update hit path during native gestures
Per [the W3C spec](https://www.w3.org/TR/pointerevents/#the-pointercancel-event), we need to fire pointerout and pointerleave after firing a pointercancel. However, in cases where the pointer doesn't physically leave the target after a cancel (e.g. scrolling by clicking and dragging), we would never re-fire a pointerenter event once the native gesture was completed. This change fixes the bug by clearing out the last hit path (and other relevant state) for the pointer when we start handling a native gesture. Then we'll re-fire a pointerenter as expected upon the next motion event (due to the logic in handleHitStateDivergence).
Note: this bug only affected hovering pointers (e.g. mouse) because for non-hovering pointers the native gesture won't end unless the pointer is physically removed (i.e. finger is lifted).
Reviewed By: javache
Differential Revision: D46226021
fbshipit-source-id: de796217bac27b169ccf9ed5e0df85f7b63d8c5e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37626
`inspector_->connect` can return `null` when the connection fails. Check for `null` and raise an exception (preventing a later crash when the `null` connection is used).
Changelog: [Internal]
Reviewed By: voideanvalue
Differential Revision: D46126080
fbshipit-source-id: 42e08687b4d425dd87642cf6b61f675e77c738ee
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37687
We end up creating a stub RuntimeExecutor wherever we configure this, and might as well pass in the runtime directly, to match the other binding installer signatures.
Changelog: [iOS][Deprecated] Use -[RCTTurboModuleManager installJSBindings:] instead of -[RCTTurboModuleManager installJSBindingWithRuntimeExecutor:]
Reviewed By: philIip
Differential Revision: D46390501
fbshipit-source-id: df7644ccbd04462dbbe752c60e5d5961ab50dff5
Summary:
We haven't really used this macro, so it's safe to remove as of now.
Changelog:
[Internal] [Changed] - Remove CircularDepsValidator.cmake as is not needed
Reviewed By: javache
Differential Revision: D46443083
fbshipit-source-id: 2a48749d7af31c393828668006d53c7a6755ac5d
Summary:
[Codegen 132] This PR introduces `emitMixedProp` to parser-primitives and abstracts the logic out of typescript and parser events as requested on https://github.com/facebook/react-native/issues/34872
## Changelog:
[Internal] [Changed] - Add emitMixedProp to parser-primitives and update usages.
Pull Request resolved: https://github.com/facebook/react-native/pull/37608
Test Plan:
Run yarn jest react-native-codegen and ensure CI is green
## Screenshot of tests passing locally:
<img width="1182" alt="Screenshot 2023-05-28 at 12 46 49 PM" src="https://github.com/facebook/react-native/assets/64726664/dbea4daf-d954-4c7f-b121-c6aad1fb318e">
Reviewed By: dmytrorykun
Differential Revision: D46275638
Pulled By: cipolleschi
fbshipit-source-id: 803d82055c7925e49aca1f408b5c7a50c687349a
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37667
Changelog:
[Android][Fixed] - Fixing line truncation issue in Text containing /n when numberOfLines = {1}
When the text has multiple lines (with new line characters \n to hard-break the lines), and the first line is short enough to fit, Text component with `numberOfLines = {1}` doesn't display "..." at the end and rather disrespects the /n character.
With `numberOfLines = {1}`, On iOS it translates to
`line 1`, on Android & Web it translates to `line 1 line 2...`
**Expected Behavior :**
`line 1...`
Reviewed By: javache, NickGerleman
Differential Revision: D46175963
fbshipit-source-id: 3377c38ab65e6801bddb1f262432f8d156a2641f
Summary:
Changelog: [Internal]
it appears that having some access to jsi in userland will be necessary for framework developers, so i'm moving this API to the public header.
bypass-github-export-checks
Reviewed By: mdvacca
Differential Revision: D46385184
fbshipit-source-id: 7261c0a8ba8c8c9302f65d440a3a3fb2782c0666
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37712
This diff is reverting a change on ReactHostDelegate (D45662329) that caused MobileConfig to not being properly initialize in fb4a.
bypass-github-export-checks
changelog: [internal] internal
Reviewed By: NickGerleman
Differential Revision: D46468413
fbshipit-source-id: 4013ba1b5bdfa50e4cf500bb1524e92303826d90
Summary:
Changelog: [Internal]
now that we've wrapped up the first iteration of the venice stable apis, let's clean up old comments and reorganize things to prepare this header for documentation.
bypass-github-export-checks
Reviewed By: mdvacca
Differential Revision: D46334662
fbshipit-source-id: 68d6d2e41d7f7c5b1c69f3bb72482c418e771f72
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37703
Changelog: [Internal]
i did too good of a job refactoring that these functions don't abstract any arguments away anymore, so let's just delete it
Reviewed By: javache
Differential Revision: D46303713
fbshipit-source-id: 7e0508a7296ebc3d5c62cf0824071bd2ef041193
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37702
Changelog: [Internal]
the context container is a DI object in our internal infra. the delegate method `createContextContainer` is used to pass down internal implementations that may be used in our infra, notably the `ReactNativeConfig`. this API used to be required for the app delegate to implement.
in this change, i introduce a protocol, `RCTContextContainerHandling`, where we shift the burden of creating the DI container to our internal infra where userland can now optionally add dependencies to this.
this also removes more C++ boilerplate for the bridgeless setup.
Reviewed By: sammy-SC
Differential Revision: D46245433
fbshipit-source-id: 552a9ab0b6a178bab592743863694ff886b152f8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37604
Changelog: [Internal]
this isn't needed anymore, so we can delete it and remove it from our public api
Reviewed By: javache
Differential Revision: D46215054
fbshipit-source-id: 97bc7821aeea47223a4b10684efe750ff1899fa2
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37605
Changelog: [Internal]
in this stack, i remove the `bindingsInstallFunc` argument from `RCTHost`'s public API.
the bindingsInstallFunc is a lambda that provides a runtime parameter, which the consumer can "install bindings" to. we have our specific use case for this internally, but there's no need to expose this.
in this change, i introduce a delegate callback path that notifies an internal delegate that the react runtime has been created.
Reviewed By: javache
Differential Revision: D46215051
fbshipit-source-id: 732d6949064b0948b5cf883dc3c0ab494c2ecd94
Summary:
[Codegen 138] This PR introduces `getProperties` to Parser base class and implements the function in Typescript and Flow Parsers.
This PR also gets rid of `getProperties` from :
- `packages/react-native-codegen/src/parsers/typescript/components/componentsUtils.js`
- `packages/react-native-codegen/src/parsers/flow/components/componentsUtils.js`
and updates the usages with `getProperties` from the respective parser objects as requested on https://github.com/facebook/react-native/issues/34872
## Changelog:
[Internal] [Changed] - Add getProperties to Parsers base class and update usages.
Pull Request resolved: https://github.com/facebook/react-native/pull/37633
Test Plan:
Run yarn jest react-native-codegen and ensure CI is green
## Screenshot of tests passing locally:

Reviewed By: cipolleschi
Differential Revision: D46322882
Pulled By: rshest
fbshipit-source-id: 5506ce5ff395946ea8c1258b152716fea0142b95
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37681
User who run their applications using `npx react-native ios` have the application going into the
background if there is inactivity on the device. This is common for users developing on device (why touch
the device if you're tweaking background colours, etc...).
If the application is build with Xcode directly, this is already managed. This change prevents the idle
timer from running in DEBUG builds.
## Changelog:
[iOS][Fixed] - Debug builds from cli disable idle to stop application going into background
Reviewed By: cipolleschi
Differential Revision: D46427401
fbshipit-source-id: 45969cd506a1b76bde3be81d27808bf0e792a817
Summary:
It is generally recommended to use "===" instead of "==" when comparing two strings
Pull Request resolved: https://github.com/facebook/react-native/pull/37673
Test Plan:
## Changelog:
[Internal] [Changed] - use TripleEqual instead of doubleEqual when comparing two string
Reviewed By: cipolleschi
Differential Revision: D46434681
Pulled By: cortinico
fbshipit-source-id: 70522a28799699854d2a4ab814e34ce796082025
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/37685
I'm backporting this comming `60a452b4853dc5651c465867344904dd6fc86703`
from the release branch of 0.72-stable to main which fixes this issue
in the Android NDK:
https://github.com/android/ndk/issues/1740#issuecomment-1198438260
Changelog:
[Internal] [Changed] - Backport Hermes release fix on `main`
Reviewed By: mdvacca
Differential Revision: D46398346
fbshipit-source-id: 593ca9523cb223e7c2d9fe6cccc1abb3ed331203