Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50522
This diff migrates the following file to Kotlin - BridgelessDevSupportManager
as part of our ongoing effort of migrating the codebase to Kotlin
Changelog:
[Internal] [Changed] - BridgelessDevSupportManager to Kotlin
Reviewed By: arushikesarwani94
Differential Revision: D72558016
fbshipit-source-id: 9c84f89dfca03991b1feb6f8c9ffe846350aafed
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50520
This diff migrates the following file to Kotlin - DebugOverlayController
as part of our ongoing effort of migrating the codebase to Kotlin
Changelog:
[Internal] [Changed] - DebugOverlayController.java to Kotlin
Reviewed By: arushikesarwani94
Differential Revision: D72557349
fbshipit-source-id: dd4a1c7204206189c176b36f81c6d54f5f780b10
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50521
This diff migrates the following file to Kotlin - DebugCorePackage
as part of our ongoing effort of migrating the codebase to Kotlin
Changelog:
[Internal] [Changed] - Migrate to Kotlin - DebugCorePackage
Reviewed By: javache
Differential Revision: D72556867
fbshipit-source-id: dc37538da7089f532dc3a617a8e7dbccc6e187e3
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50402
While investigating pointer events, I noticed that all Android views fire `onPointerLeave`/`onPointerEnter` in rapid succession on every button press. This is because Android fires `ACTION_HOVER_EXIT` on every frame before firing `ACTION_DOWN` (in the same frame). The logic in JSPointerDispatcher needed to be updated to account for this.
Unfortunately, `ACTION_HOVER_EXIT` events have no means of distinguishing between whether they were driven by the mouse actually leaving the view's bounds or by a button press. Some OS implementations fire this event on the frame just before leaving the view's boundaries while others fire after, so pure X/Y position isn't helpful enough. The button state property on `ACTION_HOVER_EXIT` also never gets set in some OS.
To work around this issue, this change posts a callback to the very next frame after receiving `ACTION_HOVER_EXIT`. If no `ACTION_DOWN` event was received in the same frame, it calls all the way through the existing logic. But, if an `ACTION_DOWN` event *is* received, we compare the event timestamps and if they match we don't post `onPointerLeave`.
Changelog: [Android][Fixed] - Prevent onPointerLeave from dispatching during button presses
Reviewed By: vincentriemer
Differential Revision: D72078450
fbshipit-source-id: dcc7cfa4086963ed8599147d60d8406c54cd5d69
Summary:
Since we've made SurfaceHandler internal, there's no need to maintain a separate interface between it and the actual Binding implementation class.
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D72558674
fbshipit-source-id: d7ac15b0e608c3aa7d05e46f1078cef1e154f846
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50481
It's here! kinda...this only works internally right now, so no OSS usage which is explicitly gated to be off. We can't really avoid exposing the types so here we are.
Changelog: [Internal]
Reviewed By: jorge-cab
Differential Revision: D72428425
fbshipit-source-id: 9642e5db46f9bd34ff505b0e37987da52857b6e9
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50303
This feature is being tested internally right now. We cannot really avoid exposing the type but we are going to make this no-op for now in OSS until we are confident we can roll it out fully
Changelog: [Internal]
Reviewed By: philIip
Differential Revision: D71919847
fbshipit-source-id: b1730b8af5180c4513ce1f0d58b3a6526fffed84
Summary:
I was helping a team with some keyboard link accessibility and they had this strange bug where a link was not keyboard accessible despite having `accessible={true}`. Something that fixed it for them was adding an `accessibilityLabel`, which makes no sense.
Turns out there is a bug when the link encompasses the entirety of the `Text` component. We have a special case for handling links of this manner, and right now we are not setting the `frame` property which is responsible for outlining the element when it takes focus.
This property is not one defined by UIKit, rather it is defined in RCTAccessibilityElement. We use it to derive the accessibilityFrame which has to be in screen coordinates. If you do not set the frame property then it is supposed to use the bounds of the container. This does not work properly, seemingly bc the name "frame" gets mangled internally in UIKit leading to UB. I changed the name the "something" and it works.
To remedy this lets just change the name
Changelog: [iOS] [Fixed]
Reviewed By: javache
Differential Revision: D72338838
fbshipit-source-id: da91d0c28baeb6765d4d604f3e47c91952167f9d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50516
This diff migrates the following file to Kotlin - DevSupportManagerFactory
as part of our ongoing effort of migrating the codebase to Kotlin
Changelog:
[Android] [Changed] - Migrate to Kotlin - DevSupportManagerFactory - We couldn't find any implementation of this class in OSS. Some Kotlin implementers might have to change the method signatures. However this interface is not supposed to be extended in OSS.
Reviewed By: javache
Differential Revision: D72556310
fbshipit-source-id: 35d1ed3c332296d3be5244fdab92a890d7ea3c40
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50517
This diff migrates the following file to Kotlin - ReactInstanceDevHelper
as part of our ongoing effort of migrating the codebase to Kotlin
Changelog:
[Android] [Changed] - Migrate to Kotlin - ReactInstanceDevHelper. Some users implementing this class in Kotlin could have breakages. As this is a devtools/frameworks API we're not marking this as breaking.
Reviewed By: javache
Differential Revision: D72555226
fbshipit-source-id: e7e5523c56de8697def0a509c03e9fe89c6d5839
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50514
When building React Native for mac catalyst on intel architecture, we are observing a build failure in RCTInstance.
See issue: https://github.com/facebook/react-native/issues/50388
Apparently, the compiler don't understand that `errorData[@"isFatal"]` is a BOOL, so we are helping it by extracting the `boolValue`.
## Changelog:
[iOS][Fixed] - Avoid build failure on Catalyst (x86_64)
Reviewed By: cortinico
Differential Revision: D72558024
fbshipit-source-id: 152d89b02ae250a8ae54fe2df658c018d5f63f45
Summary:
Changelog: [internal]
This is stable after the last couple of fixes, so we can enable it by default. Enabling this just improves the accuracy of `IntersectionObserver` and the Event Timing API, and we still haven't shipped those to stable.
Reviewed By: GijsWeterings
Differential Revision: D72561256
fbshipit-source-id: 4b505f1df9c7c495d316e6fbf1498af94aaca959
Summary:
Gone trough all the FIXMEs added in the previous diff by the nullsafe tool, marked the class as nullsafe and ensured no remaining violations.
Changelog: [Android][Fixed] Made NetworkingModule.java nullsafe
Reviewed By: cortinico
Differential Revision: D71979590
fbshipit-source-id: 0ddf764f4707d2ee76ab99bc1a09a4e2a7e6b794
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50347
Added nullsafe FIXMEs for easier reviewing of next diff, where we fix them
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D71979581
fbshipit-source-id: 4ed264ff43794b6aafc2a0ee419a660a6b5b0440
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50366
Gone trough all the FIXMEs added in the previous diff by the nullsafe tool, marked the class as nullsafe and ensured no remaining violations.
Changelog: [Android][Fixed] Made BlobModule.java nullsafe
Reviewed By: cortinico
Differential Revision: D71979598
fbshipit-source-id: bbef5548d05e0b77ea03cf72f41a384fe7294d59
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50364
Added nullsafe FIXMEs for easier reviewing of next diff, where we fix them
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D71979588
fbshipit-source-id: f5ec8bced87ea0c6c1c193be51ebc78396388d0e
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50370
Gone trough all the FIXMEs added in the previous diff by the nullsafe tool, marked the class as nullsafe and ensured no remaining violations.
Changelog: [Android][Fixed] Made TurboModuleManager.java nullsafe
Reviewed By: cortinico
Differential Revision: D71979605
fbshipit-source-id: b8da8f1ad12f5f6d63e7bd876d7c4912d69a4c4d
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50358
Added nullsafe FIXMEs for easier reviewing of next diff, where we fix them
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D71979595
fbshipit-source-id: 19bfcea537b7b62536eafa8e1d0b3f8b50666e22
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50357
Gone trough all the FIXMEs added in the previous diff by the nullsafe tool, marked the class as nullsafe and ensured no remaining violations.
Changelog: [Android][Fixed] Made TurboModuleInteropUtils.java nullsafe
Reviewed By: cortinico
Differential Revision: D71979599
fbshipit-source-id: ffd7006f28db4daf8cd47ce1cd8ff6e3192c0ad1
Summary:
Per discussion in D71979599
Changelog: [General][Fixed] Throw ParsingException when ReactModule doesn't conform to TurboModule invariants
Reviewed By: cortinico
Differential Revision: D72383857
fbshipit-source-id: 2d0282b136312d414234246584d2ae60858955b6
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50367
Added nullsafe FIXMEs for easier reviewing of next diff, where we fix them
Changelog: [Internal]
Reviewed By: cortinico
Differential Revision: D71979600
fbshipit-source-id: be36f4c409a0423b3d3ccdf2c28d96c7a3f50201
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50512
Reland of D72389708
This renames the method to be more aligned to the fact that we're using this entrypoint both for internal
and for OSS users.
I've also added a `assertLegacyArchitectureOnlyWhenMinifyEnabled` that will run only for internal builds.
Changelog:
[Internal] [Changed] -
Reviewed By: javache
Differential Revision: D72552028
fbshipit-source-id: 2594df9ef8056f9931960117770c4b7cddd4e922
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50511
Reland of D72384347
ReactMarker is currently loading the whole `reactnativejni` which we should not be loading in NewArch.
This is resulting in a warning fired for all the NewArch users with `legacyWarningsEnabled`.
I'm cleaning this up by moving it inside `reactnativejni_common`.
Changelog:
[Internal] [Changed] - Move ReactMarker to `reactnativejni_common` as it's used in NewArch also
Reviewed By: javache
Differential Revision: D72552075
fbshipit-source-id: bbc75aada1564f6f54ea70a8dd4f5145d4a3ffaa
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50495
Changelog: [internal]
This migrates the last remaining usages of these polyfills to the built-in classes.
Reviewed By: yungsters
Differential Revision: D67828652
fbshipit-source-id: 5ff039d7413aed49d882ff03e722531cdd195488
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50494
Changelog: [internal]
Removes the dependency on the `event-target-shim` npm package now that we're using a custom implementation within `react-native`.
Reviewed By: yungsters
Differential Revision: D67828636
fbshipit-source-id: 8727f8caa2bd4badd7162eb7b993dcc768e74b85
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50485
Changelog: [internal]
This cleans up the experiment to test the new implementations of `XMLHttpRequest`, `FileReader` and `WebSocket` using the built-in `EventTarget` definition.
This effectively replaces the legacy implementations with the ones using the built-in `EventTarget` class in stable.
Reviewed By: yungsters
Differential Revision: D68625225
fbshipit-source-id: 7ccefe5d8612baca283146cdbca7f7f1d51b4ffa
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50499
We enocuntered an issue internally where the `RCTInstance` was ready before the modules were done registering statically.
When this happens, it can occur that we iterate over an array that is going to be modified.
With this change, we are introducing several changes:
- By default the logs are not outputted, so the array is not going to be populated
- we are making a copy of the array before we start iterating, so even if the original reference is updated, the iteration is safe
- we are not emitting logs if in release mode. This will protect production from this issue. Also, these warns are not going to be useful in production anyway.
## Changelog:
[Internal] - fix crash when RCTInstance is ready while modules are initialized
## Facebook:
This fixes T220205371
Reviewed By: Abbondanzo
Differential Revision: D72512518
fbshipit-source-id: 32e561111d034455a6a778d05af4a96602b74bfb
Summary:
ReactMethod will remain to be supported in the New Architecture, we are unmarking it
changelog: [internal] internal
Reviewed By: shwanton
Differential Revision: D72491698
fbshipit-source-id: 656b36711dcdfc0a776ac05b1f7f431d6416f9dd
Summary:
Changing these object arguments to `$ReadOnly` permits passing in values that are `$ReadOnly` (e.g. `payload` argument to `enqueueNativeEvent`).
Changelog:
[Internal]
Reviewed By: lyahdav
Differential Revision: D72474879
fbshipit-source-id: 27341131724f4f572b78563975774a5b20dee8f8
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50489
ParagraphState is shared between ParagraphTextView and ParagraphComponentView, but we only need one copy. We were forgetting to clear this on ParagraphTextView when recyling.
Changelog: [iOS][Fixed] ParagraphState is correctly deallocated when recycling Text
Reviewed By: cipolleschi
Differential Revision: D72454038
fbshipit-source-id: 43afa4eaea183cc66b64d16870c1403debff985a
Summary:
# Changelog: [Internal]
We should avoid allocating multiple of these, since they can get really big.
`RuntimeSamplingProfile` may contain up to 10k of `Sample` for every second of sampling. Every `Sample` may contain up to 500 of call frames, each of which may have a copy of strings like `functionName` and `url`.
> NOTE: The actual logic for deduplicating strings and not allocating too many of them is not part of this diff and will be published separately. Even with deduplication, there is a reason to avoid copying the profile.
Reviewed By: javache
Differential Revision: D72254364
fbshipit-source-id: fa7907fb5cabbd2ac99d3e4e05a93bcb07f7f7c7
Summary:
# Changelog: [Internal]
This was changed in D70402439.
Since these hexadecimal numbers are serialized as strings, we don't need to includes empty bits, this could save us few kilobytes of the trace in json format.
Also, this is the default for Chromium, so we shouldn't probably diverge.
`0x00000001` -> `0x1`
Reviewed By: robhogan
Differential Revision: D72459307
fbshipit-source-id: 5cc4ccbe25cdc16946e745184ad17dfcd51c6449
Summary:
# Changelog: [Internal]
`"ProfileChunk"` trace events can actually be big, depending on the number of the unique nodes reported in a single chunk.
We should avoid copying it for memory and performance reasons.
Reviewed By: robhogan
Differential Revision: D72459306
fbshipit-source-id: db3583c6c6397bb6ee8a0eb33a06a48bc10e82b8
Summary:
This renames the method to be more aligned to the fact that we're using this entrypoint both for internal
and for OSS users.
I've also added a `assertLegacyArchitectureOnlyWhenMinifyEnabled` that will run only for internal builds.
Changelog:
[Internal] [Changed] -
Reviewed By: mdvacca
Differential Revision: D72389708
fbshipit-source-id: 23830df2f71cc816c7ca178b735a930e794efe47
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50471
ReactMarker is currently loading the whole `reactnativejni` which we should not be loading in NewArch.
This is resulting in a warning fired for all the NewArch users with `legacyWarningsEnabled`.
I'm cleaning this up by moving it inside `reactnativejni_common`.
Changelog:
[Internal] [Changed] - Move ReactMarker to `reactnativejni_common` as it's used in NewArch also
Reviewed By: javache
Differential Revision: D72384347
fbshipit-source-id: 83965c3e4eb7847184856485d1cc1c478b2888d5
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50479
In D72273163 the only reference to RN feature flag `throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS` was removed, so this diff removes the feature flag. Also it removes remnants of D69922771 which are no longer needed.
Changelog: [Internal]
Reviewed By: shwanton
Differential Revision: D72427164
fbshipit-source-id: 398583ac14910a396839140c06011efa084fe04d