Commit Graph
7296 Commits
Author SHA1 Message Date
Tim Yung 3eb69f24dd Animated: Revert setNativeView Workaround
Summary:
Reverts {D41122065 (https://github.com/facebook/react-native/commit/1b1b26a099cc2f213bb270bfc0e56a202e618638)}, which is no longer necessary because {D41208895 (https://github.com/facebook/react-native/commit/7cf4cf3afbea4463427944fbed30768a796db724)} fixed the `ref` invalidation in `ScrollView`.

Changelog:
[Internal]

Reviewed By: sammy-SC

Differential Revision: D41390543

fbshipit-source-id: 36c3db80af6e426f233ef0aaf5909942fb7103b2
2022-11-22 15:15:44 -08:00
GabeDahl 6410a621ce Fix typo in renderItem usage snippet (#35416)
Summary:
Fix typo in renderItem usage snippet - TouchableOpacity's JSX closing tag

## Changelog

[General] [Fixed] - Message

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

Test Plan: N/A - Typo is in a comment

Reviewed By: christophpurrer

Differential Revision: D41445946

Pulled By: NickGerleman

fbshipit-source-id: 147226f9b0ef443908f71d25ccf8063b8c1c6142
2022-11-22 14:58:33 -08:00
Rujin Cao 285a98084e @emails -> @oncall (miscs)
Differential Revision: D41063745

fbshipit-source-id: 395ccd254c7410b96915156d59a584d3b255faa8
2022-11-22 01:36:05 -08:00
Samuel Susla d9ade19b71 Make links in LogBox tappable
Summary:
changelog:
[General][Add] LogBox now makes URL links tappable.

Logbox messages may contain URLs with more information about the given error. Right now, they are not tappable or copyable. So engineers need to resort to manually retype the link to browser. This diff tries to address that.

Example of StrictMode error that has link in it.

{F798509909}

Reviewed By: yungsters

Differential Revision: D41305784

fbshipit-source-id: 456a9faf34f8b9e443759dd6903ba67d0b9de73c
2022-11-21 09:09:23 -08:00
Gabriel Donadel Dall'Agnol 8b1f6e09c1 Fix TouchableOpacity componentDidUpdate causing an excessive number of pending callbacks (#35387)
Summary:
The commit https://github.com/facebook/react-native/commit/3eddc9abb70eb54209c68aab7dbd69e363cc7b29 included on v0.69 introduced a wrong `if` statement inside the `componentDidUpdate` function of the `TouchableOpacity` component. As this `if` statement always evaluates to `true` (`(true || false) !== undefined`) we end up making unnecessary calls to the `_opacityInactive` method every time the component props changes, e.g. every time a `<Text>` inside the TouchableOpacity changes we call this function over and over, and this has been causing some performance issues on big lists.

This PR fixes this problem by adjusting the `componentDidUpdate` function to only call  `_opacityInactive` when necessary.

Closes https://github.com/facebook/react-native/issues/34442
Closes https://github.com/facebook/react-native/issues/32476

## Changelog

[General] [Fixed] - Fix TouchableOpacity componentDidUpdate causing an excessive number of pending callbacks

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

Test Plan:
1. Open the RNTester app and navigate to the `Touchable* and onPress` page
2. Test the `TouchableOpacity` component through the many sections

Reviewed By: cipolleschi

Differential Revision: D41397396

Pulled By: ryancat

fbshipit-source-id: 24863b5cbbdd2f3dd1f654b43d7031560937b888
2022-11-18 12:46:10 -08:00
Gabriel Donadel Dall'Agnol c06323f463 fix: Patch AnimatedStyle to avoid discarding the initial style info (#35198)
Summary:
This PR patches `AnimatedStyle` to avoid discarding the initial style information which destroys the output of web-style compilers and breaks rendering, as requested on https://github.com/facebook/react-native/issues/34425. This uses a slightly modified version of a patch used by react-native-web  https://github.com/necolas/react-native-web/commit/4c678d2912bddf30ad3d1f2c9a71f453d29427f0.

## Changelog

[General] [Fixed] - Patch AnimatedStyle to avoid discarding the initial style info

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

Test Plan:
Run `yarn jest Animated` and ensure CI is green

![image](https://user-images.githubusercontent.com/11707729/199869612-4f2302da-5791-492f-83a7-683305757c23.png)

Reviewed By: necolas

Differential Revision: D41379826

Pulled By: javache

fbshipit-source-id: 7e16726828b98def14847ec3499ff93777a9cbfb
2022-11-18 07:22:01 -08:00
Tianyu Yao e047eed2eb Fix inspecting for non-fabric
Summary:
Changelog: [Internal]

I think this started to break when https://github.com/facebook/react/pull/25441 was synced to RN. Before, `closestInstance` would only be non-null under Fabric, after it could be non-null in both. And we were using `closestInstance` to determine which data to send to `selectNode` in devtools. This diff makes a change to call `selectNode` once for non-fabric and once for fabric, one of them would not send anything to devtools frontend, this would make sure it works for both platforms.

Reviewed By: mondaychen

Differential Revision: D41366466

fbshipit-source-id: fcf30d03e443f6fa067782cd31b7cfd2e0cd841e
2022-11-17 11:36:33 -08:00
Nicolas Gallagher 3681df2878 Add web compat unit tests and fixes (#35316)
Summary:
Adds compat with W3C logical CSS properties. See https://github.com/facebook/react-native/issues/34425

This is a replacement for reverted https://github.com/facebook/react-native/issues/34590, which can no longer be imported internally.

## Changelog

[General][Added] - Added CSS logical properties.

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

Test Plan: Unit test snapshots.

Reviewed By: NickGerleman

Differential Revision: D41230978

Pulled By: necolas

fbshipit-source-id: 40e93d0d697f0cb28390480ce2b4bcbce18da70a
2022-11-17 10:58:38 -08:00
Pieter De Baets 04c286c3c2 Remove fb_apple_library export from rn_defs
Summary: Cleanup rn_defs. Most of the imports here were not related to RN, and for others we can use rn_apple_library instead.

Reviewed By: mdvacca

Differential Revision: D41302584

fbshipit-source-id: 0db79e202c0e18dd590ae0e6bf2821e6b49b606a
2022-11-17 09:56:30 -08:00
Robert Balicki a9bed8e75d Add JS changes
Summary:
# What

* Pass the DevTools Settings Manager to connectToDevTools.
* This is an object that provides write and synchronized read access to on-device storage, that React DevTools will use during startup.
* This allows us to persist settings like whether to show component stacks on error, and on restart, behave correctly. In the future, this will be used to power the "restart and profile" flow.

Changelog
[General][Added] Pass DevTools Settings Manager to connectToDevTools

Reviewed By: lunaruan

Differential Revision: D40880260

fbshipit-source-id: 379a2c93b4cde0360e6fd380d837f426943bfa9e
2022-11-16 19:47:55 -08:00
Nick Gerleman 67b8e182fa Add Fabric implementation of flow-relative padding and margin (#35342)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35342

This is a native implementation of the JS shimmed layout-specific properties in https://github.com/facebook/react-native/pull/35316.

There is an experiment splitting the prop splitting codepath in Fabric, so this change effectively has two implementations depending on whether `enablePropIteratorSetter` is enabled.

None of these changes make sense to propagate Yoga. `inlineEnd`, etc are already mapped to `YGEdgeStart` and `YGEdgeEnd`, but RN's mapping used a different name. Then `blockStart`, `blockEnd`, map directly to existing edges in all cases since we don't support a writing mode.

On web, the last value in the style which computes the given dimension is given precedence. E.g. if "left" comes after "start" it will be chosen. Yoga stylesheets are unordered, and precedence for edges is given based on specificity (left > start > horizontal > all).

We give precedence to new renamings (e.g. start to inlineStart), but to preserve consistent behavior, we give precedence to specific edges before overwriting them with flow relative ones (e.g. marginTop has precedence over marginBlockStar).

Changelog:
[General][Added] - Add Fabric implementation of flow-relative padding and margin

Reviewed By: javache

Differential Revision: D41267765

fbshipit-source-id: 896e2ed71fe8bf83aef00b0a9d70fd20b2ce47a7
2022-11-16 12:31:33 -08:00
Adam Gleitman 11c8bf3137 Add Dynamic Type support for iOS (Paper and Fabric) (#35017)
Summary:
This adds Dynamic Type support in iOS as described [here](https://github.com/react-native-community/discussions-and-proposals/issues/519).

`Text` elements have a new prop, `dynamicTypeRamp`, that allows users to specify which font ramp a particular `Text` element should take on as the OS's accessibility setting for text size. The different types line up with different values of `UIFontTextStyle`. If not specified, we default to the current behavior.

~~For the moment, this change is only for Paper. I tried applying a corresponding change to Fabric by adding an additional field to [`facebook::react::TextAttributes`](https://github.com/facebook/react-native/blob/main/ReactCommon/react/renderer/attributedstring/TextAttributes.h) and changing [`RCTEffectiveFontSizeMultiplierFromTextAttributes`](https://github.com/facebook/react-native/blob/afb124dcf0cdf0db525acc7cfd2cea2742c64068/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm#L79-L84) to use that new field, but in the process I discovered that this function doesn't seem to ever get called, hence [this bug](https://github.com/facebook/react-native/issues/34990).~~

## Changelog

[iOS] [Added] - Dynamic Type support

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

Test Plan:
Validated with a test page in RNTester. Screenshots follow:

A) Default text size
B) Largest non-accessibility text size
C) Largest accessibility text size, split across two screenshots due to size

| A | B | C |
|-|-|-|
| ![Simulator Screen Shot - iPad (9th generation) - 2022-10-18 at 16 17 08](https://user-images.githubusercontent.com/717674/196562746-c8bbf53d-3c70-4e55-8600-0cfed8aacf5d.png) | ![Simulator Screen Shot - iPad (9th generation) - 2022-10-18 at 16 17 55](https://user-images.githubusercontent.com/717674/196563051-68bb0e34-c573-47ed-8c19-58ae45a7ce2b.png) | ![Simulator Screen Shot - iPad (9th generation) - 2022-10-18 at 16 18 33](https://user-images.githubusercontent.com/717674/196563185-61ede5ee-e79e-4af5-84a7-8f1e230a25f8.png) |
||| ![Simulator Screen Shot - iPad (9th generation) - 2022-10-18 at 16 18 42](https://user-images.githubusercontent.com/717674/196563208-2242efa2-5f24-466d-80f5-eb57a7678a67.png) |

Reviewed By: sammy-SC

Differential Revision: D40779346

Pulled By: NickGerleman

fbshipit-source-id: efc7a8e9810a93afc82c5def97af15a2e8453d90
2022-11-15 19:03:37 -08:00
Tien Anh Nguyen 7425c24cbe feat: fix show soft input on focus behavior (#35244)
Summary:
The `showSoftInputOnFocus` of `TextInput` is not working properly. When we set `showSoftInputOnFocus` to false and subsequently to `true`, it fails to open the keyboard, we have to re-focus on the input in order for the keyboard to show. It's expected that the keyboard will be opened as soon as  `showSoftInputOnFocus` becomes `true`. This happens on iOS only.
Reference in React Native doc: https://reactnative.dev/docs/textinput#showsoftinputonfocus.

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[iOS] [Fixed] - Fix issue where keyboard does not open when `TextInput` `showSoftInputOnFocus` changes from `false` to `true`

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

Test Plan:
I've made a clean `create-react-native-app` repo to demonstrate this https://github.com/christianwen/reduced-rn-app.
Here's the steps:
1. Clone https://github.com/christianwen/reduced-rn-app
2. Run `yarn install`
3. Run `cd ios`, then `pod install`, then `cd ..`
4. Run `yarn ios`
5. See the text input on the top of the screen, it can be observed that the keyboard does not open because `showSoftInputOnFocus` is `false`, 3 seconds later it becomes `true` due to a `setTimeout` that is used
<img width="528" alt="Screenshot 2022-11-07 at 23 39 50" src="https://user-images.githubusercontent.com/21312517/200365369-a92fdea3-762c-4224-b463-7143b63329a7.png">

https://user-images.githubusercontent.com/21312517/200366099-db8626a6-1a31-4bfc-862c-2e37a8b35a3f.mov

However, it can be seen that the keyboard does not open even though `showSoftInputOnFocus` becomes `true`
6. Now add the change in this PR to `Libraries/Text/TextInput/RCTBaseTextInputView.m`
7. Run `yarn ios` again
8. Now verify the step 5 again, the keyboard will open automatically when `showSoftInputOnFocus` becomes `true`

https://user-images.githubusercontent.com/21312517/200363910-726716b1-e76d-420b-848d-a98747868db9.mp4

The reason why I created a fresh RN repo instead of using `rn-tester` app is because the `showSoftInputOnFocus` example is not working in `rn-tester` app for some reasons (it shows the keyboard even though `showSoftInputOnFocus` is `false` in the example).

Regarding the code, it's similar to the fix for `keyboardType` in https://github.com/facebook/react-native/commit/8baaacb66458dd706421fcbc1fc1934cd1ebbb94.

<img width="924" alt="Screenshot 2022-11-07 at 23 36 41" src="https://user-images.githubusercontent.com/21312517/200364649-38e7ddc3-ddac-47c4-a72d-a38cf32e120c.png">

Reviewed By: cipolleschi

Differential Revision: D41274007

Pulled By: jacdebug

fbshipit-source-id: dbdf45194db85eeb0a2a4ed372f8c71f44983725
2022-11-15 09:37:21 -08:00
Samuel Susla f8f2a3ed65 Re-add NativeAnimatedModule invariant
Summary: changelog: [internal]

Reviewed By: yungsters

Differential Revision: D41302490

fbshipit-source-id: 769473528a57cdcce7f226e62e2e879705fe98ab
2022-11-15 08:43:36 -08:00
Samuel Susla 49d5e7c519 Remove feature flag removeListenersOnDetach
Summary:
changelog: [internal]

Remove unused feature flag.

Reviewed By: yungsters

Differential Revision: D41188496

fbshipit-source-id: 13507197e7943aea9303ffb828feddb77c94ab0c
2022-11-15 06:30:42 -08:00
Gabriel Donadel Dall'Agnol 72d3da19ce chore: Update Text props aria-labelledby documentation (#35327)
Summary:
`aria-labelledby` Flow types were added to the Text props on https://github.com/facebook/react-native/commit/f353119113d6fc85491765ba1e90ac83cb00fd61  but the text component does not support `accessibilityLabelledBy`, which is the prop we were supposed to map `aria-labelledby` to. As the Text component does not really support `aria-labelledby` this PR updates the `TextProps` documentation to explain that this prop is necessary for cross-platform purposes and that other platforms need it.

## Changelog

[Android] [Changed] - Add notes to `aria-labelledby` from Text props

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

Test Plan: Ensure CI is green

Reviewed By: necolas

Differential Revision: D41280877

Pulled By: lunaleaps

fbshipit-source-id: 81cf016bcf3117f15385ddd119c44d6f9fdd6b68
2022-11-14 17:16:20 -08:00
Samuel Susla 5cdf3cf726 Re-land of modern animated
Summary:
changelog:
[general][Added] - Concurrent rendering safe implementation of Animated

This is a re land of D40681265 (https://github.com/facebook/react-native/commit/5e863fc42c8a2b27f4a785766eb643de9a243b2d). Previously, Modern Animated did not work correctly for animations that were driven by ScrollView's contentOffset. This was fixed in D41122065 (https://github.com/facebook/react-native/commit/1b1b26a099cc2f213bb270bfc0e56a202e618638).

Reviewed By: javache, huntie

Differential Revision: D41264757

fbshipit-source-id: 3a9213997710e483d6c2c09b51359d17a6f9567e
2022-11-14 13:25:52 -08:00
Tim Yung bf6ed07c0f RN: Delete setAndForwardRefs
Summary:
Deletes `setAndForwardRefs` because it encourages a subtle pitfall with managing the referential equality of `ref` entities.

By the time this commit is landed, there will have been no more call sites to it in the `facebook/react-native` repository.

Changelog:
[Internal]

Reviewed By: sammy-SC

Differential Revision: D41209331

fbshipit-source-id: 3ef9c3543b581a716a1e41e524957867ee811675
2022-11-14 08:50:22 -08:00
Tim Yung 7cf4cf3afb ScrollView: Fix ref (and innerViewRef) Transition
Summary:
Normally when a `ref` prop supplied to a component is changed, the old `ref` receives `null` and the new `ref` receives the active component instance.

However, the current implementation of `ScrollView` has a bug where this does not happen (i.e. changing `ref` or `innerViewRef` does not cause either the old or new refs to be updated). This bug is due to a subtle issue with how `ScrollView` internally memoizes the `ref` (or `innerViewRef`) that is passed into the native component.

This commit fixes this behavior so that `ScrollView`'s `ref` and `innerViewRef` have the correct behavior.

Changelog:
[General][Fixed] When a ScrollView's `ref` or `innnerViewRef` changes, the old ref will now be invoked with `null` and the new ref with the active instance. (Previously, changing `ref` or `innerViewRef` on a `ScrollView` would be treated as though the ref had not changed at all.)

Reviewed By: sammy-SC

Differential Revision: D41208895

fbshipit-source-id: b465f666076edbef410cdf9661e040e1d8fa0404
2022-11-14 08:50:22 -08:00
Christoph Purrer c0f06e8bba Adding missing #import <QuartzCore/QuartzCore.h> imports (#35315)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35315

These headers are needed on react-native-macOS, but not explicitly imported all the time.

It seems that some UIKit header will implicitly import them.

We have other use case in react-native(-iOS) in which we also explicitly importing them - https://github.com/facebook/react-native/search?q=QuartzCore- , hence use following 'that' practice 'here'.

Changelog: [Internal]

Reviewed By: javache

Differential Revision: D41229835

fbshipit-source-id: b0182bf4f7905e8e157b341eb62cadec6ba354ca
2022-11-14 06:04:19 -08:00
Pieter De Baets 3921f05f59 Do not use InteractionManager to wait for Activity (#35289)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35289

This was originally added in D15258046 (https://github.com/facebook/react-native/commit/c802d0b757912358d703d4d8a114073377a905b9) but seems to be the wrong solution to the problem from my perspective. InteractionManager does not provide timing information on the activity being available, but ReactContext's LifecycleEventListener does.

This should also address some of the issues raised in https://github.com/facebook/react-native/issues/25675

Changelog: [Android][Fixed] Linking.getInitialUrl should not wait for InteractionManager

Reviewed By: mdvacca

Differential Revision: D41157646

fbshipit-source-id: 6e23969212570204a7e076b6d4d9db004412da09
2022-11-14 03:38:52 -08:00
Pieter De Baets 9125ff065c Inline require to LogBox in AppRegistry
Summary:
Prevent a require cycle from being shown when running RNTester

Changelog: [Internal]

Reviewed By: yungsters

Differential Revision: D41183982

fbshipit-source-id: 5112902442d15fc8a4dce758782ffe7c2459e171
2022-11-14 02:22:08 -08:00
Tim Yung f657d2906d RN: Inline setAndForwardRef into createAnimatedComponent.js
Summary:
Inlines `setAndForwardRef` into `createAnimatedComponent.js`.

I am planning to delete `setAndForwardRef` because it encourages a subtle bad practice with management of the referential equality of `ref` entities. I am doing this instead of refactoring `createAnimatedComponent` because this legacy implementation is planned to be replaced very soon.

Changelog:
[Internal]

Reviewed By: sammy-SC

Differential Revision: D41205066

fbshipit-source-id: dc481e73a6c4d6acbae530d4da48b3a032575179
2022-11-12 09:21:43 -08:00
Tim Yung 666f56bff3 TextInput: Switch to useMergeRefs
Summary:
Switches `TextInput` from `setAndForwardRefs` to `useMergeRefs` (and `useCallback`).

Instead of creating a new `_setNativeRef` function on every render, this will now only create a new ref function when either `mostRecentEventCount` changes, `viewCommands` (i.e. `props.multiline` on iOS) changes, or when `props.forwardedRef` changes.

When a text input is being edited, `mostRecentEventCount` will probably change. But when an unfocused `TextInput` is being updated because a parent is being updated, we will now no longer unnecessarily create a new `ref`. The observable behavior of this is that any `ref` supplied onto `TextInput` will now be invoked less frequently.

Changelog:
[General][Changed] Any `ref` set on `TextInput` will now be updated less frequently (when the underlying `ref` has not changed).

Reviewed By: sammy-SC

Differential Revision: D41191439

fbshipit-source-id: c69a061317c51ad6c6ca8acd116539e0f24a1d08
2022-11-12 09:17:00 -08:00
Tim Yung 7bcc6f9b4d TextInput: Minimize Allocation of Imperative Functions
Summary:
While refactoring `TextInput`, I noticed that we are allocating each of the exported imperative instance methods on every invocation of the component. This is wasteful because if the `ref` does not change, this just creates more garbage.

Instead, we only need to allocate them when we are actually going to assign them onto a `ref`.

Changelog:
[Internal]

Reviewed By: sammy-SC

Differential Revision: D41191440

fbshipit-source-id: 0120d67a9e29a3e0c3f42c3fa436381d6bec7619
2022-11-12 09:17:00 -08:00
Tim Yung 93291213b0 TextInput: Refactor Flow Types for Instance
Summary:
Straightforward refactor of the instance exported by `TextInput`, to reduce duplication.

Changelog:
[Internal]

Reviewed By: christophpurrer

Differential Revision: D41191442

fbshipit-source-id: f7a623246640b5ac871d42d48ef88d30ad78ec3c
2022-11-12 09:17:00 -08:00
Tim Yung 744f633197 TextInput: Create ref Methods w/ Object.assign
Summary:
Straightforward refactor of how `TextInput` augments the exported `ref` with instance methods.

This change is in preparation for additional refactors to eliminate `setAndForwadRefs`.

Changelog:
[Internal]

Reviewed By: christophpurrer

Differential Revision: D41191441

fbshipit-source-id: 30560ce489c48409003a9f92875e5096d3f1130e
2022-11-12 09:17:00 -08:00
Tim Yung 99381de753 ScrollView: Cleanup Jest Tests
Summary:
Cleans up `ScrollView-test.js` to be easier to read and to include a unit test for `ref`.

This prepares the Jest test suite to be extended with an additional test to validate a bug with `ref` invalidation.

Changelog:
[Internal]

Reviewed By: sammy-SC

Differential Revision: D41208894

fbshipit-source-id: 6d79adf131602292f7aa3180b1c230643e9baf16
2022-11-12 08:35:29 -08:00
Mike Vitousek 8c2a4d0d26 Annotate React hooks in xplat, defaulting to any
Summary:
Add explicit annotations to React hook callbacks as required for Flow's Local Type Inference project. This codemod prepares the codebase to match Flow's new typechecking algorithm. The new algorithm will make Flow more reliable and predictable.

This diff adds `any` or `$FlowFixMe` in cases where more precise types could not be determined.

Details:
- Codemod script: `.facebook/flowd codemod annotate-react-hooks ../../xplat/js --default-any --write`
- Local Type Inference announcement: [post](https://fb.workplace.com/groups/flowlang/posts/788206301785035)
- Support group: [Flow Support](https://fb.workplace.com/groups/flow)

drop-conflicts
bypass-lint

Reviewed By: SamChou19815

Differential Revision: D41231214

fbshipit-source-id: d5f5ce8d61020baa1138292c9e9f1c69dffd324c
2022-11-11 17:04:38 -08:00
Mike Vitousek 2c7e89d17c Fix haste module reference
Summary:
Fix a haste module reference inserted by D41226960 (https://github.com/facebook/react-native/commit/ed02d4baf03836b03158deb05dd899bcbbe6d281)

Changelog: [internal]

Reviewed By: SamChou19815

Differential Revision: D41231733

fbshipit-source-id: e3bcdc220946b7dd1783aa321c024972b3bc8e17
2022-11-11 14:14:21 -08:00
Mike Vitousek ed02d4baf0 Annotate implicit instantiations in xplat, defaulting to any
Summary:
Add explicit annotations to underconstrained implicit instantiations as required for Flow's Local Type Inference project. This codemod prepares the codebase to match Flow's new typechecking algorithm. The new algorithm will make Flow more reliable and predictable.

This diff adds `any` or `$FlowFixMe` in cases where more precise types could not be determined.

Details:
- Codemod script: `.facebook/flowd codemod annotate-implicit-instantiations ../../xplat/js --default-any --write`
- Local Type Inference announcement: [post](https://fb.workplace.com/groups/flowlang/posts/788206301785035)
- Support group: [Flow Support](https://fb.workplace.com/groups/flow)

drop-conflicts
bypass-lint

Reviewed By: SamChou19815

Differential Revision: D41226960

fbshipit-source-id: e5e3edbb1aed849f90cc683a4d416a9a2f8f3a19
2022-11-11 12:54:51 -08:00
Tianyu Yao 5fb67b0fb2 Fix checking pointer event feature flag
Summary:
Changelog: [Internal]

The feature flag is a function not a boolean, flow didn't caught it..

Reviewed By: rbalicki2

Differential Revision: D41172775

fbshipit-source-id: b8a3365ab65049706b59e7e859f5f931ecab8360
2022-11-11 10:37:55 -08:00
Pieter Vanderwerff 6743d15329 Enforce empty array providers in arvr/js
Summary: Changelog: [Internal]

Reviewed By: SamChou19815

Differential Revision: D41206042

fbshipit-source-id: 0d6a87fdb693a01a97783f5428111f428a94f80e
2022-11-10 18:52:53 -08:00
Samuel Susla 045595a81e React Native sync for revisions 4bd245e...d1e35c7
Summary:
This sync includes the following changes:
- **[d1e35c703](https://github.com/facebook/react/commit/d1e35c703 )**: Don't disappear layout effects unnecessarily ([#25660](https://github.com/facebook/react/pull/25660)) //<Samuel Susla>//
- **[1e3e30dae](https://github.com/facebook/react/commit/1e3e30dae )**: Fix useSyncExternalStore dropped update when state is dispatched in render phase ([#25578](https://github.com/facebook/react/pull/25578)) //<Aurélien Chivot-Buhler>//

Changelog:
[General][Changed] - React Native sync for revisions 4bd245e...d1e35c7

jest_e2e[run_all_tests]

Reviewed By: GijsWeterings

Differential Revision: D41187776

fbshipit-source-id: 9c82b79458487191f4a26cf643321603d30cea5a
2022-11-10 13:16:01 -08:00
Samuel Susla 1b1b26a099 Call setNativeView anytime node changes
Summary:
changelog: [internal]

Call `AnimatedProps.setNativeView` any time `AnimatedProps` node changes to make sure it is always connected to underlaying host component.

Reviewed By: yungsters

Differential Revision: D41122065

fbshipit-source-id: 1d10fdd44933ff82d9bfc424cecb2640b7a66837
2022-11-10 10:43:47 -08:00
Pieter De Baets 8a59153bd7 Remove $TEMPORARY$object types
Summary:
This was left over from an old codemod.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D41154548

fbshipit-source-id: 0b5fb3e78491b66ebaf13555f80e0265a25dc7d8
2022-11-10 04:48:13 -08:00
Ruslan Lesiutin 1453ef1a88 refactor(react-native-github): move ProgressViewIOS to internal (#35277)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35277

# Changelog:
[JS][Removed] - removed ProgressViewIOS module
[iOS][Removed] - removed native iOS sources of ProgressViewIOS

Reviewed By: lunaleaps

Differential Revision: D40937475

fbshipit-source-id: 9060adf3c99727af4eeffc767ccfd0a70574859d
2022-11-09 16:09:31 -08:00
Christoph Purrer c0a06d2e6f react-native code-gen > C++ TurboModules struct support (#35265)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35265

This adds a templating layer for C++ TurboModules to automatically generate struct templates from TurboModule specs.

You have to define concrete types for those templates to use them in your C++ TurboModule.

E.g. for the JS flow type:
```
export type ObjectStruct = {|
  a: number,
  b: string,
  c?: ?string,
|};
```
code-gen will now generate the following template code:
```
#pragma mark - NativeCxxModuleExampleCxxBaseObjectStruct

template <typename P0, typename P1, typename P2>
struct NativeCxxModuleExampleCxxBaseObjectStruct {
  P0 a;
  P1 b;
  P2 c;
  bool operator==(const NativeCxxModuleExampleCxxBaseObjectStruct &other) const {
    return a == other.a && b == other.b && c == other.c;
  }
};

template <typename P0, typename P1, typename P2>
struct NativeCxxModuleExampleCxxBaseObjectStructBridging {
  static NativeCxxModuleExampleCxxBaseObjectStruct<P0, P1, P2> fromJs(
      jsi::Runtime &rt,
      const jsi::Object &value,
      const std::shared_ptr<CallInvoker> &jsInvoker) {
    NativeCxxModuleExampleCxxBaseObjectStruct<P0, P1, P2> result{
      bridging::fromJs<P0>(rt, value.getProperty(rt, "a"), jsInvoker),
      bridging::fromJs<P1>(rt, value.getProperty(rt, "b"), jsInvoker),
      bridging::fromJs<P2>(rt, value.getProperty(rt, "c"), jsInvoker)};
    return result;
  }

  static jsi::Object toJs(
      jsi::Runtime &rt,
      const NativeCxxModuleExampleCxxBaseObjectStruct<P0, P1, P2> &value) {
    auto result = facebook::jsi::Object(rt);
    result.setProperty(rt, "a", bridging::toJs(rt, value.a));
    result.setProperty(rt, "b", bridging::toJs(rt, value.b));
    if (value.c) {
      result.setProperty(rt, "c", bridging::toJs(rt, value.c.value()));
    }
    return result;
  }
};
```
and you can use it in our C++ TurboModule for example as:
```
using ObjectStruct = NativeCxxModuleExampleCxxBaseObjectStruct<
    int32_t,
    std::string,
    std::optional<std::string>>;

template <>
struct Bridging<ObjectStruct>
    : NativeCxxModuleExampleCxxBaseObjectStructBridging<
          int32_t,
          std::string,
          std::optional<std::string>> {};
```
or as
```
using ObjectStruct = NativeCxxModuleExampleCxxBaseObjectStruct<
    float,
    folly::StringPiece,
    std::optional<std::string>>;

template <>
struct Bridging<ObjectStruct>
    : NativeCxxModuleExampleCxxBaseObjectStructBridging<
          float,
          folly::StringPiece,
          std::optional<std::string>> {};
```
Or as
...

Changelog: [Internal]

Reviewed By: rshest

Differential Revision: D41133761

fbshipit-source-id: fdf36e51073cb46c5234f6121842c79a884899c7
2022-11-09 13:23:05 -08:00
Sam Chan 1f0c2c2895 VirtualizedList onViewableItemsChanged won't trigger if first item in data evaluate to false #35280 (#35282)
Summary:
VirtualizedList onViewableItemsChanged won't trigger if first item in data evaluate to false https://github.com/facebook/react-native/issues/35280

Described in https://github.com/facebook/react-native/issues/35280

## Changelog

- [General] [Fixed] Fix VirtualizedList onViewableItemsChanged won't trigger if first item in data evaluate to false

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

Test Plan:
this snack will be able to log `onViewableItemsChanged triggered` after the fix:
https://snack.expo.dev/tmQo_R_3Y

Reviewed By: jacdebug

Differential Revision: D41158485

Pulled By: NickGerleman

fbshipit-source-id: 47434890155abe009c2560b658adc4e067c31027
2022-11-09 11:35:45 -08:00
Samuel Susla 1ad083a138 Postpone call to recordAndRetrieve to fix console.error
Summary: changelog: [internal]

Reviewed By: lunaleaps

Differential Revision: D41120272

fbshipit-source-id: 458a1b8915849ca7548026d9dbbd34e4b85ecfe5
2022-11-09 11:06:32 -08:00
Tianyu Yao bbb3a6146c Fix inspecting on non-fabric
Summary:
Changelog:
[Category][Internal] - Fix inspecting on non-fabric

the pointer events don't work on non-fabric components. In addition to check the pointer events feature flag, we need to check if fabric is on as well.

Reviewed By: rbalicki2

Differential Revision: D41053393

fbshipit-source-id: ab47bd845b578a0859f282ea8ff04ddbff17da02
2022-11-09 10:14:11 -08:00
Luna Wei 114098d419 Back out "feat: mapped layout props for view component"
Summary:
Changelog: [Internal]

Original commit changeset: 870b9b58a740

Original Phabricator Diff: D41108750 (https://github.com/facebook/react-native/commit/cf3747957ab210e31504109bb6b3e34e773a5b9a)

Reviewed By: necolas, makovkastar

Differential Revision: D41145105

fbshipit-source-id: 8e525284d4d6d152fbcf053ec353d40dda3ee8d2
2022-11-08 20:37:27 -08:00
Rujin Cao 669318d06f @emails -> @oncall (miscs)
Differential Revision: D41142965

fbshipit-source-id: d65b60d34edc8e8a884d448311e62ba68afb655f
2022-11-08 17:58:53 -08:00
Mayank Sunil Pagar cf3747957a feat: mapped layout props for view component (#34590)
Summary:
This PR adds mapping for layout props, it maps

    marginInlineStart: 'marginStart',
    marginInlineEnd: 'marginEnd',
    marginBlockStart: 'marginTop',
    marginBlockEnd: 'marginBottom',
    marginBlock: 'marginVertical',
    marginInline: 'marginHorizontal',
    paddingInlineStart: 'paddingStart',
    paddingInlineEnd: 'paddingEnd',
    paddingBlockStart: 'paddingTop',
    paddingBlockEnd: 'paddingBottom',
    paddingBlock: 'paddingVertical',
    paddingInline: 'paddingHorizontal',

 as requested on https://github.com/facebook/react-native/issues/34425

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[General][Added] - Added CSS logical properties by mapping layout props.

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

Test Plan:
```js
<View
  style={[
    {
      marginBlockStart: 5,        // maps to "marginTop"
      borderWidth: 1,
      borderRadius: 5,
      padding: 5,
    }
  ]}>
  <Text style={{fontSize: 11}}>Hello World!</Text>
</View>
```

Reviewed By: cipolleschi

Differential Revision: D41108750

Pulled By: necolas

fbshipit-source-id: 870b9b58a740aba12290a0604a9f6b52aa52de4c
2022-11-08 12:53:41 -08:00
Mike Vitousek 1bf610d06c Manual fixes to cycles for xplat
Summary:
Add annotations to xplat to break cycles

Changelog:
[internal]

Reviewed By: SamChou19815

Differential Revision: D41111962

fbshipit-source-id: f268871cbaae5bc51d6f576d9c0697e637dea5d1
2022-11-08 10:54:05 -08:00
Ruslan Shestopalyuk ea73a66936 Scaffolding for the PerformanceObserver TurboModule (C++ side) (#35226)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35226

Changelog: [Internal]

This adds scaffolding for the C++ side of NativePerformanceObserver module.

Thanks to christophpurrer for helping set this up, as this is the first one of this kind inside core/OSS.

Reviewed By: rubennorte

Differential Revision: D41028555

fbshipit-source-id: 4acf0e71a254a42044cbbe5f94f40938342c6aa2
2022-11-08 10:01:21 -08:00
fabriziobertoglio1987 55c0df43b9 Adding pager, scrollview, viewgroup, webview, drawer roles (#34477)
Summary:
- adds missing roles
- adds custom roles that don't exist in TalkBack (see the [compositor.json][10] and [string.xml][11] files).
- fixes [issues with Drawer][12]
- fixes issues with ScrollView missing roles
- seek control already exist as adjustable https://github.com/facebook/react-native/pull/34477/commits/d460d097ac0f5df8002e072711023517905f9ca9

Relevant https://github.com/facebook/react-native/issues/30839#issuecomment-1222293556
fixes https://github.com/facebook/react-native/issues/30839

## Changelog

[Android] [Fixed]  - Adding pager, scrollview, viewgroup, webview, drawer roles

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

Test Plan:
Android
- Drawer Layout and ScrollView (02/09/22) https://github.com/facebook/react-native/pull/34477#issuecomment-1235293165
- sliding drawer, drawer layout, icon menu https://github.com/facebook/react-native/pull/34477#issuecomment-1224112650
- Horizontal and Vertical ScrollView https://github.com/facebook/react-native/pull/34477#issuecomment-1225478289
- Toast https://github.com/facebook/react-native/pull/34477#issuecomment-1225369629
- CheckedTextView https://github.com/facebook/react-native/pull/34477#discussion_r959329833
- Spinner (dropdownlist) https://github.com/facebook/react-native/pull/34477#discussion_r959374894
- EditText https://github.com/facebook/react-native/pull/34477#discussion_r959412185
- WebView https://github.com/facebook/react-native/pull/34477#discussion_r959417518
- Testing chime_up and chime_down sound feedback in Scrollable https://github.com/facebook/react-native/pull/34477#issuecomment-1238882030

iOS https://github.com/facebook/react-native/pull/34477#issuecomment-1232418595

[10]: https://github.com/google/talkback/blob/771de7cdbf55b6adb4ca4c64c27a52584f2337cc/compositor/src/main/res/raw/compositor.json#L1082-L1108
[11]: https://github.com/google/talkback/blob/771de7cdbf55b6adb4ca4c64c27a52584f2337cc/compositor/src/main/res/values/strings.xml#L223
[12]: https://github.com/facebook/react-native/pull/34477#issuecomment-1224112650

Reviewed By: NickGerleman

Differential Revision: D39894307

Pulled By: blavalla

fbshipit-source-id: 4a8da78bae485ead0523689631d88d1031a07b74
2022-11-07 23:25:33 -08:00
Gabriel Donadel Dall'Agnol b6869be1ac feat: Update TextInput inputMode to map "none" to showSoftInputOnFocus (#35228)
Summary:
This PR updates `inputMode` prop from the `TextInput` component to map the `none` option to `showSoftInputOnFocus={false}`  as suggested by necolas here -> https://github.com/facebook/react-native/pull/34460#issuecomment-1304837271. This change makes the inputMode API behaves a bit more similarly across platforms.

Related to https://github.com/necolas/react-native-web/issues/2421

## Changelog

[General] [Changed] -  Update TextInput inputMode to map "none" to showSoftInputOnFocus

## Test Plan

1. Open the RNTester app and navigate to the TextInput page
2. Test the `TextInput` component through the `Input modes` section

https://user-images.githubusercontent.com/11707729/200218435-6a33b319-e989-4086-aac3-506546982b38.mov

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

Reviewed By: lunaleaps, necolas

Differential Revision: D41081876

Pulled By: jacdebug

fbshipit-source-id: cc634c3723647d8950bf2cfe67be70d0fbd488a6
2022-11-07 17:43:10 -08:00
Christoph Purrer 19d65a2baf Update .podspec license information (#35245)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35245

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D41084913

fbshipit-source-id: a4ba31a19ffe515aa4e7c5a6e273a8cc4b6bc42d
2022-11-07 09:52:52 -08:00
Robert Balicki 6152763398 Buck, etc. changes that enable persisted, sync settings for DevTools (#35163)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/35163

# What

This diff contains all the changes from D40333083 (https://github.com/facebook/react-native/commit/0fac9817df403e31d8256befe52409c948614706) (aka https://github.com/facebook/react-native/pull/34964), **except** the change to `setUpReactDevTools.js`, which actually uses the new files.

# Why

* We want to ship the Buck, C++, etc. changes before the JavaScript changes that depend on those files.
* Otherwise, apps can fail at startup with the message:
```
`TurboModuleRegistry.getEnforcing(...): '${name}' could not be found. ` +
      'Verify that a module by this name is registered in the native binary.',
```
* Note that this only occurs if you are using a previously-built version of the C++, Obj C, etc. files in RN, but a more recent version of the JavaScript files. If you are building from matching sources, this does not occur.
* After a few days, we can land the JS files.

## Changelog

Changelog
[General][Added] Add, but don't use, DevTools Settings Manager.

Reviewed By: NickGerleman

Differential Revision: D40873390

fbshipit-source-id: c7bac6ae65f85666b8616443db278ebb175b691b
2022-11-07 07:40:21 -08:00