Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

☂️ Lean Core #23313

Closed
46 of 64 tasks
cpojer opened this issue Feb 6, 2019 · 198 comments
Closed
46 of 64 tasks

☂️ Lean Core #23313

cpojer opened this issue Feb 6, 2019 · 198 comments

Comments

@cpojer
Copy link
Task lists! Give feedback
Contributor

@cpojer cpojer commented Feb 6, 2019

For the past several months we have been discussing and making progress on a project called “Lean Core”. Please read our motivation for this project. Over the years React Native has accumulated a lot of parts that are now outdated, unused or otherwise legacy. It's time to clean everything up and put the repository into a much more manageable state going forward.

This is an umbrella task intended to track all the work necessary to reach the goal of a leaner core, including work around repository reorganization. This issue is being kept up to date so new items will be added and completed ones will be (re)moved. Some of the items will spawn separate issues to track work. If you don't see a name assigned to any of the below items and you would like to help out, please volunteer in the comments and reach out to me to get started!

Components & Runtime

React Native currently comes with a large number of components, many of which are deprecated or outdated but they still part of the repository and increase the size of applications. For items in this section we are either looking to completely remove things if they are unused, or we'd like to move them either to community managed repositories or otherwise to facebookarchive. The list here is partially based on an awesome investigation by @axe-fb. The migration can be done roughly by following @matt-oakes's guide from further below: #23313 (comment)

Third-Party Dependencies

Over the years we have amassed a large amount of dependencies, especially JavaScript. We have also moved things out of React Native, like Metro and the react-native-cli. This means we left a large amount of tooling dependencies in our package.json, many of which will are unused by RN itself and won't be updated to the latest versions, causing the full install of React Native to be bloated. It would also be great to do an audit of all the dependencies that are used and identify which ones could be removed.

  • JavaScript Dependencies
    • Check which dependencies are large and whether they can be made smaller
    • Figure out which dependencies can be upgraded to their latest versions for security fixes
    • Figure out which dependencies can be deduplicated (= reduce version mismatches) for smaller install size
  • Move React Native code to external dependencies
    • Identify which JavaScript code could be better served by a third-party package instead of maintaining a copy or our own implementation

Repository Structure

Right now the React Native repository is a large repository with little organization that promotes separation of concerns. It is our goal as part of this effort to also move things into a more manageable structure. As part of this, we'd like to follow a monorepo model that consists of multiple smaller packages. This will be a gradual migration and we will only be tracking the initial work to get this off the ground.

  • Provide an initial setup that works with the existing repository, with multiple packages and also plays nicely with Facebook's internal setup (@cpojer)
  • TODO: Identify more work necessary in this area

Completed work

Click to see prior work before this issue was created
@jdmunro
Copy link
Contributor

@jdmunro jdmunro commented Feb 6, 2019

@cpojer I'd like to remove SnapshotViewIOS 🔪

@Krizzu
Copy link
Contributor

@Krizzu Krizzu commented Feb 6, 2019

Hey @cpojer, thanks for putting it all together!

I'm willing to tackle few issues, starting from moving AsyncStorage.

@matt-oakes
Copy link
Contributor

@matt-oakes matt-oakes commented Feb 6, 2019

I would be happy to help with moving NetInfo to a community repo.

Would it be best to create a personal Github repo first and then potentially migrate that to the react-native-community org once it's ready, or should we start right away with a repo in that org?

@wellmonge
Copy link
Contributor

@wellmonge wellmonge commented Feb 6, 2019

@cpojer, I'd like to help at some of this issues, could I start with "Merge AlertIOS with Alert"?

@cpojer
Copy link
Contributor Author

@cpojer cpojer commented Feb 6, 2019

That's awesome! I put your names down next to the items above.

@jdmunro can you send a PR and assign me to it? Then I can take it over and remove FB specific stuff before landing.
@Krizzu and @matt-oakes I created https://github.com/react-native-community/react-native-async-storage and https://github.com/react-native-community/react-native-netinfo for you to send PRs against with all the code necessary to make them third-party modules. Ideally in the first step, you'll just take the code from the RN repo and put them in separate repos. In order to ensure it works, we could then link them back into RN as a dependency and remove the original implementation. Further down the line we can actually move it to an optional package.
@wellmonge Sounds great! I'm not sure entirely what the work will entail but maybe you can just check out the two modules and see if you can unify them?

@michalchudziak
Copy link
Contributor

@michalchudziak michalchudziak commented Feb 6, 2019

@cpojer I could help with moving slider 🙂

After that I can pick up something else if you’ll still need some help

@cpojer
Copy link
Contributor Author

@cpojer cpojer commented Feb 6, 2019

@michalchudziak Awesome! I created https://github.com/react-native-community/react-native-slider, please see my comment above on what to do next.

As a name for the project in package.json, please use @react-native-community/<project name>, ie. @react-native-community/slider.

@ferrannp
Copy link
Contributor

@ferrannp ferrannp commented Feb 6, 2019

@cpojer I can take ViewPagerAndroid. I think better moving it to a community repo (if you can create the repo for me, thx 😄) than just removing it because other packages around have implemented this behaviour on JS for iOS and they relay on the native one for Android.

@jainkuniya
Copy link
Contributor

@jainkuniya jainkuniya commented Feb 6, 2019

Hey @cpojer I would like to help by merging and moving Picker and PickerIos. :)

@cpojer
Copy link
Contributor Author

@cpojer cpojer commented Feb 6, 2019

@ferrannp created https://github.com/react-native-community/react-native-viewpager for you! See the messages above.
@jainkuniya thanks! Not exactly sure what that will look like but maybe you can see how to unify them and start sending small PRs to react native.

@wellmonge
Copy link
Contributor

@wellmonge wellmonge commented Feb 6, 2019

That's awesome! I put your names down next to the items above.

@jdmunro can you send a PR and assign me to it? Then I can take it over and remove FB specific stuff before landing.
@Krizzu and @matt-oakes I created https://github.com/react-native-community/react-native-async-storage and https://github.com/react-native-community/react-native-netinfo for you to send PRs against with all the code necessary to make them third-party modules. Ideally in the first step, you'll just take the code from the RN repo and put them in separate repos. In order to ensure it works, we could then link them back into RN as a dependency and remove the original implementation. Further down the line we can actually move it to an optional package.
@wellmonge Sounds great! I'm not sure entirely what the work will entail but maybe you can just check out the two modules and see if you can unify them?

Sure! I'll do that and report to you.

@dmtrKovalenko
Copy link
Contributor

@dmtrKovalenko dmtrKovalenko commented Feb 6, 2019

Can help with StatusBarIOS and PushNotificationIOS

@matt-oakes
Copy link
Contributor

@matt-oakes matt-oakes commented Feb 6, 2019

@cpojer Do you have a preference for the Android package name?

Using NetInfo as an example it is currently com.facebook.react.modules.netinfo. Should we make it standard across all extracted modules with something like com.reactnativecommunity.modules.netinfo?

@kdenz
Copy link

@kdenz kdenz commented Feb 6, 2019

Can I help with

  • Move SegmentedControlIOS to a community repo
  • Move ProgressViewIOS to a community repo
@vonovak
Copy link
Contributor

@vonovak vonovak commented Feb 6, 2019

I'll take the checkbox, please.

@react-native-bot

This comment has been hidden.

@organom
Copy link

@organom organom commented Jul 10, 2020

@cpojer Is Vibration (https://reactnative.dev/docs/vibration) also being moved to a community project? If so, and since it seems small enough to start, I could help with that.

@gabrieldonadel
Copy link

@gabrieldonadel gabrieldonadel commented Aug 13, 2020

@cpojer could I remove ImageStore?

@ManuelPortero
Copy link

@ManuelPortero ManuelPortero commented Aug 20, 2020

Is possible help with this ? I'm a beginner and I think i can learn a lot with this .
Regards.
Manuel Portero.

@espipj
Copy link
Contributor

@espipj espipj commented Aug 26, 2020

If any help is still needed with this I am happy to help 😃

@anhdevit
Copy link

@anhdevit anhdevit commented Sep 25, 2020

Mee too

@ndlonghi
Copy link

@ndlonghi ndlonghi commented Sep 26, 2020

I would like to contribute. Is there anything I can do?

alloy added a commit to microsoft/react-native-macos that referenced this issue Sep 30, 2020
* Upgrade to Metro 0.59

Summary:
Upgrades RN to Metro 0.59.

Changelog: [Internal] Metro Upgrade

Reviewed By: motiz88

Differential Revision: D20533864

fbshipit-source-id: 3c5fb8e37d2363edf0b9a1a8cfbdefba00763415

* Fix mock for TextInput (#28332)

Summary:
This PR adds the `isFocused` method to the mock of the TextInput component. My understanding some of the latest changes on the TextInput to make it use a forwardRef change the way this method is mock giving an error when trying to use in on a mock.
The change suggested here fixes the issue.

## Changelog

[JavaScript] [Fixed] - Fix the mock for TextInput to support the `isFocused` method
Pull Request resolved: https://github.com/facebook/react-native/pull/28332

Reviewed By: cpojer

Differential Revision: D20538044

Pulled By: TheSavior

fbshipit-source-id: be734af105ab62ffdf9ed4017bd70845e207f8cd

* Properly handle LogBox errors during tests

Summary:
This diff fixes an issue where errors in LogBox during tests would cause the tests to crash.

The crash is due to the NativeExceptionsManager module not being mocked (as all native module need to be in tests). The fix is to properly mock the NativeExceptionManger.

This fix exposed an infinite loop issue where failures in LogBox will be logged to the ExceptionManager, which logs to the console, which logs to LogBox, creating a loop. This diff also fixes that look by moving the LogBox internal error check to the top of the monkey patched console methods.

Changelog: [Internal]

Differential Revision: D20428590

fbshipit-source-id: 7289a480c99ba8dee67772178b7629afb40b330a

* Back out "Track animations and flush them"

Summary:
Original commit changeset: b594d0e6e9b6

D20319824 introduced a problem in LayoutAnimations, which makes surfaced as the problem in T63911344. This diff reverts D20319824.

Changelog: [Internal]

Reviewed By: lunaleaps

Differential Revision: D20541918

fbshipit-source-id: ff72b839f57d39051122920a38b2632cbb5ec362

* Consolidate "dispatchMountItems" reentrancy prevention code, and retry code, in one function

Summary:
Simplifying the dispatchMountItems reentrance and retry logic.

Motivation: cleanup so I can work on dispatching ViewCommands before anything else.

Importantly, this gives us the properties that:
1) Only one function is responsible for calling dispatchMountItems
2) Only one function is responsible for deciding if we shouldn't call dispatchMountItems due to reentrance
3) Only one function is responsible for all cleanup
4) Only one function maintains all of the relevant flags (except dispatchPreMountItems... two total now, instead of 4 before)

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D20437035

fbshipit-source-id: 5370366790eb25f653bee6c1950e747458374a61

* Only retry ViewCommand mount items if exception is marked as "Retryable"

Summary:
Instead of just blindly retrying all ViewCommands if they fail - which could be dangerous, since it's arbitrary imperative commands we'd be executing twice, potentially with bad app state - we only retry if the ViewCommand throws a "RetryableMountingLayerException".

Changelog: [Internal] Optimization to ViewCommands

Reviewed By: mdvacca

Differential Revision: D20529985

fbshipit-source-id: 0217b43f4bf92442bcc7ca48c8ae2b9a9e543dc9

* Introduce early dispatch of ViewCommands in FabricUIManager

Summary:
Earlier this week I introduced a change in the old, non-Fabric renderer (D20378633 D20427803) that (gated behind a feature-flag) executes ViewCommands before all other types of commands, as a perf optimization and (I think) a potential fix for a category of race conditions.

I've added more details in comments here.

The Fabric renderer uses the same feature-flag that I introduced for the non-Fabric renderer.

Changelog: [Internal] Fabric

Reviewed By: mdvacca

Differential Revision: D20449186

fbshipit-source-id: bb3649f565f32c417a6247369902333989a043aa

* Change nightly build from hourly to nightly (daily at 00:00) (#28346)

Summary:
We initially added the nightly build test to run every hour, in order to more quickly validate it. Now that it has been validated we can run it every night as it is intended to do.

cc hramos

## Changelog

[General] [Changed] - Change nightly build from hourly to nightly
Pull Request resolved: https://github.com/facebook/react-native/pull/28346

Reviewed By: cpojer

Differential Revision: D20550143

Pulled By: hramos

fbshipit-source-id: 9487c6785684ad6ea7e877290d50a33118090a7f

* Add diffing to app bundle size reports (#28284)

Summary:
Add diffing to app bundle size reports.

## Changelog

[Internal] [Changed] - Add diffing to app bundle size reports

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

Test Plan:
- App bundle size reports should now display a diff where available
  - Right now, the database contains only one entry for the last known good iOS build
- Triggering a new build should not create additional comments

Reviewed By: cpojer

Differential Revision: D20450158

Pulled By: hramos

fbshipit-source-id: 720772275f24d3ff0a49705f4dada2efe2e99bd3

* feat: improve monorepo support by removing redundant PROJECT_ROOT (#28354)

Summary:
Historically, React Native didn't support a lot of custom project structures apart from the standard flat directory with `ios` and `android` folders. The CLI had to be explicitly started from the project root, otherwise Metro didn't work right.

In order to resolve the project root in the most accurate way, React Native assumed that project root is always `../../` from its location in `node_modules` - this is not true when the installation gets hoisted (e.g. in a monorepo).

To address that, janicduplessis brought support for custom [`PROJECT_ROOT`](https://github.com/facebook/react-native/commit/9ccde378b6e6379df61f9d968be6346ca6be7ead) that allowed overriding the `../../` in case it wasn't true.

Today, CLI is able to automatically resolve the project root, no matter where it's started. It will traverse the tree of the directories upwards and stop as soon as it meets `package.json`.

As a result, it doesn't really matter from where we start the CLI anymore as a part of `react-native-xcode.sh`.

By replacing the default value of `$REACT_NATIVE_DIR/../../` with `$PWD, that is default for all Xcode scripts, we can make the setup for monorepo easier - nobody will need to set `$PROJECT_ROOT` in order to override the incorrect defaults.

By default, all scripts defined in Xcode run from `$PWD` directory, which is the location of the iOS project. In the future, we will be able to remove `cd` entirely.

To better understand this PR, let's look a few hypothetical structures as an example:

#### Monorepo:

> tl;dr works out of the box, no need to mess around with paths

```
- package.json
- packages/
  - my-app/
     - index.js
     - package.json
     - ios/
        - MyApp.xcodeproj
```

**Before this PR**, the `react-native-xcode.sh` will start the CLI like this:

```bash
cd $REACT_NATIVE_DIR/../../
node <absolute_path_to_cli.js> bundle --entry-point index.js
```

- Because we change the directory to the root of monorepo, CLI throws an error. All in all, there's no `react-native` dependency at the workspace root.

- Some users turn `no hoist` in an act of troubleshooting the errors, which resolves the problem - `react-native` is moved under `my-app/node_modules` which makes this mechanism resolve properly.

- Some users find out about `PROJECT_ROOT` and set it to overwrite the default value. For example, setting `export PROJECT_ROOT = "$PWD/../` will set the directory to `my-app`, which has a dependency on `react-native` in a `package.json` and makes the CLI happy.

**After this PR**, the `react-native-xcode.sh` will start the CLI like this:

```bash
cd $PWD
node <absolute_path_to_cli.js> bundle --entry-point index.js
```

- The `$PWD` is `packages/my-app/ios/` because that's where the Xcode project is located. CLI will automatically set the root to `../` because that's where it finds `package.json` with `react-native` dependency. It will pass that root to Metro, unless users have set a different one themselves. Thanks to that, all paths to JavaScript files remain working and unaffected.

- No need to set `PROJECT_ROOT` anymore.

- We don't rely on the location of `node_modules`, which is cleaner and future proof.

#### Standard:

> tl;dr no changes

```
- ios/
   - MyApp.xcodeproj
- index.js
- package.json
```

**Before this PR**, the `react-native-xcode.sh` will start the CLI like this:

```bash
cd $REACT_NATIVE_DIR/../../
node <absolute_path_to_cli.js> bundle --entry-point index.js
```

- Everything works fine. Path from `react-native` inside `node_modules` is correct - the project root is set right to `/`

**After this PR**, the `react-native-xcode.sh` will start the CLI like this:

```bash
cd $PWD
node <absolute_path_to_cli.js> bundle --entry-point index.js
```

- The root will be set to where Xcode project is located, which is `/ios`. This is the PWD for all Xcode scripts.

CLI will look for the `package.json` going upwards from `ios` folder. Will stop at `/`, find out it has `react-native` dependency, load it and its commands and proceed further.

## Changelog

[iOS] [Feature] - Better monorepo support when building release apk
Pull Request resolved: https://github.com/facebook/react-native/pull/28354

Test Plan:
- All projects (standard/monorepo) run without issues.
- PROJECT_ROOT is not needed.

CC: Titozzz (who wrote monorepo guide), alloy, bartolkaruza

Reviewed By: cpojer

Differential Revision: D20558005

Pulled By: hramos

fbshipit-source-id: 2551120beadcfd4c2f1393ce8a2c2fa6b93c9290

* Fix `test_android`: Remove references to fbsource cell (#28363)

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

## Changelog

[Internal] [CI] - Fix test_android
Pull Request resolved: https://github.com/facebook/react-native/pull/28363

Test Plan:
Prior to fix:

```
react-native $ ./scripts/circleci/buck_fetch.sh
Guessing 168a69309928ba16065cdb33b1775a4af9f924a6 as the last one used version.
Using additional configuration options from /Users/hramos/.buckconfig.d/experiments, /etc/buckconfig.d/fb_chef.ini, /etc/buckconfig.d/fb_chef_override.ini
Invalidating internal cached state: Watchman failed to start. This may cause slower builds.
Parsing buck files: finished in 1.5 sec
Buck wasn't able to parse /Users/hramos/git/react-native/ReactAndroid/src/main/java/com/facebook/fbreact/specs/BUCK:
IOError: [Errno 2] No such file or directory: '/Users/hramos/git/react-native/tools/build_defs/platform_defs.bzl'
Call stack:
  File "/Users/hramos/git/react-native/.buckd/resources/168a69309928ba16065cdb33b1775a4af9f924a6/buck_server/buck_parser/profiler.py", line 507, in wrapped
    return func(*args, **kwargs)
  File "/Users/hramos/git/react-native/ReactAndroid/src/main/java/com/facebook/fbreact/specs/BUCK", line 1
    load("//tools/build_defs:platform_defs.bzl", "ANDROID")
  File "/Users/hramos/git/react-native/.buckd/resources/168a69309928ba16065cdb33b1775a4af9f924a6/buck_server/buck_parser/profiler.py", line 507, in wrapped
    return func(*args, **kwargs)

This error happened while trying to get dependency '//ReactAndroid/src/main/java/com/facebook/fbreact/specs:FBReactNativeSpec' of target '//ReactAndroid/src/main/java/com/facebook/react/devsupport:devsupport'
```
After fix:

```
react-native $ ./scripts/circleci/buck_fetch.sh
+ buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
Guessing 168a69309928ba16065cdb33b1775a4af9f924a6 as the last one used version.
Using additional configuration options from /Users/hramos/.buckconfig.d/experiments, /etc/buckconfig.d/fb_chef.ini, /etc/buckconfig.d/fb_chef_override.ini
Invalidating internal cached state: Watchman failed to start. This may cause slower builds.
Parsing buck files: finished in 1.1 sec
Configuration 'ANDROID_SDK' points to an invalid directory '/opt/android_sdk'.
    When creating rule //ReactAndroid/src/main/java/com/facebook/hermes/instrumentation:instrumentation.
```

> Note: I don't have the Android SDK configured in this machine.

Verified on Circle CI. `test_android` is now green: https://circleci.com/gh/facebook/react-native/140682?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link

Reviewed By: cpojer

Differential Revision: D20564934

Pulled By: hramos

fbshipit-source-id: 5d843b8f113c4db5391ee39addc3ff259d962290

* Fix TextInput left/right padding

Summary:
This fixes two things:

1) Currently it only respects Start and End padding, and if there's a Theme default, it will override Left/Right padding. Whoops.
2) Currently it doesn't respect when a TextInput starts with padding, but then is removed.

This resolves both.

It still does not account for RTL support.

Changelog: [Internal] Fix AndroidTextInput padding

Reviewed By: mdvacca

Differential Revision: D20573151

fbshipit-source-id: e89791641b6699e728cde9dbd661a8c21485fbc8

* Validate selection range passed to setTextAndSelection

Summary:
Changelog: [Internal]

# Fabric

1. If `start` and `end` parameters in `setTextAndSelection` are -1, we don't move the cursor. Previously the cursor would be moved to beginning of text input.

2. In view commands, do not validate `eventCount`. It is passed in as undefined from JS because Fabric's text input doesn't use `eventCount`.

# Paper

1. If `start` and `end` parameters in `setTextAndSelection` are -1, we don't move the cursor. Previously the cursor would be moved to beginning of text input.

Reviewed By: shergin

Differential Revision: D20538290

fbshipit-source-id: c7aeddc25f58697254474058ce901df958321f7c

* Remove ReactTypes from fbsource and React sync

Summary:
See https://github.com/facebook/react/pull/18366

This contains a fork of the upstream Flow types. We shouldn't be syncing this since these leads to conflicting types.

As a result, these uses have already been codemodded away. Only the imports remained.

Changelog:

[React Core] - Remove ReactTypes from sync.

Reviewed By: gaearon

Differential Revision: D20583740

fbshipit-source-id: fc86a934cbdca8ff90fe90282b86ecc945a85e5f

* Fix controlled TextInput with child nodes

Summary:
Changelog: [Internal]

# There are three changes in this diff

## _stateRevision is replaced with a BOOL
`_stateRevision` was protecting against setting attributed string that is already visible to the user. Previously this was ok because the change was only coming from native, any changes from JS were ignored.

Imagine following scenario:

1. User taps key.
2. Update state is called on component initiated by native.
3. New state is created with incremented revision by one.
4. `_stateRevision` gets set to new state's revision + 1.
5. Now JS wants to change something because it just learnt that user tapped the key.
6. New state is created again with incremented revision by one.
7. Update state is called on the component, but the change isn't applied to the text view because `_state->getRevision()` will equal `_stateRevision`.

By having a BOOL instead of number, we very explicitly mark the region in which we don't want state changes to be applied to text view.

## Calling [_backedTextInputView setAttributedText] move cursor to the end of text input
This is prevented by storing what the current selection is and applying it after `[_backedTextInputView setAttributedText]` is called.
This was previously invisible because JS wasn't changing contents of `_backedTextInputView`.

## Storing of previously applied JS attributed string in state

This is the mechanism used to detect when value of text input changes come from JavaScript. JavaScript sends text input value changes through props and as children of TextInput.
We compare what previously was set from JavaScript to what is currently being send from JavaScript and if they differ, this change is communicated to the component.
Previously only first attributed string send from JavaScript was send to the component.

# Problem

If children are used to set text input's value, then there is a case in which we can't tell what source of truth should be.

Let's take following example
We have a text field that allows only 4 characters, again this is only a problem if those 4 characters come as children, not as value.
This is a controller text input.

1. User types 1234.
2. User types 5th character.
3. JavaScript updates TextInput, saying that the content should stay 1234.
4. In `TextInputShadowNode` `hasJSUpdatedAttributedString` will be set to false, because previous JS value is the same as current JS value.

Reviewed By: shergin

Differential Revision: D20587681

fbshipit-source-id: 1b8a2efabbfa0fc87cba210570142d162efe61e6

* Daily `arc lint --take BUCKFORMAT`

Reviewed By: zertosh

Differential Revision: D20593906

fbshipit-source-id: b056947c698508119dc9d4d1bba202295b8f0fda

* RN picker - implement background color

Summary:
add support to the android implementation of the Picker component for setting the background color.

Changelog: [Android] [Added] - Support item background color in Dialog Picker

Differential Revision: D20566131

fbshipit-source-id: d693b40803fa1051ec955c5728994c820fecd9e9

* Fabric: Modernizing Yoga Dirty flag test.

Summary:
Now we using TEST_F thing that allows consilidating initialization.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D20578788

fbshipit-source-id: 103bcb8fdeb3dbf297385cfe56415bd646e16791

* Fabric: Changing signature of `ComponentDescriptor::createState`

Summary:
This is pure syntactic change. Often we don't have a shared pointer to ShadowNodeFamily and only have just a reference. At the same time, `ComponentDescriptor::createState` does not have to accept a shared pointer. So, it's better to accept just a reference.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D20578787

fbshipit-source-id: 905277001e096d41e75007575b59ea2ea15fbf4b

* Fabric: View Test: Changing state should not dirty Yoga tree (in some most cases)

Summary: Changelog: [Internal] Fabric-specific internal change.

Reviewed By: mdvacca

Differential Revision: D20578789

fbshipit-source-id: 4336165217bd39fc8065cfaeb96ef7753433d48a

* Get ReactiveNative compiled with Clang 10 (#28362)

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

Fixed a few compilation errors emitted by Clang 10.

Changelog:
[iOS] [Fixed] - Get ready for Clang 10

Differential Revision: D20549970

fbshipit-source-id: dc36a85d90d3e43a05f045feb57c6ab6ded67da7

* Guard against null values in object parameters for bridged methods

Summary:
Handles the case when a value in an object parameter of a turbo module spec is null (even if the type is nullable).

For example, given:
```
export interface Spec extends TurboModule {
  +myFunc: ({|
    foo: ?string,
  |}) => void;
}
```
and calling `NativeModule.myFunc({foo: null})`, we see an error like:
```
JSON value '<null>' of type NSNull cannot be converted to NSString
```
Guarding against this by converting NSNull's to nils

## Changelog:

[iOS] [Fixed] - Fix crash when passing null value in object parameter of bridged method

Reviewed By: fkgozali

Differential Revision: D20591590

fbshipit-source-id: fdb90f34131427a235f2e3c99147bf1e6a9c6732

* Modify pending deletion tags to be cross manageChildren

Summary:
Changelog: [Internal]

Removing historic layout animations index adjustment (D20323928) broke the Dating Secret Crush screen.

Since flushing animations (D20319824) had to be reverted due to issues with Saved + Privacy Shortcuts (https://fburl.com/tasks/eijtmifu) we need to track pending deletions across `manageChildren` operations.

Reviewed By: JoshuaGross

Differential Revision: D20601079

fbshipit-source-id: c6f116683750e97abe7f988cf361d2a6449e90e6

* Enable label-actions on the react-native repository (#28374)

Summary:
Enhance our issue management workflow by having the bot respond automatically whenever a label is applied to the issue.

## Changelog

[Internal] - CI
Pull Request resolved: https://github.com/facebook/react-native/pull/28374

Test Plan: Not tested. If needed, could be applied to a different, test repository.

Reviewed By: cpojer

Differential Revision: D20606887

Pulled By: hramos

fbshipit-source-id: 874d1464527ea76bf51394a7d3e98e4fd8f69345

* Fix Animated Value initialized with undefined in ScrollView (#28349)

Summary:
When passing an object to contentOffset that doesn't have `y` prop set it causes the following error:

```
 Error: AnimatedValue: Attempting to set value to undefined

This error is located at:
    in ScrollView (at src/index.js:638)
...
```

This happens since a runtime check was added to the `AnimatedValue` constructor. (a3aaa471eca58b31597b9a0669f7ade385ccb175)

According to flow types the object passed to contentOffset should always contain both x and y props but since it worked before when y is undefined I think its fine to patch the runtime behaviour defensively, especially since the code change is simple.

## Changelog

[General] [Fixed] - Fix Animated Value initialized with undefined in ScrollView
Pull Request resolved: https://github.com/facebook/react-native/pull/28349

Test Plan: Tested that the crash no longer reproduces when passing an empty object to contentOffset.

Reviewed By: cpojer

Differential Revision: D20601664

Pulled By: hramos

fbshipit-source-id: b098a2dd1e702f995a9a92fa6e4e9a204187dac4

* xplat/js/react-native-github/ReactCommon/fabric/components/textinput/

Summary: Changelog: [Internal]

Reviewed By: scottrice

Differential Revision: D20619227

fbshipit-source-id: 674337e6ce585a4e96d020f9624b874ba86e2d80

* Seed ssh known hosts with github's public key (#28370)

Summary:
The [previous attempt](https://github.com/facebook/react-native/pull/28304) to fix the publish step failed, so now reverting to manually configuring things. This PR adds an entry to SSH’s `known_hosts` file using github.com’s public key that I have verified as per [these instructions](https://serverfault.com/a/807363):

```
~/C/R/react-native [master] » nmap github.com --script ssh-hostkey
Nmap scan report for github.com (140.82.118.4)
rDNS record for 140.82.118.4: lb-140-82-118-4-ams.github.com
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   1024 ad:1c:08:a4:40:e3:6f:9c:f5:66:26:5d:4b:33:5d:8c (DSA)
|_  2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 (RSA)
```

These fingerprints line up with [the ones posted by GitHub](https://help.github.com/en/github/authenticating-to-github/githubs-ssh-key-fingerprints), so my setup should be good and can be trusted to grab the public key from the right host:

```
~/C/R/react-native [master] » ssh-keyscan -t rsa -H github.com
# github.com:22 SSH-2.0-babeld-d48c3acd
|1|If6MU203eXTaaWL678YEfWkVMrw=|kqLeIAyTy8pzpj8x8Ae4Fr8Mtlc= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
```

## Changelog

[Internal] [Fixed] - Make automated publishing of packages from CI work again
Pull Request resolved: https://github.com/facebook/react-native/pull/28370

Test Plan: I used the command being added in this PR in [a failed CI job](https://app.circleci.com/pipelines/github/facebook/react-native/4104/workflows/916127cb-177f-4583-9f90-cae5318041d8/jobs/140810). When I invoked the publish script manually I was not greeted by the blocking prompt and the package was successfully published: https://www.npmjs.com/package/react-native/v/0.0.0-56cf99a96

Reviewed By: cpojer

Differential Revision: D20601527

Pulled By: hramos

fbshipit-source-id: b1a4405228408cfc4a1b3b44ab88c79522af3a66

* Fix app bundle size diff not always being compared against latest commit (#28368)

Summary:
- Timestamp of entries in our Firebase instance sometimes get stored as number. This means that we may not always be diffing against the latest master commit.
- Size report of Android and iOS gets overwritten depending on which build finishes first.

## Changelog

[Internal] [Fixed] - App bundle size diff not always being compared against latest commit
[Internal] [Fixed] - Android and iOS app bundle size diff overwrite each other
Pull Request resolved: https://github.com/facebook/react-native/pull/28368

Test Plan:
- We are now using Firebase's own [firebase.firestore.Timestamp.now](https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp#now) to ensure that we always get a timestamp in the preferred format. This has been tested locally but can only be verified when merged to master and we start getting new data. In the meantime, I'll manually fix up all the entries in the store.
- There should be one app bundle size comment for Android and one for iOS in this PR.

Reviewed By: cpojer

Differential Revision: D20601620

Pulled By: hramos

fbshipit-source-id: 0c3e4b78a74cbd659f1957a6aa74322b016e0646

* Hopefully fix so loading crashes

Summary:
Changelog:

[Android][Internal] Fix potential initializer interruption threading crashes.

Reviewed By: mdvacca

Differential Revision: D20615755

fbshipit-source-id: 58b706deeb6df1998caff5bf2ae9ec60114313fe

* Fix label-actions configuration

Summary:
Adds back a missing label key, fixes open source issue: https://github.com/facebook/react-native/issues/28378

Changelog:
[Internal] [CI] - Fix label-actions config

Reviewed By: cpojer

Differential Revision: D20625887

fbshipit-source-id: 63c90db249aa9c15369a4b5bcab71cbe75c6d4b8

* Changing Order Of mOverrideColorScheme In Constructor

Summary:
Changelog: [Android] [Updated]

mOverrideColorScheme should be assigned before the first colorSchemeForCurrentConfiguration call, so the initial setting of mColorScheme will reflect the override

Reviewed By: zackargyle

Differential Revision: D20630173

fbshipit-source-id: a2a2d174d3fc40c14f27dce6a7fa8e67203480c9

* hermes | inspector | Don't include posix headers on non-posix systems

Summary:
Changelog: [Internal]

Hermes inspector includes pthreads, arpa and sys headers on all OSes that would break vanilla Windows builds. This diff adds a check for posix-compliance before inclusion

(Note: this ignores all push blocking failures!)

Reviewed By: dulinriley

Differential Revision: D20564449

fbshipit-source-id: 8e264bc3104065dc4315bb291e8560609fe65184

* Upgrade Prettier from 1.17 to 2.0.2.

Summary:
This gets us on the latest Prettier 2.x:
https://prettier.io/blog/2020/03/21/2.0.0.html

Notably, this adds support for TypeScript 3.8,
which introduces new syntax, such as `import type`.

Reviewed By: zertosh

Differential Revision: D20636268

fbshipit-source-id: fca5833d003804333a05ba16325bbbe0e06d6c8a

* Back out "Upgrade Prettier from 1.17 to 2.0.2."

Differential Revision: D20639755

fbshipit-source-id: 5028563f9cf0527a30b4259daac50cdc03934bfd

* Fabric: Additional temporary checks in prop parsing infra

Summary:
While ViewConfig infra isn't perfect we need to check some value for correctness during prop-parsing.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: JoshuaGross

Differential Revision: D20639055

fbshipit-source-id: 193dcd0769bc7777bc8d60c964ede72ebdaa83e4

* Update React package

Summary:
This just updates the `react` package to the latest stable version. We updated it to experimental internally earlier so this brings the open source version to the latest before the branch cut. This doesn't include any breaking changes.

Changelog:

[General][Changed] - Update to React 16.13.1

Reviewed By: cpojer

Differential Revision: D20642909

fbshipit-source-id: 68a4c74bfe72f1abdb33b0b9071a4f4e8e568318

* Fix sketchy null checks induced by new formatting in Prettier 2.0

Summary:
Update code to prepare for Prettier 2.0, which will
reformat `a || (b || c)` to `a || b || c`.

Changelog: [Internal] prepare for Prettier 2.0

Reviewed By: kassens

Differential Revision: D20639483

fbshipit-source-id: c2932b1495884684172ba9291d56c546f51711b8

* RN picker - fix types in AndroidDialogPickerManagerInterface

Summary:
according to [this crash report](https://our.intern.facebook.com/intern/logview/details/facebook_android_crashes/7ba7056481015482c6166d65cb97e49d/?trace_key=1506fe36a70dd5e50cdc8968f6317f27), `value` was throwing an NPE despite being null-checked. this is because it was an `int` rather than an `Integer`, so the null check wasn't working

Changelog: Fix types in AndroidDialogPickerManagerInterface

Reviewed By: mdvacca

Differential Revision: D20646343

fbshipit-source-id: a27587e0a48f5782bcf5ffddb604018218e65206

* Remove RCTExportModule log spam

Summary:
The bridge complains if modules aren't exported, which isn't really helpful with lazily loaded modules and turbo modules.

I considered only turning this off when TurboModules is enabled, but figured we'd be killing this soon anyways... If anyone feels strongly I can go that approach.

Changelog: [iOS][Internal] Remove RCTExportModule log spam

Reviewed By: shergin

Differential Revision: D20629575

fbshipit-source-id: d32d9fe244c4d06acfee982fca7c7f63da294dc5

* De-jank DevLoadingView

Summary:
## Problems
Repro steps:
1. Disable Fabric (because CMD + R doesn't work with Fabric right now).
2. Open up Marketplace and hit `CMD + OPT + R`
3. **Observe:** The progress bar doesn't show up right away. It also doesn't actually show progress.
https://pxl.cl/140g1

RN Support post: https://fb.workplace.com/groups/rn.support/permalink/3437652016283389/

## Fixes
The first problem is that progress bar doesn't actually show progress.

**Fix:** Bundle load progress is updated in `RCTCxxBridge`, where we first require `RCTDevLoadingView`, and then call its `updateProgress` method. Previously, we wouldn't  lazily load `RCTDevLoadingView`, it already didn't exist. Lazily loading `RCTDevLoadingView` causes the progress view to show up. Here: https://pxl.cl/140gt

If you look at the above video, you'll notice there are two stages to the progress bar: stage 1 displays the actual progress. Stage 2 prompts that we're downloading the JS bundle. As you can see, stage 1 and stage 2 have different background colors, even though both of them are green.

**Fix:** I adjusted the JS to match the Native color. Here: https://pxl.cl/140gT

We're almost there, but the progress bar is dismissed twice?

**Fix:** I dug into the code, and the reason why was because when we hit `CMD + R`, we invalidate the bridge, and immediately re-initialize it. This means that we asynchronously invalidate the old TurboModuleManager, and immediately create a brand new one. Therefore, two `RCTDevLoadingView` modules can (and do) exist at once. So, I moved `RCTDevLoadingView` to be an instance member of `FBReactModule`, to ensure that it doesn't get cleaned up and re-created when TurboModuleManager is deleted and re-created. This finally fixed the progress bar jank:
https://pxl.cl/140hn

Changelog:
[iOS][Fixed] - Remove RCTDevLoadingView jank

Reviewed By: rickhanlonii

Differential Revision: D20607815

fbshipit-source-id: 05825c67adaf3cfda70be0fa2dc92d413dc8921b

* Fix retaining self in block in LogBox impl

Summary:
Logbox has a retain cycle (see linked task for my deeper investigation).

This diff doesn't fix the retain cycle, but it's just good practice to not retain self strongly in blocks.

Changelog: [iOS][Internal] Fix retaining self in block in LogBox implementation

Reviewed By: shergin

Differential Revision: D20630693

fbshipit-source-id: cf399495e9bcd1917932fcc0e9c9d2d2a32bf6f0

* Flow type infoLog

Summary:
Changelog:
[General][Internal] flow type infoLog

Reviewed By: zackargyle

Differential Revision: D20577939

fbshipit-source-id: eed4401b2ae0a6bf845fdcb54c6abe1fe98fe7c1

* Replace fbsource// with // in xplat/js/ files [1]

Summary:
`fbsource//xplat` and `//xplat` are equivalent for FB BUCK targets. Removing extra prefix for consistency.

Changelog: [Internal]

Reviewed By: scottrice

Differential Revision: D20495655

fbshipit-source-id: a57b72f694c533e2e16dffe74eccb8fdec1f55f5

* Deploy Flow 0.121 to Xplat (#901)

Summary:
Deploy Flow 0.121 to Xplat

bypass-lint
allow-large-files

Closes https://github.com/facebook/flipper/pull/901

Changelog: [Internal]

Reviewed By: panagosg7

Differential Revision: D20570316

fbshipit-source-id: a76983d6f46c8b995ce2dd5cd1e014534790698a

* Replace fbsource// with // in xplat/js/ files [3]

Summary:
`fbsource//xplat` and `//xplat` are equivalent for FB BUCK targets. Removing extra prefix for consistency.

Changelog: [Internal]

Reviewed By: JoshuaGross

Differential Revision: D20656211

fbshipit-source-id: deb91b917d349bc500acbb03d734ff621f6e1fc7

* Replace fbsource// with // in xplat/js/ files [4]

Summary:
`fbsource//xplat` and `//xplat` are equivalent for FB BUCK targets. Removing extra prefix for consistency.

Changelog: [Internal]

Reviewed By: JoshuaGross, shergin

Differential Revision: D20656696

fbshipit-source-id: 10f02decb1dc969fd3491ac90d97f09e2bda59e7

* Add Needs: Repro bot action (#28397)

Summary:
Add automated response for Needs: Repro

## Changelog

[Internal] [Added] - Add automated response for Needs: Repro
Pull Request resolved: https://github.com/facebook/react-native/pull/28397

Test Plan: Bot should add a comment with the Needs: Repro label.

Reviewed By: cpojer

Differential Revision: D20665378

Pulled By: hramos

fbshipit-source-id: 1c7d878faacf935a640849f74c81f119e5c7e92d

* Daily `arc lint --take CLANGFORMAT`

Reviewed By: zertosh

Differential Revision: D20666684

fbshipit-source-id: 32255ac7509e0257693969a7b4b044569af30df7

* ✅ Green CI: Fix JavaScript e2e tests, disable failing Android e2e test (#28392)

Summary:
Jobs now have a `run_disabled_tests` argument that allows for the selective execution of disabled tests. When working on re-enabling a failing test, the contributor just needs to set `run_disabled_tests` to `true` in the appropriate workflow in `.circleci/config.yml`.

Tests can be kept green by moving failing tests into the disabled section until a contributor can provide a fix, thus ensuring signal is maintained on master. For example, a failing end-to-end test might be disabled in order to allow the signal from unit tests to be provided, as opposed to flat out failing the entire job.

What was done in this PR:
* The failing `test_js_e2e` job has been fixed, and merged into the `test_js` job. An empty disabled tests section is added for future use.
* The failing `test_ios_e2e` job has been merged into `test_ios`, with all of its steps gated behind the `run_disabled_steps` argument.
* The failing Android end-to-end tests have been added to `test_android`, gated behind the `run_disabled_steps` argument
* The failing Podspecs test has been added back into `test_ios`, gated behind the `run_disabled_steps` argument

## Changelog

[Internal] [CI] - ✅ Green CI, disabled test infrastructure work
Pull Request resolved: https://github.com/facebook/react-native/pull/28392

Test Plan: Verified on Circle CI

Reviewed By: cpojer

Differential Revision: D20665512

Pulled By: hramos

fbshipit-source-id: 831738027f90f4b23313893d8342d7e654f34726

* Upgrade internal packages to support ESLint >= 6 (#28393)

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

I've tested it with https://github.com/react-native-community/react-native-template-typescript and it seems to be working as expected - no warnings, supports typescript 3.8.

(note: I didn't upgrade the package version as I don't know how the releases work for this package)

## Changelog

[CATEGORY] [TYPE] - Message
Pull Request resolved: https://github.com/facebook/react-native/pull/28393

Reviewed By: hramos

Differential Revision: D20647112

Pulled By: cpojer

fbshipit-source-id: ca6b67971f625dc8125a58f9220dfcd86250ba94

* Fabric: Fixing a deadlock in RCTSurfacePresenter

Summary:
This is another attempt to fix an issue very similar to T59424871. The previous attempt was in D19249490. I don't know why we don't see production crashes (stalls) but it happened to me (and not to me) in the debugger. The previous attempt didn't work because we still could have a deadlock because we tried to acquired shared mutex already owned exclusively by the `suspend` method.

Here is another approach: Instead of using one shared mutex, now we use two. One is similar to what we had and another that protects `suspend` and `resume`. Besides that, now we pass a Scheduler to functions that use that explicitly. This way we can be more explicit about acquiring mutexes and the overall flow of execution. The idea is: Now an arbitrary code that can be reentrant does not cover with mutexes, so the deadlock is not possible.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D20639228

fbshipit-source-id: 98515742f00f2ae94b50b585c9f1f0611e169ebe

* Update React Hooks Plugin

Summary:
Updates `eslint-plugin-react-hooks` to 3.0.0. This introduces a new lint error when you use a Hook inside a class.

Changelog:
[General][Changed] - Updated the React Hooks ESLint Plugin

Reviewed By: cpojer

Differential Revision: D20675528

fbshipit-source-id: d0cbe9748fd15df7a4c6de00bd1462610e0a43d6

* Upgrade React DevTools 4.0.6 -> 4.6.0

Summary:
Upgrading the embedded version of React DevTools, primarily to pull in [this PR](https://github.com/facebook/react/pull/18397) which will reduce the impact of this package on `node_modules` size.

# Update process

Following a similar process as D15973709, I began by searching for [all of the references](https://our.intern.facebook.com/intern/biggrep/?corpus=xplat&filename=.json&case=false&view=default&extre=&s=%22react-devtools&engine=apr_strmatch&context=false&filter[uninteresting]=false&filter[intern]=false&filter[test]=false&grep_regex=) to the `react-devtools-core` package and updated all v4 usage to to point to the new 4.6.0 release:

1: Manually update "react-devtools-core" versions:
```
js/package.json
js/react-native-github/package.json
nuclide/package.json
sonar/desktop/app/package.json
sonar/desktop/plugins/reactdevtools/package.json
vscode/modules/vscode-webview/package.json
```
2: Setup Yarn proxy:
```
yarn config set proxy http://fwdproxy:8080/
yarn config set https-proxy http://fwdproxy:8080
```
3: Run "yarn" in each of the above directories.
4: Run the lockfile shell script:
```
~/xplat/js/scripts/update-oss-yarn-lockfile.sh
```
5: Update the generated `MOBILE_JS_NODE_MODULE_DEPS.bzl` by running
```
js1 build buckfiles
```

## Changelog:

[General] [Changed] - Upgrade embedded React DevTools backend from v4.0.6 to v4.6.0.

Reviewed By: cpojer, gaearon

Differential Revision: D20676091

fbshipit-source-id: 99865bdba9bce45e2a7d582d5fb550cfdbeeca3a

* Make ScrollView use ForwardRef

Summary:
Have ScrollView use forwardRef so that the host component methods like `measure` and `measureLayout` are available without having to call `getNativeScrollRef`. Instead, you can use `<ScrollView ref={myRef} />` and directly call all methods of ScrollView and host components on `myRef`.

Previous usage:
```
const myRef = React.createRef<React.ElementRef<typeof ScrollView>>();
<ScrollView ref={myRef} />

const innerViewRef = myRef.current.getNativeScrollRef();

innerViewRef.measure();
```
New usage:
```
const myRef = React.createRef<React.ElementRef<typeof View>>();
<ScrollView ref={myRef} />

// now, myRef.current can be used directly as the ref
myRef.current.measure();
myRef.current.measureLayout();

// Additionally, myRef still has access to ScrollView methods
myRef.current.scrollTo(...);
```

Changes:

* Added deprecation warnings to ScrollView methods `getNativeScrollRef`, `getScrollableNode`, and `getScrollResponder`
* Added the forwardRef call to create `ForwardedScrollView` - this takes in `ref` and passes it into the class ScrollView as `scrollViewRef`.
* Forwarded the ref to the native scroll view using `setAndForwardRef`.
* Added statics onto `ForwardedScrollView` so that `ScrollView.Context` can still be accessed.
* Added type `ScrollViewImperativeMethods`, which lists the public methods of ScrollView.
* Converted all public methods of ScrollView to arrow functions. This is because they need to be bound to the forwarded ref.
* Bound all public methods of ScrollView to the forwarded ref in the `setAndForwardRef` call.
* Flow typed the final output (ForwardedScrollView) as an abstract component that takes in the props of the `ScrollView` class, and has all methods of both the inner host component (`measure`, `measureLayout`, etc) and the public methods (`scrollTo`, etc).

Changes to mockScrollView:
* Changed mockScrollView to be able to mock the function component instead of a class component
* Updated necessary tests

Changelog:
[General] [Changed] - Make ScrollView use forwardRef

Reviewed By: TheSavior

Differential Revision: D19304480

fbshipit-source-id: 6c359897526d9d5ac6bc6ab6d5f9d82bfc0d8af4

* Fix issue with onEndReached

Summary:
onEndReached can be triggered twice when more items are added to the end of the list. This change makes it so that a second call to onEndReached won't happen until the user scrolls down to the new end of the list.

Changelog:

[General] [Fixed] - Fix double call to onEndReached in VirtualizedList

Reviewed By: sahrens

Differential Revision: D20066740

fbshipit-source-id: 129d7ae6bfd241eeea18fe0bb12b82be67735874

* Remove console warnings from ScrollView methods

Summary:
The newly added console warnings in D19304480 are adding a lot of warning noise due to missed infra callsites. Those callsites need to be updated before these warnings can be added.

Changelog:
[Removed] Remove console warnings from ScrollView methods

Reviewed By: rickhanlonii

Differential Revision: D20700917

fbshipit-source-id: cb618ee3a291d26e1942e4f91bbc02dee41fb78b

* Upgrade react-docgen, jscodeshift and flow-parser

Summary:
In preparation for upgrading babel, I'm updating some of our source transform tools to the latest versions.

Changelog: [Internal]

Reviewed By: GijsWeterings

Differential Revision: D20675201

fbshipit-source-id: fa4fee2652529c6677087e42cdd1325a8080e46f

* Ship State Reconciliation 100% on all platforms

Summary:
State Reconciliation has been running 50/50 for a while and all metrics look stable. This is necessary for providing a good experience so we should ship to everyone unconditionally.

Changelog: [Internal] Fabric diffing reconciliation process improvement

Reviewed By: mdvacca

Differential Revision: D20715694

fbshipit-source-id: 25b2635ecc29b67e2911679c9db66bc84d37dec1

* Core telemetry tests: update so they pass on my machine

Summary:
`std::this_thread::sleep_for` is not really precise and will attempt to sleep for "at least" that much time, but may sleep much longer depending on what CPUs are doing and scheduling policies.

To get this to pass on my machine, I had to substantially increase the thresholds.

Changelog: [Internal]

Reviewed By: shergin

Differential Revision: D20689571

fbshipit-source-id: f159420d24a95da2b5d95d49ed7882e783291e98

* Optimize diff algorithm to produce fewer remove+insert ("move") paired instructions

Summary:
An evolution of D20633188 but more performant.

There are three optimized paths before the slow path.

The first optimized path tries to pair identical nodes from old/new tree, and generate Update mutations, until we hit nodes that are different (indicating either a remove or an insert). This already existed.

The next two optimizations, introduced by Tim in his JS pseudocode, were inspired by ReactJS's diffing algorithm. They work in cases where the rest of the nodes are (1) all removals/deletes or (2) all creates+inserts.

Finally, if those final two optimized paths can't run, it's because there is a mix of delete+remove, create+insert, and "move" operations, mixed at the beginning, middle, and/or end of the list.

This has slightly better average/best-case complexity as the previous implementation.
In particularly pathological cases where all nodes are arbitrarily reordered, or reversed, for instance (ABCDE->EDCBA) the algorithm has the same complexity as the previous algorithm (quadratic).

For now iOS is pinned to the older differ

Changelog: [Internal] Experiment to optimize diffing algorithm in Fabric

Reviewed By: shergin

Differential Revision: D20684094

fbshipit-source-id: d29fba95a0328156c023e1c87804f23770ee1d91

* Unit test for V2 "minimal instruction" diffing algorithm

Summary:
This unit test is to verify that the new diffing algorithm generates a "minimal" instruction set, with regards to removes and inserts ("moves").

These unit tests are here to verify the expected behavior in this new algorithm, but these tests may be modified or deleted in the future if we decide we want to change this behavior.

Changelog: [Internal] fabric unit test

Reviewed By: mdvacca

Differential Revision: D20706592

fbshipit-source-id: 5f9991498e0d788ecbf88d938bfe6d3f0f27af40

* Add ES Lint rules for `DynamicColorIOS()`and `ColorAndroid()` (#28398)

Summary:
The [PlatformColor PR](https://github.com/facebook/react-native/pull/27908) added support for iOS and Android to express platform specific color values.   The primary method for an app to specify such colors is via the `PlatformColor()` method that takes string arguments.   The `PlatformColor` method returns an opaque Flow type enforcing that apps use the PlatformColor method instead of creating Objects from scratch -- doing so would make it harder to write static analysis tools around Color values in the future.   But in addition to `PlatformColor()`, iOS has a `DynamicColorIOS()` method that takes an Object.   The Flow type for this Object cannot be opaque, but we still want to enforce that app code doesn't pass variables instead of Object literals or that values in the Objects are variables.   To ensure `DynamicColorIOS()` can be statically analyzed this change adds an ESLint rule to enforce that `DynamicColorIOS()` takes an Object literal of a specific shape.   A `ColorAndroid()` was also introduced not for practical use but just to test having platform specific methods for more than one platform in the same app.   A second ESLint rule is created for `ColorAndroid` as well.

## Changelog

[General] [Changed] - Add ES Lint rules for `DynamicColorIOS()`and `ColorAndroid()`
Pull Request resolved: https://github.com/facebook/react-native/pull/28398

Test Plan: `yarn lint` passes.

Reviewed By: cpojer

Differential Revision: D20685383

Pulled By: TheSavior

fbshipit-source-id: 9bb37ccc059e74282b119577df0ced63cb9b1f53

* fix: Android gradle config when bundling for release (#28415)

Summary:
This fix aims to address the issue when bundling an Android app for release and getting the error exhibited in https://github.com/facebook/react-native/issues/28002 which I also encountered myself.

The config was changed sometime in November 2019 (as part of https://github.com/facebook/react-native/issues/26940, commit https://github.com/facebook/react-native/commit/a3b08048674e324dbe1f0ca816f35607e9e06a2f) to be very opinionated when it comes to the use of `npx` which Gradle itself cannot find anyway (I have `npx` installed globally and it didn't pick it up).

Another issue that the use of `npx` creates is that Gradle should only ever use the currently installed react-native cli rather than a (possibly) higher version which may not always have backward compatibility.

The proposed change simply throws a more descriptive error rather than defaulting to a tool which may or may not exist on the machine, be it CI or a development environment. I've also modified the RNTester app to reflect the correct config implementation relative to the RNTester app itself.

In real projects, the config inside `android/app/build.gradle` should look similar to the following snippet:

```
project.ext.react = [
  cliPath: "$rootDir/../node_modules/react-native/cli.js",
  entryFile: "index.js"
];
```

## Changelog
[Android] [Fixed] - Gradle release config
Pull Request resolved: https://github.com/facebook/react-native/pull/28415

Test Plan:
- [x] Successfully bundled an Android release build with correct config
- [x] Works with RNTester app

Reviewed By: mdvacca

Differential Revision: D20714372

Pulled By: hramos

fbshipit-source-id: 4d66139249c6f840582a71a48c64e6a6595f7af0

* Reimplement D19965405: Small improvements in Differentiator/TinyMap

Summary:
Two things:
1) I reimplement Valentin's idea in D19965405, so that TinyMaps can be iterated over, with a couple of bugfixes (calling front() or back() on an empty vector will crash).
2) I now use TinyMap instead of better::map in the "optimized" diffing algorithm.
3) `erase` now actually removes elements from the vector, but only when more than half of elements have been erased.
4) If you repeatedly erase elements at the beginning of the vector, they will no longer be iterated over. This is a specific optimization for our heaviest TinyMap use-cases.

These amount to some small but hopefully somewhat meaningful perf improvements.

Changelog: [Internal] Fabric perf

Reviewed By: shergin

Differential Revision: D20718719

fbshipit-source-id: 91f4b2e2e0f6387ae484e43d5b0095103087baa6

* Remove LayoutInspectingPolicy.includeScrollViewContentOffset

Summary:
`LayoutInspectingPolicy` has two flags, `includeTransform` and `includeScrollViewContentOffset`.

`includeScrollViewContentOffset` seems to be redundant for two reasons.

# 1st
From looking at callers, they have always the same value.
I looked at all call sites, and they are either always both set to true or both set to false.

# 2nd
The way we include scroll view content offset, is through transformation, so setting `includeTransform` to true and `includeScrollViewContentOffset` to false will include content offset anyway. In order to make both flags work, we would need to introduce further changes to `getRelativeLayoutMetrics`. But since the flag isn't used anyway, I think it is better to get rid of it for now. If we need it in the future, we could re-introduce it.

Reviewed By: shergin

Differential Revision: D20622256

fbshipit-source-id: fb6156c66b752319ea928239fa723ff90688b0a0

* Add support for translation and rotation to operator * between Rect and Transform

Summary:
Changelog: [Internal]

Until now `Rect operator*(Rect const &rect, Transform const &transform)` supported only scaling. Now it supports translation and rotation as well.

Reviewed By: shergin

Differential Revision: D20622876

fbshipit-source-id: 1b65393bd3fd6fd9a8941903e0f2681a10097e4a

* Include transform property when calling getRelativeLayoutMetrics

Summary:
Changelog: [Internal]

Current implementation of `measure` doesn't take transform into account..

So if you had a view which has width and height 100 and had `Scale(0.5, 0.5, 1)` (this will shrink view by half). Calling `getRelativeLayoutMetrics` would report its size being `{100, 100}`.
This applies if view's parent has transformation as well, because transformation is applied to all subviews of the view as well.

Reviewed By: mdvacca

Differential Revision: D20621590

fbshipit-source-id: 2cf902a0494291c821ecada56f810c5e6620db5a

* feat: migrate appveyor to circleci (#28245)

Summary:
This issue closes https://github.com/facebook/react-native/issues/28241
Migrated Windows test from AppVeyor to CircleCI

## Changelog

[Internal] [Changed] - Migrated Windows test from AppVeyor to CircleCI
Pull Request resolved: https://github.com/facebook/react-native/pull/28245

Test Plan: For CircleCI to Pass

Reviewed By: cpojer

Differential Revision: D20689163

Pulled By: hramos

fbshipit-source-id: 285c762457ef00f7884ee9157b3f336044c0452f

* Remove "Debug with Nuclide" option

Summary: This is no longer needed.

Reviewed By: cpojer

Differential Revision: D20722274

fbshipit-source-id: 5bc3104e90811d724f42aadbf137ab8eff718ca0

* experiment to preload RN bridge after fb4a bookmarks render

Summary:
Changelog:
[Android][Internal] add internal supermodule label

Reviewed By: mdvacca

Differential Revision: D20434200

fbshipit-source-id: fae50309cdd0df4a4523c2f88d1c8e01a7163575

* Fix CursorDrawable Color Tint for Android 10+

Summary:
Accessing this field via reflection is explicitly blacklisted by Google in Android 10 and higher. They have provided a new API to change the color, which I have implemented here. [The old setColorFilter is deprecated](https://developer.android.com/reference/android/graphics/drawable/Drawable#setColorFilter(int,%20android.graphics.PorterDuff.Mode)) so I also updated that method call as well.

Changelog: [General] [Fixed] Use new setTextCursorDrawable API for Android 10

Reviewed By: JoshuaGross

Differential Revision: D20656068

fbshipit-source-id: 58a92b57c0a892c7c87fc5d735e4ceaa4e987ec7

* Early return on tinting CursorDrawable if no color supplied

Summary:
There's (potentially) a lot of expensive reflection calls here that, as best I can tell, end up being ignored if the supplied color is null. Better to early return.

Changelog: [General] [Internal] Preclude reflection when setting cursor color if color is null

Reviewed By: JoshuaGross

Differential Revision: D20670594

fbshipit-source-id: 480a988355bbd79008002c4326d4b35035ec2a95

* Partial React Sync for Inspector

Summary:
Partial sync for React that includes:

- https://github.com/facebook/react/pull/18388
- https://github.com/facebook/react/commit/dd7e5e4f5ac2ffac3171ef61daee2cb1edc69635

Created from this branch: https://github.com/facebook/react/compare/master...rickhanlonii:rh-partial-3-24?expand=1

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D20651395

fbshipit-source-id: 67baf7c407f75d9fd01c17f2203a77a38567100e

* Enable inspector for Fabric

Summary:
## Overview
This diff refactors the Inspector, moving logic to look up view data for a touched view inside the renderer as `getInspectorDataForViewAtPoint`. We then implement that same function for Fabric in order to support the inspector in that renderer.

Requires https://github.com/facebook/react/pull/18388

## Motivation

Reason one for this refactor is that, previously, the inspector held all of the logic to look up view data for a given x,y touch coordinate. To do this, it would take the React tag and coordinates, look up the native view tag, measure it, and then ask React internals for the Fiber information of that tag. All of this is deeply coupled to React internals, yet the logic is outside of React core in the Inspector.

Reason two is that, for Fabric, the logic for getting the view data is different than Paper. In Fabric, we pass the x,y coordinates to native directly, which returns an instance handle. That handle can be used to measure the ShadowNode, or retrieve the Fiber information.

By moving the logic into the renderer in React core, we decouple the implementation details of looking up view data for a tapped point and allow ourselves the ability to add and change renderer-specific code for the actual lookup without impacting outsiders like the Inspector.

Changelog: [Internal]

Reviewed By: TheSavior

Differential Revision: D20291710

fbshipit-source-id: a125223f2e44a6483120c41dc6146ad75a0e3e68

* chore: update url of warning message from deprecated imports (#28452)

Summary:
Some of the repository name of Lean Core(https://github.com/facebook/react-native/issues/23313) libraries has been renamed.
This PR updates the warning message to display the updated url.

## Changelog

[General] [Changed] - Update warning message of deprecated imports
Pull Request resolved: https://github.com/facebook/react-native/pull/28452

Test Plan: updated URL can be accessed.

Reviewed By: cpojer

Differential Revision: D20745184

Pulled By: TheSavior

fbshipit-source-id: 2c3ed6a000b45022ca6c4862305aa567c4d18b2e

* Add `upgrade-support` link on issue creation (#28411)

Summary:
This PR adds a https://github.com/react-native-community/upgrade-support link for the user when creating an issue.
Changelog:
[Internal]

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

Reviewed By: cpojer

Differential Revision: D20714274

Pulled By: hramos

fbshipit-source-id: 4ca42224a50e386b95f21f0fb236a917e1b6b982

* Update PixelRatio 'getFontScale' method description (#28407)

Summary:
Refs facebook/react-native-website#1776.

Despite in-code description `PixelRatio.getFontScale()` is working properly on the iOS (it also reflects the user settings).

This PR updates the in-code description to match current behaviour.

I have decided to skip in the code information about additional setting in `Accessibility` menu and in `Control Centre`, but if you think it is important just let me know, I can update this PR.

## Changelog

[Internal] [Fixed] - Fix PixelRatio getFontScale method description
Pull Request resolved: https://github.com/facebook/react-native/pull/28407

Test Plan: N/A

Differential Revision: D20750260

Pulled By: shergin

fbshipit-source-id: c40ec2fd49cd60e2975351c3a1c453aab0045da4

* Remove allowDisablingImmediateExecutionOfScheduleMountItems feature flag

Summary:
No longer needed.

Changelog: [Internal]

Reviewed By: mdvacca

Differential Revision: D20747684

fbshipit-source-id: a8077519b7670d72e23267b1c1423556ec97be3f

* RuntimeExecutor helpers that modify the way of the callback is being executed.

Summary:
Here we implement a bunch of helper methods that allow customizing the behavior of a RuntimeExecutor "on-demand" on the caller side. We will use it in the next diff(s).

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: PeteTheHeat

Differential Revision: D20551411

fbshipit-source-id: 51d3cd02b69753110c0e1155347c6e52eb882c7d

* Fabric: Using `executeSynchronouslyOnSameThread_CAN_DEADLOCK` in MainRunLoopEventBeat

Summary:
We are replacing inline-ed implementation with practically the same one implemented as the helper method.

Changelog: [Internal] Fabric-specific internal change.

Reviewed By: sammy-SC

Differential Revision: D20551409

fbshipit-source-id: fcc6f497cd240af65fba534051c217fe5746ce82

* Set RootNodeKind trait in ModalHostViewShadowNode

Summary:
Changelog: [internal]

`ModalHostViewShadowNode` didn't have `RootNodeKit` trait, therefore `getRelativeLayoutMetrics`  was including nodes in ancestors that it shouldn't have.

Reviewed By: shergin

Differential Revision: D20735801

fbshipit-source-id: 6b81e3b174c2f82e530abc2bca2da8bebc2270b0

* mention RNTester app in contributor guide (#28042)

Summary:
motivation is following - the RNTester app is imho the best place to try out any changes that a contributor would make, yet it is not directly mentioned in the contributor guide. This fixes it.

## Changelog

[Internal] - Docs
Pull Request resolved: https://github.com/facebook/react-native/pull/28042

Test Plan: not necessary

Reviewed By: TheSavior

Differential Revision: D20401260

Pulled By: hramos

fbshipit-source-id: 01c1b7dff56b59909c94b2feb609650f0baba1a9

* Buck: Use Android SDK 29 during build (#28455)

Summary:
Fixes `test_android` and `test_docker` build failures. Thanks to dulmandakh for identifying the fix.

Changelog:
[Internal] [Android] [Changed] - Use Android SDK 29 to build during CI tests
Pull Request resolved: https://github.com/facebook/react-native/pull/28455

Test Plan: Circle CI shows `test_android` and `test_docker` passing: https://app.circleci.com/jobs/github/facebook/react-native/142273

Reviewed By: sturmen

Differential Revision: D20766589

Pulled By: hramos

fbshipit-source-id: 8ef8a8ce3a6e7353ae47425accb3bd26cf1608c4

* Assign orderIndex_ in ConcreteViewShadowNode constructor instead of ViewShadowNode's constructor

Summary:
Changelog: [Internal]

`orderIndex_` was only being assigned for `ViewShadowNode`, not for other `ShadowNodes` that are later represented on the screen.

Reviewed By: shergin

Differential Revision: D20746477

fbshipit-source-id: c04c2cfea14b9141d22bc3d9e9bb4c0c59925754

* Implement nativePerformanceNow to improve Profiler API results (#27885)

Summary:
When experimenting with React Profiler API (https://reactjs.org/docs/profiler.html), I noticed that durations are integers without a debugger, but they are doubles with higher precision when debugger is attached. After digging into React Profiler code, I found out that it's using `performance.now()` to accumulate execution times of individual units of work. Since this method does not exist in React Native, it falls back to Javascript `Date`, leading to imprecise results.

This PR introduces `global.nativePerformanceNow` function which returns precise native time, and a very basic `performance` polyfill with `now` function.

This will greatly improve React Profiler API results, which is essential for profiling and benchmark tools.

Solves https://github.com/facebook/react-native/issues/27274

## Changelog

[General] [Added] - Implement `nativePerformanceNow` and `performance.now()`
Pull Request resolved: https://github.com/facebook/react-native/pull/27885

Test Plan:
```
const initialTime = global.performance.now();
setTimeout(() => {
  const newTime = global.performance.now();
  console.warn('duration', newTime - initialTime);
}, 1000);
```

### Android + Hermes

![Screenshot_1580198068](https://user-images.githubusercontent.com/13116854/73245757-af0d6c80-41b5-11ea-8130-dde14ebd41a3.png)

### Android + JSC

![Screenshot_1580199089](https://user-images.githubusercontent.com/13116854/73246157-92256900-41b6-11ea-87a6-ac222383200c.png)

### iOS

![Simulator Screen Shot - iPhone 8 - 2020-01-28 at 10 06 49](https://user-images.githubusercontent.com/13116854/73245871-f136ae00-41b5-11ea-9e31-b1eff5717e62.png)

Reviewed By: ejanzer

Differential Revision: D19888289

Pulled By: rickhanlonii

fbshipit-source-id: ab8152382da9aee9b4b3c76f096e45d40f55da6c

* Save/restore IP when leaving the interpreter

Summary:
This diff implements the instruction pointer save/restore trick Tzvetan came up with; allowing us to observe and modify the IP from outside the interpreter loop with negligible overhead.

From Tzvetan's internal post on the subject:

> [Today] the interpreter IP is just a local variable in the interpreter function, so there is no way to get to its value from outside the function. It lives in a register and we don't want to make it a Runtime field since the overhead [of accessing it via memory in the interpeter loop] would kill us.

> However, if you really think about it, it only lives in a register while the interpreter function is running. For the rest of the time, it is spilled by the C++ compiler onto the stack.
So, precisely when we need it, it is actually stored in memory. The only problem is, we don't know where! Admittedly, that is an annoying problem, but it feels like it should be solvable.

> What if, instead of relying on the compiler to spill the IP register, we manually spill it ourselves, to a known location? It works. Example: https://godbolt.org/z/ftSDnp

This diff implements this approach across the whole interpreter loop: whenever we call out of the loop we capture/publish the IP and restore it again immediately after the external call returns. This means we can now see the IP outside the interpret loop and even change it. This is effectively "for free" as the compiler now skips spilling/restoring the IP behind the scenes.

The immediate benefit of this is knowing the current IP allows us to have more accurate stack-traces during execution. In future this may enabled tricks like changing the IP before returning to th…
@paulafejaum
Copy link

@paulafejaum paulafejaum commented Oct 7, 2020

Is there anything I can do?

@morenogomes
Copy link

@morenogomes morenogomes commented Oct 7, 2020

I would like to contribute, is there anything that I can do?

miguelbermudez pushed a commit to mdcollab/react-native-web that referenced this issue Nov 16, 2020
Squashed commit of the following:

commit a877a02beb6a2032430f83b062e173d68c40c65d
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Nov 9 23:58:55 2020 +0000

    Bump dot-prop from 4.2.0 to 4.2.1

    Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1.
    - [Release notes](https://github.com/sindresorhus/dot-prop/releases)
    - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1)

    Signed-off-by: dependabot[bot] <support@github.com>

commit 6928fab9e0ef1e5bd0c10713b3b18b1b178d0bfb
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Nov 9 15:57:38 2020 -0800

    0.14.8

commit e5ded5897253243b1fbffa17956401e9d53fcfd2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Nov 9 15:46:48 2020 -0800

    [fix] ScrollView doesn't respond to descendant scroll events

    Workaround for React DOM's non-standard bubbling of scroll events.

    Fix #1800

commit cf91d7547128da7b4d8700b26741df36a1280797
Author: Kyle Fang <zhigang1992@gmail.com>
Date:   Sat Oct 31 14:41:16 2020 +0800

    [add] LogBox stub

    Close #1794

commit 6624a70ccaf83988a0b1084cba9c85b6d85b0352
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Oct 30 10:52:37 2020 -0700

    0.14.7

commit 5806b249dd158b06da78b5eafcf98148e87666b3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Oct 30 10:47:32 2020 -0700

    [fix] Use browser expansion of 'flex' style

    Fix #1792

commit 1048f7ce3edc1e49a9df9b50489cfb68adeac541
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 29 17:14:39 2020 -0700

    0.14.6

commit 18f5a33c0d27c0d81ab92489a39076ee2a677525
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 29 16:09:02 2020 -0700

    [fix] Don't require mocking window.matchMedia in jest

    For people who don't mock unsupported DOM APIs for jsdom in their jest setup.

    Fix #1789

commit 07e578edb8af1237e3dc127e9a674c4f97d70e54
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 29 15:51:03 2020 -0700

    [fix] ResponderSystem negotiation logic

    This fixes a bug in the negotiation logic that caused a cycle of
    terminate->grant events to be sent to the current responder during a pointer
    move. The root cause was using an incorrect event path in the calculation of
    the lowest common ancestor's index. The fix is to ensure that the event path
    stored with the current responder is pruned to begin with the node that is the
    current responder (rather than any child responders it may have contained).

commit d2e6c29e259856b81d0466217754c1107a44f014
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 29 14:14:21 2020 -0700

    [fix] Pan interactions should cancel 'click' events on the target

    If a pan interaction has taken place, it is not expected that 'click' events
    occur on the target element when the pointer is released (as was occuring with
    mouse pointers). This patch cancels any 'click' that occurs within the pan
    target's subtree, within 250ms of the pan gesture ending.

    Fix #1788

commit 03897d32be87dc8cf1783112902bf8092912ad8a
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 29 14:13:42 2020 -0700

    [fix] Disabled pressables should propagate 'click' events

    If a pressable is disabled it should not prevent the propagation of native
    'click' events, unless the underlying DOM node has an 'aria-role' of 'button'.
    This emulates the native '<button>' behavior.

    Fix #1781

commit b8fddcf6b155f0db6c292b2f42c80425b05091b7
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 27 11:06:27 2020 -0700

    0.14.5

commit d9c755dff0574b98cb182f015a7a4697db0d9aca
Author: Charlie Croom <ccroom@twitter.com>
Date:   Mon Oct 26 20:54:04 2020 -0400

    [fix] Enter key handling for components explicitly given accessible prop

    Close #1783

commit 63c39454de35897616169156f3b1b145867fce59
Author: burakgormek <burak.gormek@gmail.com>
Date:   Mon Oct 26 22:57:26 2020 +0300

    [fix] Pressable disabled cursor state

    Close #1782

commit 89be8a9f8b48f83428577d0865f4dcd2797067d3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 22 12:28:17 2020 -0700

    Fix ViewProps import path

    This error was not surfaced by Flow locally but surfaced in CI.

commit b4e53e8cd3d43ce585df479c42c9d4216ad3dd16
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 22 11:00:02 2020 -0700

    0.14.4

commit cea4172efb84c10eecea86a4e09321efe6977086
Author: Charlie Croom <ccroom@twitter.com>
Date:   Thu Oct 22 10:31:33 2020 -0400

    [fix] Prevent onClick being called when certain roles are disabled

    Fix #1779
    Close #1780

commit a2d72ee89cf3981e3daf4a67a6e20f41ca4c925b
Author: Charlie Croom <ccroom@twitter.com>
Date:   Tue Oct 20 11:53:45 2020 -0400

    [fix] Avoid usePlatformMethods excess ref creation

    Close #1777

commit 2428b6c6fcc4093fe8f3ab12ac10168651f3c8f0
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 19 16:02:22 2020 -0700

    0.14.3

commit 0aa77685aa50c816e1715673b7fa758b025c9dc0
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 19 15:50:02 2020 -0700

    [fix] Add matrix transform style

    Remove the deprecated 'transformMatrix' style prop and support 'matrix' and
    'matrix3d' in the 'transform' prop.

    Fix #1771

commit 663458713c64c0236cfc4fe0494b13baeab354a7
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Oct 16 12:57:49 2020 -0700

    0.14.2

commit 31183151405ce8ce3a1f7356462b46b2c6509f07
Author: TikiTDO <TikiTDO@gmail.com>
Date:   Tue Oct 13 16:19:16 2020 -0400

    [fix] Remove 'collapsable' prop from createAnimatedComponent

    This is an Android-only prop that has no platform guard in React Native. The
    web has a native 'collapsable' prop that React DOM complains about when it is
    not a string value.

    Close #1767

commit 09c2f1975b053a4afe2d412a23450a8ff3f6ffbf
Author: Charlie Croom <ccroom@twitter.com>
Date:   Wed Oct 14 22:51:54 2020 -0400

    [fix] Prevent constant Image reloading when source given as an object

    Close #1770

commit 18d5d449a78e03e4930b4489f379e8a4058a0bfc
Author: Charlie Croom <ccroom@twitter.com>
Date:   Mon Oct 12 22:24:55 2020 -0400

    [fix] Callback ref less on Views by making classList constant

    Close #1766

commit 933bd138ce6f9f2fd5ade7fc8ac7dd3693b5cb71
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 12 13:41:20 2020 -0700

    0.14.1

commit c2019a9881ecec4cdb5d4b2ab355ed7e578b8752
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 12 13:37:42 2020 -0700

    [fix] Pressable cursor and touch-action styles

    Also add unit tests for Pressable.

    Fix #1764

commit 78174d7b487bb37d2f15c21e38a5beb2ad196da4
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Oct 9 12:59:41 2020 -0700

    0.14.0

commit 38fd574984ca8ac997f8fbbdb91991dea6c76ca9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Sep 10 14:06:34 2020 -0700

    [add] Pressable support for hover state

    This patch ports the 'useHover' hook to React Native for Web, providing hover
    state that is scoped to a pressable and does not bubble to ancestor pressables.
    This behavior aligns with the behavior of the focus and press states.

    Fix #1708

commit 5b7a6bc30a90ed1c2c9d9327df926ad361fabb29
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Sep 10 13:28:35 2020 -0700

    Move hooks into 'modules' directory

commit d97a1ca5671aa91cab6d0825677a5e35ce3c6685
Author: James Ward <james@notjam.es>
Date:   Tue Sep 8 11:45:37 2020 -0700

    [add] Modal component

    This adds support for the React Native Modal on web.

    The app content is hidden from screen readers by setting the aria-modal flag on
    the modal. This focus is trapped within the modal, both when attempting to
    focus elsewhere using the mouse as well as when attempting to focus elsewhere
    using the keyboard. A built-in "Escape to close" mechanism is been implemented
    that calls 'onRequestClose' for the active modal.

    Close #1646
    Fix #1020

commit 6bd41a622a66c21679b486ecb8f18c589dab667b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 31 16:58:35 2020 -0700

    Remove react-dom vendor directory

commit 108366a72421e1b7ef8800a05584b507e948f8bf
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Aug 25 16:28:32 2020 -0700

    [change] Default flex-basis value of Views

    React Native has an implementation of flexbox that does not quite follow the
    W3C spec for flexbox. Previously, React Native for Web attempted to replicate
    the React Native rendering by setting flexBasis to 0%. However, this created
    its own problems where views could collapse down to 0px in height on the web.
    This patch relies sets the default flexBasis back to 'auto'. This will cause
    different rendering inconsistencies with React Native, which can be addressed
    by making changes to existing React Native styles. And ultimately, it is up to
    Yoga to correct its flexbox implementation.

    Fix #1640
    Fix #1604
    Fix #1264
    Close #1265

commit bf2e10d4823ffe5e207aacb77b4dfcc4a2c659e5
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Oct 9 11:17:09 2020 -0700

    0.13.18

commit faf7fa337442bf0d024d1e882bb316364953d307
Author: Mark Lawlor <mwlawlor@gmail.com>
Date:   Fri Oct 9 11:19:58 2020 +1000

    [fix] skip ResizeObserver warning during SSR

    Close #1762

commit df14c7278afec5ae131d1a60167660cf798c856c
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 8 12:29:11 2020 -0700

    0.13.17

commit b15e8784c46e50cb5ca03e3113c31fd5280b14a1
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 8 12:27:15 2020 -0700

    Add unit tests for ref imperative methods

commit 583e16fa8d6f53fd8234944cb2beb94a9c2293b8
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Oct 7 14:42:22 2020 -0700

    Memoize refs

    Refs can be memoized following the fix in the previous commit.

    Fix #1755
    Fix #1665

commit b4322734a28f7f3dc970041b8d4413b2712a078f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Oct 7 14:31:57 2020 -0700

    [fix] Order of ref merging

    Ensure internal refs are called before the forwardedRef. This ensures that the
    DOM element mutation performed by usePlatformMethods occurs before user-space
    refs are called.

    Ref #1749

commit bdcb4de7dcca33c1a08eafbd59a0ba09deb47ca6
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 6 11:41:31 2020 -0700

    0.13.16

commit d8ee51e32633b106fb6c8e7f5f73af50c113017b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 6 11:38:17 2020 -0700

    [fix] CSS scrollbarWidth

    The previous code wasn't inserting the W3C rule because it had the same selector as the rule for proprietary styles. However, the Firefox value isn't supported anymore, and the Edge value is unnecessary as Edge uses Blink now. This patch removes the non-WebKit fallback styles for this property.

    Fix #1760

commit aad0c88cea5444fb93231d55296e45b3720bea3b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 5 15:38:06 2020 -0700

    0.13.15

commit 6d04e7243e8e0958eec473429f0f4563bc8e41b9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 5 15:33:50 2020 -0700

    [fix] Don't propagate click or contextmenu events on disabled elements

    This patch fixes the PressResponder to avoid propagating click and contextmenu
    events in all circumstances. It also prevents click propagating for focusable
    elements that are disabled, mirroring the behavior of native buttons when
    disabled.

    Fix #1757

commit ba5e9e30795eb80e2f8f072cead182412f5c1edc
Author: Julian Hundeloh <jaulz@users.noreply.github.com>
Date:   Thu Sep 24 16:35:49 2020 +0200

    [add] AccessibilityInfo isReduceMotionEnabled

    Close #1754

commit 06d3cadf052c957b7f41f6fd81f3db904abc5189
Author: Shobhit Chittora <shobhitchittora@users.noreply.github.com>
Date:   Wed Sep 23 00:41:14 2020 +0530

    Update docs suggested preset to metro-react-native-babel-preset

    Updating the document as `babel-preset-react-native` is deprecated in favor for
    `metro-react-native-babel-preset`. More info here -
    https://www.npmjs.com/package/babel-preset-react-native.

    Close #1751

commit 72bfe499c536db08984853e011fc36bf8a4cf85b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 5 14:28:27 2020 -0700

    Add to View tests

commit 92ac1f94c53903b3ce5111e53f30a363c6c7d291
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 5 13:14:38 2020 -0700

    Add to Text tests

commit 5edba02319e88d49614518011b490dab856389d2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 5 13:14:26 2020 -0700

    Add to Image tests

commit 2276e17310df342762147ba7f1166f7d4a3f22dc
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 1 17:05:26 2020 -0700

    Add to CheckBox tests

commit 222fa3490e44ee1b641c71ea2674c6531200903b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 1 16:56:44 2020 -0700

    Add to Button tests

commit 0fb3036f318d0ed51a970f7d13e13080ad891c83
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Oct 1 16:40:51 2020 -0700

    Add to ActivityIndicator tests

commit 7bc6fc83476bffb1da54234b01c713d3ccb15049
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Sep 24 13:39:37 2020 -0700

    0.13.14

commit c60417ab3495b7721aa3fabcb4cf7602845d0ae3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Sep 24 13:26:21 2020 -0700

    [fix] Revert ref memoization

    Memoizing refs caused unexpected regressions in some class component patterns.
    The memoization is being reverted for now.

    Fix #1749

commit af0d80a808f6d246facc38fac1cd24d2b205f0ac
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Sep 21 15:56:18 2020 -0700

    0.13.13

commit 12e91a35a421a001812b964bf7c2df19a4048c1c
Author: Richard Lindhout <richardlindhout96@gmail.com>
Date:   Thu Sep 17 23:08:05 2020 +0200

    [fix] nested Text selection

    Allow text to be made selectable within a text node that is not selectable.

    Close #1742

commit 376ccc31b1b1a11de1cab6bd7df4385be1a6a28c
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Sep 21 13:40:06 2020 -0700

    [fix] Optimize ref merging

    Close #1746
    Fix #1665

commit 4a70300b081626b34ee90dac9066b6786d882bb6
Author: Hossein Mohammadi <hosseinm.developer@gmail.com>
Date:   Thu Sep 10 12:56:27 2020 +0430

    Remove unnecessary code from setValueForStyles

    Close #1734

commit 7ab04987f0a638d22bb3785eecbe2f375c714c35
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Sep 9 16:04:57 2020 -0700

    Fix compressed-size build script

commit f52a9bcfd249f254bb17eb53d3472bc0bb3c143b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Sep 9 13:33:08 2020 -0700

    Add compressed-size action

    Reports minified + gzipped size of modules

commit 74acb21aa850bcb242b0c9e77c2cef1754a19c2f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Sep 9 11:57:58 2020 -0700

    0.13.12

commit 1e1236597a1cfbc9838f0cfec14379d493bb2e43
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Sep 9 11:49:03 2020 -0700

    [fix] Image SSR hydration warnings

    React doesn't currently provide an API for defining SSR-safe IDs, so we have to
    suppress the hydration warnings that occur.

    The 'useOpaqueIdentifier' hook is intended to support this use case but is not
    currently a public API and development has been paused.
    https://github.com/facebook/react/pull/17322.

    Close #1375

commit e9d81afbd412812a2f5e841656f88044ed3d1e39
Author: SaltyWater <qs920921@gmail.com>
Date:   Wed Sep 9 13:35:57 2020 +0800

    [fix] Forward scroll end event to ScrollView onScroll handler

    Close #1728

commit 9ed9231b04ae495718e76749036ca3cd2a81eb80
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Sep 8 12:33:37 2020 -0700

    0.13.11

commit d5ab3770c0d8c65251db2924add03dd1ab78b81f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Sep 8 12:32:00 2020 -0700

    [fix] PressResponder keyboard edge-case

    Fixes the state-machine logic for the press responder when focus is moved away
    from the target element during a 'keydown' event.

commit 397de881379059a2ce786eb0640a4ec3a1e29a7f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Sep 8 11:24:19 2020 -0700

    0.13.10

commit bb8a1b145523acca33dfe2a922582c7a85407aab
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Sep 8 11:22:35 2020 -0700

    [fix] ScrollView scrollEventThrottle logic

    Fix #1726

commit 214b296c1110d6141546c033c9d7ed43148d0b12
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Sep 4 22:38:17 2020 +0000

    Bump bin-links from 1.1.3 to 1.1.8

    Bumps [bin-links](https://github.com/npm/bin-links) from 1.1.3 to 1.1.8.
    - [Release notes](https://github.com/npm/bin-links/releases)
    - [Changelog](https://github.com/npm/bin-links/blob/v1.1.8/CHANGELOG.md)
    - [Commits](https://github.com/npm/bin-links/compare/v1.1.3...v1.1.8)

    Signed-off-by: dependabot[bot] <support@github.com>

commit a7df78afbe97c2102c943c8259a57e8b92fd6791
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Sep 4 03:38:29 2020 +0000

    Bump markdown-to-jsx from 6.10.3 to 6.11.4

    Bumps [markdown-to-jsx](https://github.com/probablyup/markdown-to-jsx) from 6.10.3 to 6.11.4.
    - [Release notes](https://github.com/probablyup/markdown-to-jsx/releases)
    - [Commits](https://github.com/probablyup/markdown-to-jsx/compare/6.10.3...6.11.4)

    Signed-off-by: dependabot[bot] <support@github.com>

commit c6425a0048f98bc08a29cf5f9568018a092f4caa
Author: Harrison Mendonça <harrisonmendonca@gmail.com>
Date:   Thu Sep 3 12:02:54 2020 -0300

    [fix] Add event parameter to Image onLoad callback

    Close #1723

commit 8add92f776c88a180859000d7d8585e5d2971edf
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Aug 25 12:05:29 2020 -0700

    0.13.9

commit 9a0acc54649596fb60e8bdb9e77d11093085ab4b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Aug 25 11:00:27 2020 -0700

    [fix] Layout of nested Text elements

    Remove the 'dir=auto' attribute from nested Text elements as this can cause
    browsers to produce broken text layouts.

    Fix #1714

commit a31c4c65d07a573de440f3a8a3d715a731485b85
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Aug 25 11:12:29 2020 -0700

    [fix] Remove Animated 'useNativeDriver' warning

    Fix #1693

commit 834bd5b98bd55b9ce09e3afd3583542e551d2017
Author: Colby Stauss <colby.stauss@gmail.com>
Date:   Thu Aug 6 18:11:44 2020 -0500

    [fix] Animated getScrollableNode check

    Close #1695
    Fix #1680

commit de2a66c694723ca4aaa99ea5f88f41232e0e4481
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 24 13:50:55 2020 -0700

    [fix] ResponderEvent touch identifier normalization

    Move the touch identifier normalization into the ResponderEvent creation. This ensures that the identifier is consistent throughout. If application code reads an identifier from a touch object it can be used to find that touch in the `touchBank` array.

    Fix #1716

commit 9ed0c407a93e55db6550f0322923546f74fa0e39
Author: Richard Lindhout <richardlindhout96@gmail.com>
Date:   Thu Aug 20 13:07:04 2020 +0200

    [fix] TextInput keyboardType for 'numeric' and 'decimal'

    Don't rely on native restrictions and validations for these keyboardType
    values, as developers often want custom presentation (e.g., comma separators)
    and custom validation.

    Fix #1705
    Fix #1438
    Fix #1280
    Close #1709

commit 7a8a70b94888c4554969f626645daead37c8f60b
Author: H3RSKO <34112131+H3RSKO@users.noreply.github.com>
Date:   Sun Aug 16 16:47:34 2020 -0400

    Fix typo in README

    Close #1706

commit 67a3d787997a2ffbcb84c3e34c6c4376404a1854
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 17 11:32:37 2020 -0700

    0.13.8

commit 77bdb9086ed4bc06428e74770790c1bcec1453f3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 17 11:10:53 2020 -0700

    [fix] Avoid needing to memoize onLayout callbacks

    If 'onLayout' is an inline function, it could cause the DOM node to enter a
    cycle of being observed/unobserved with the result that 'onLayout' was
    constantly called.

    Fix #1704

commit 7fc17d01cc3695d784b460842bffbacc43c3f57e
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Aug 12 10:58:28 2020 -0700

    0.13.7

commit b8283245cff0c1d0a5608d7d04c67aa85fee2ce0
Author: Evan Bacon <baconbrix@gmail.com>
Date:   Tue Aug 11 16:37:42 2020 -0700

    [fix] check for window availability in ResponderSystem

    Close #1699

commit 75c5a9056377540b1c04e00db8154087f61bd4f3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 10 14:13:13 2020 -0700

    0.13.6

commit 3233d0ffe99a568de3b76272926c7083e083f83e
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 10 13:26:13 2020 -0700

    [fix] Responder negotiation between siblings

    There should be responder negotiation between siblings if there is no common ancestor connected to the responder system. Instead the current responder should continue to receive events. This was only occuring for mouse events during mousemove, as the target can change during the course of the movement.

commit 251cdfb220a165dc652bf118063139da2b9345f1
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 3 14:10:51 2020 -0700

    0.13.5

commit 7c46a3667e83884813225e0dd8b34020ee86decb
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 3 13:49:15 2020 -0700

    [fix] update System font stack

    Remove system-ui as it has rendering issues for certain OS/language combinations.
    See https://phabricator.wikimedia.org/T175877

    Fix #1638

commit 5a15dcae66d9c87a747005fb6edffa8630823a12
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 3 13:46:47 2020 -0700

    [fix] Dimensions doesn't debounce change listener

    Fix #1662

commit af0ae004ffa724197e081c4d5c222ee2057894c2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Aug 3 13:44:27 2020 -0700

    [fix] Image forwards ViewProps

    Close #1637

commit 08f722ac861131756e1ef100d302dc60c7acc3ec
Author: Ryoga Kitagawa <ryoga.kitagawa@gmail.com>
Date:   Thu Jul 16 17:55:36 2020 +0900

    [fix] ScrollView forwards dataSet

    Close #1675

commit 6bf69c00153b83d8eae03c54bbb251fa4b530b01
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 30 12:06:46 2020 +0000

    Bump elliptic from 6.4.1 to 6.5.3

    Bumps [elliptic](https://github.com/indutny/elliptic) from 6.4.1 to 6.5.3.
    - [Release notes](https://github.com/indutny/elliptic/releases)
    - [Commits](https://github.com/indutny/elliptic/compare/v6.4.1...v6.5.3)

    Signed-off-by: dependabot[bot] <support@github.com>

commit 28f51fa492176122f4e83b14b1bb82b57888377d
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 18:43:29 2020 +0000

    Bump lodash from 4.17.15 to 4.17.19

    Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
    - [Release notes](https://github.com/lodash/lodash/releases)
    - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

    Signed-off-by: dependabot[bot] <support@github.com>

commit 5426762ed4319799687c2bc43da03e9b0be7b19d
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jul 20 12:26:49 2020 -0700

    0.13.4

commit 10de98778598d795b776d96d01ff01dbcf6b7f7b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jul 20 12:22:17 2020 -0700

    [fix] usePlatformMethods guard against null hostNode

    Fix #1679

commit 72638d028bc9e0c5b9e7981ba680b2758d89cdbc
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jul 7 14:43:10 2020 -0700

    0.13.3

commit 097cd31a90faeaf6a66de277769dfe04c31bbbfc
Author: Colby Stauss <colby.stauss@gmail.com>
Date:   Tue Jul 7 16:30:12 2020 -0500

    [fix] Image tintColor updates

    Fix #1319
    Close #1664

commit 96dcce0261a1bcdd579260b62022ef94d8689428
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jul 7 11:45:46 2020 -0700

    0.13.2

commit 1497bb4d725ae91c8219c095c916d3539a70d2fb
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jul 7 11:35:54 2020 -0700

    [fix] TouchableWithoutFeedback child ref

    Fix #1663

commit 99e6d7137f63486fec3118d529b95bfbb0f1a887
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Jun 6 13:42:25 2020 +0000

    Bump websocket-extensions from 0.1.3 to 0.1.4

    Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
    - [Release notes](https://github.com/faye/websocket-extensions-node/releases)
    - [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

    Signed-off-by: dependabot[bot] <support@github.com>

commit 8c391604ba29a4acec6f2de8c2de2e4ce14774d9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jun 29 12:20:51 2020 -0700

    0.13.1

commit 7ef070195bbdec4d776d1fae8f98914fe2574d58
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jun 29 10:58:34 2020 -0700

    [fix] setNativeProps and pointerEvent prop

    The pointerEvent prop is converted into a DOM style property and needs to be
    accounted for by setNativeProps.

    Close #1656
    Fix #1655

commit 728e20ff1fa24b0976dccfa65a3547043a72882f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jun 29 09:59:12 2020 -0700

    [fix] jest preset

    Fix #1654

commit 824cca1972e61f9c65e19f23036eb093296bbdfa
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 26 15:16:53 2020 -0700

    0.13.0

commit cfe36d780e981885ce73862a9effcea29e7ea1c9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 27 15:17:19 2020 -0700

    Minimal update of Animated

    Ref #1576

commit 5dda71c2a667d6085440f74993223d2654f93e0f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 27 14:35:41 2020 -0700

    [change] Remove 'accessibilityRelationship'; add 'dataSet'

    Remove the 'accessibilityRelationship' prop which is not part of React Native.
    The general approach to supporting ARIA-like accessibility APIs in React Native
    needs revisiting and it will be easier to stop going down this path.

    This patch also reverts the "unstable_ariaSet" change, and renames
    "unstable_dataSet" to "dataSet". Avoiding another breaking change to
    accessibility props will ease upgrading for now.

commit 972317c17cfb223f5177c888e90ef32c86fe846a
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 27 13:54:03 2020 -0700

    PressResponder fix invariant edge case

    If keyup events fall through to a "pressable" element that is not the responder
    (e.g., a keydown in a modal closes the modal) it should not attempt to
    transition the state.

    Also replace invariant with console.error to allow the app to recover if
    unexpected signals occur.

commit 0901be6e5cba996039ebcffe2de08554f5ac4fa2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 27 13:53:48 2020 -0700

    [fix] TextInput onKeyPress and onSubmitEditing events

    onKeyPress forwards the synthetic keydown event.
    onSubmitEditing is only called if IME composition is not in progress.

    Fix #1332

commit 52f903229ea4d9ca1cc39b41aa2eefd24de2a7ca
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 20 10:22:33 2020 -0700

    Minor cleanup of StyleSheet

commit 3230713d6b6a0ea2bf3da22a246ef23064d809b6
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue May 19 21:40:54 2020 -0700

    [change] Remove support for microdata props

    Microdata was removed from the HTML spec and most browsers.

commit 53dd03d83b2b06cd6f38292d9996cfbaaf485ecf
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon May 18 14:13:38 2020 -0700

    Fix PressResponder click prevention logic

commit c2d4fd6d77f1d594fe4d1853ab5c511adda29d45
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon May 18 12:08:06 2020 -0700

    Fix TextInput onSelectionChange logic

commit fc78cb06fd349fd4cf9ac6a28b821a11397321f6
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu May 7 12:28:44 2020 -0700

    Fix updates to opacity in TouchableOpacity

commit cd9be22947e123eb2463b070666b759a5ade39dd
Author: liorJuice <45418456+liorJuice@users.noreply.github.com>
Date:   Tue Mar 10 19:32:06 2020 +0200

    [fix] Clipboard copy edge-case

    Make sure clipboard works even if global CSS is affecting user text selection.

    Fix #1559

commit 324995ec2ba39bab5e35a0cd4a47c55f7c23a23f
Author: Jaap Frolich <jfrolich@gmail.com>
Date:   Wed May 6 18:14:00 2020 -0700

    [add] Appearance module

    Close #1597

commit cecacbc3ac995e9037e1f87fd3c796e4938dd1a3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 6 18:08:55 2020 -0700

    Add eslint-plugin-flowtype

commit ff6109ec1c19f215deb3664c0d79757744e29b2a
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 6 17:15:43 2020 -0700

    Update README and docs

commit aa647567ad2e7bb0c6a475c3ed7ab2f04d0dbd0d
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed May 6 14:42:12 2020 -0700

    [change] Remove hitSlop

    Rely on the native behavior of browsers to provide hitslop for touch on
    interactive elements.

    Fix 1609

commit e9933b107aec47d528fbd442de000b784d91acda
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Apr 29 15:48:02 2020 -0700

    Adjust keyboard onClick shim

commit 4b4163f630e338e00f76a97c8309546911dce381
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Apr 20 20:45:57 2020 -0700

    [add] AccessibilityInfo API update

    Close #1574

commit ac945761e6adac355d74886279b2e1eb50b84502
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Apr 20 20:37:36 2020 -0700

    [fix] Add getNativeScrollRef to FlatList

    Fix #1560
    Close #1563

commit 7ab3cf0d4214a89a27030e05fabedec66609b9b4
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Apr 20 15:56:42 2020 -0700

    [change] Remove `scrollWithoutAnimationTo` from ScrollView

    Remove this API which was previously deprecated.

commit 37ff6b48885bb38079db7e8b4739078dc360be19
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Apr 20 11:40:05 2020 -0700

    Reorganize usePressEvents and PressResponder

commit cf7d5e9b071901d025f5629115273dd074649684
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Apr 17 16:03:24 2020 -0700

    [fix] forwarding of refs and props

    Fixes a performance regression in prop forwarding by reintroducing prop filtering.
    Fixes ref forwarding to host components, mutating the host node to add imperative APIs.

commit 0ffbf66b1ac6297bcbba9f1c9da35588474f5f63
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Apr 15 20:41:27 2020 -0700

    [change] Remove TabBarIOS and TimePickerAndroid exports

    These modules have been removed from React Native

commit a7da67cd0999da340f1c66240458476fc36eb380
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Apr 13 10:15:36 2020 -0700

    Reorganize internal modules

commit 603adc46ab637d4829d34fadb47dd703201b15c0
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Apr 15 10:21:25 2020 -0700

    Alternative PanResponder API

commit 88f5dedffd0ad71b0f66936c471d3635ad6b08b8
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Sat Apr 11 20:01:35 2020 -0700

    [change] Add Pressable and replace Touchables

    Port and rewrite "Pressability" from React Native as "PressResponder". This
    integrates a press target with the responder system on web. It avoids
    performing layout measurement during gestures by eschewing React Native's
    iOS-like UX in favor of expected Web UX: a press target will look pressed until
    the pointer is released, even if the pointer has moved outside the bounding
    rect of the target.

    The PressResponder is used to reimplement the existing Touchables. It's
    expected that they will eventually be removed in favor of Pressable.

    Fix #1583
    Fix #1564
    Fix #1534
    Fix #1419
    Fix #1219
    Fix #1166

commit 7e724b279dd5f6da3e7480ea2443959b53cb2c0d
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Mar 31 17:25:17 2020 -0700

    Remove enzyme

commit 204c432f66c09404d584c439a2d851c52219982f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Mar 31 14:06:01 2020 -0700

    [change] Text and View onClick handling

    Makes `onClick` part of the stable props API. In the future this will be used
    to implement `onPress` in the Touchables/Pressables. Special handling of click
    for keyboards is performed in `createElement`. At the moment, `Text` still
    includes the `onPress` prop, which will only be called if `onClick` is not also
    being used. In the future `Text` (in React Native) should remove the Touchable
    props from its API.

commit 66751502a337f5fc7bc774ec4aa5cfa7735e5566
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Mar 31 17:32:13 2020 -0700

    [change] Replace the ResponderEventPlugin

    Replaces the ResponderEventPlugin with useResponderEvents hook.

    Also removes the event "normalization" of mouse, touch, and click events.
    These events are not part of the responder system and will no longer be
    modified from what ReactDOM dispatches.

    Fix #1589
    Fix #1568
    Fix #1571
    Fix #829
    Fix #693

commit 4146b16a686bf2165f68fb2bf4a7ed4fb8a47514
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Mar 31 17:31:46 2020 -0700

    Add PanResponder examples to docs

commit fe013b30dc6fafba21c111fade0ae3a84b1b1cd5
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Mar 26 18:17:02 2020 -0700

    Add dom-event-testing-libary as a private package

    This is copied from facebook/react with various fixes applied (which I'll push
    upstream at a later date). Necessary for testing the Responder Event System
    rewrite.

commit fa6e269832b4929e460aefb4681cf232e74bdfd3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Mar 26 18:00:55 2020 -0700

    Add missing imports to docs mdx files

commit ee1cb490d67cec2c0e73dea3ba974707725ff6b3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Feb 24 13:42:00 2020 -0800

    Fix optional value flow types

commit f4e8b6b1942aa1ea0a36f596c34e0271abbb0b16
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Feb 24 13:03:42 2020 -0800

    [change] modernize Image

    Rewrite Image to use function components and hooks.

    Fix #1322

commit 7e616f6d46f4d844ea4a926eeda055b480a208f2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Feb 13 14:46:47 2020 -0800

    Fix props table for docs

    Stop using the built-in Props table from Storybook (which wasn't working.)

commit 8952eccf86eb07d19fd32f07959db0889b0cca4b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Feb 6 11:23:20 2020 -0800

    [change] Explicitly forward props and introduce unstable_{ariaSet,dataSet}

    Rather than filtering props, they are explicitly forwarded in each component.
    This makes it easier to see exactly which props are being forwarded to host
    components by each React Native component. Two new props - `unstable_ariaSet`
    and `unstable_dataSet` - are introduced to avoid iterating over props to find
    `aria` and `data` props.

    The `accessibilityValue` prop is also implemented.

commit 654f65e3e09c5593c6916df20215d0c65e0ed4c8
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Feb 5 16:08:37 2020 -0800

    [change] modernize TextInput

    Rewrite TextInput to use function components and hooks.
    Rewrite the unit tests to replace enzyme with testing-library.

    Fix #1339

commit d94a14dc8ca07e1c8e8c25c5d1f0206e7a4a72ee
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Feb 5 09:12:06 2020 -0800

    [change] RefreshControl, StatusBar, YellowBox as function components

commit 8d37fde5ee105f4a78a927a3913e4fea2eee3014
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 16:05:41 2020 -0800

    [change] modernize Picker

    Rewrite Picker to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit fdf53df3014498571f99de44917c3b9eecdea8be
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 14:38:19 2020 -0800

    [change] modernize CheckBox

    Rewrite CheckBox to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit 999c2ad1226ae84bfd3ea38f4a03db92628cb9eb
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 13:32:51 2020 -0800

    [change] modernize ActivityIndicator

    Rewrite ActivityIndicator to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit 35236a3cc2782bc0cce90faf42a97cb9dec2d392
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 13:19:03 2020 -0800

    [change] modernize Text

    Rewrite Text to use function components and hooks.

commit 2724ca0293076afb7d69a3fa88e83ecbfff61ecf
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 12:50:52 2020 -0800

    Add eslint-plugin-react-hooks

commit fc443c5abdafe40f2fe710d08e043891e06102a9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:50:56 2020 -0800

    [change] modernize View

    Rewrite View to use function components and hooks.

    The 'usePlatformMethods' hook also fixes a bug in the class-based
    implementation of 'setNativeProps' which was unable to correctly merge its
    styles with those provided via the component API. In the future,
    'setNativeProps' will be removed from React Native anyway.

    See (3) in #1136 for more context.

commit 7d440c74f4edd1bdb64c4fc378b8b9d9a926d1cb
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:44:10 2020 -0800

    [change] modernize Switch

    Rewrite Switch to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit ebc3882661863ff9e9265638a9196c79cca89115
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:41:49 2020 -0800

    [change] modernize ScrollViewBase

    Rewrite ScrollViewBase to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit b28d2a8214f7ebb6a107dd8eba6114749949ceaf
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:36:51 2020 -0800

    [fix] SafeAreaView types

commit 94ecc46ece466ceeb4aa860c21973a632251df13
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:30:57 2020 -0800

    [change] modernize ProgressBar

    Rewrite ProgressBar to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit 5b40b9d6aadbbbb2115570a1a3a58bf8909499e1
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:28:55 2020 -0800

    [change] modernize ImageBackground

    Rewrite ImageBackground to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit 840a2e91d45a719769e49863aff6feb334a02ea0
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:08:20 2020 -0800

    [change] modernize Button

    Rewrite Button to use function components.
    Rewrite the tests to replace enzyme with testing-library.

commit 96d8649197fb2014d550b15dfb530c29d4417d8e
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Feb 4 11:06:36 2020 -0800

    [change] modernize AppRegistry

    Rewrite AppRegistry to use function components and hooks.
    Rewrite the tests to replace enzyme with testing-library.

commit a2cccaf528125357922e3623bdced5f8ae4dfd9f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Feb 3 10:50:30 2020 -0800

    [change] Add usePlatformMethods to implement instance methods

    A hook equivalent for implementing "native methods" on refs to elements backed
    by function components.

commit 51ac083d561d96ac67fdc22ac4e1bef6a24b8561
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Feb 3 10:49:18 2020 -0800

    [change] Add useElementLayout hook to implement onLayout callback

    A hook equivalent for implementing onLayout in function components.  Removes
    the fallback to using window resize events. A ResizeObserver polyfill is now
    requires to use the `onLayout` prop.

commit 9dbe17fa6a234840f55b74a75a703c238919bec1
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jun 2 10:51:45 2020 -0700

    0.12.3

commit f4a481bb4f40cc53cd54e8a08c65a638603daf0d
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jun 2 10:38:35 2020 -0700

    [fix] Allow 'lang' attribute to be forwarded to DOM nodes

commit 5287044f403d881a13e17f140c5575ce0661587f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Feb 24 14:08:31 2020 -0800

    0.12.2

commit 92737d33f420720ca782c3aac6c5110db3186ae2
Author: Vladimir Guguiev <wizardzloy@gmail.com>
Date:   Thu Feb 20 12:02:45 2020 +0100

    [fix] Prevent injectEventPluginsByName throwing when re-evaluating code

    Close #1539

commit 18427aae5082f521f2361c74a497ccf62500fad0
Author: editkid <github.com@editkid.com>
Date:   Mon Feb 24 19:19:25 2020 +1300

    [fix] Avoid use of Object.values

    Improve compatibility with older browsers (without polyfilling)

    Close #1541

commit a7ab961d95de892e4b41c96ea945aa344fd49e50
Author: Evan Bacon <baconbrix@gmail.com>
Date:   Wed Jul 31 13:41:53 2019 -0700

    [fix] Image support for variable resolution images

    Renders the asset scale which is closest to the window scale. Requires bundler integration.

    Close #1456

    Co-authored-by: David Calhoun <dpcalhoun@gmail.com>

commit c8b73fa4e475bb7b6a79bdd4cfb20f357cc763d9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Feb 6 13:39:50 2020 -0800

    0.12.1

commit 3d53273fe757452250032286107fbfd495259a0c
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Feb 6 13:38:38 2020 -0800

    Update internal paths to docs

commit 5b7f584f191d8fb6e5c92fa560c4e6babca7559f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Feb 6 11:27:31 2020 -0800

    [fix] View filtering of accessibility props

commit 88c664fa0ff32e01c3f3df5df7116e435d57c335
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Jan 30 17:11:13 2020 -0800

    Update dependencies for 'benchmarks' package

commit dff62b3af6e4bade2e3cf3f4b2981bb2b4107c81
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Jan 30 17:01:07 2020 -0800

    Update jest dependencies

commit 032279e5f7ac5fdec9bae3562953760044478227
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Jan 30 16:54:01 2020 -0800

    Update dependencies for 'docs' package

commit d30d65b29df56dfd057e1ffeef7eb166772938ed
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Jan 30 16:45:07 2020 -0800

    Update babel dependencies

commit dee418bb930fdeabfad8361a2fdc4247519638a9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jan 24 14:24:35 2020 -0800

    0.12.0

commit 1cc7e6cbf4609d37e54ead41e58ca41a936c5c40
Author: Brandon Ros <brandonros1@gmail.com>
Date:   Fri Jan 10 18:55:41 2020 -0500

    Fix bad invariant import path

commit 16c0109df687b37e99b87a33ba8673c04c64891e
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Sat Dec 21 16:58:14 2019 +0000

    Replace invariant with console.error in View

    Jest dumps the invariant error to the console when unit tests run, which is
    both annoying and more likely to cause unwanted error to go unnoticed. We're
    also moving away from using 'invariant' in React. This patch replaces the
    invariant with a call to 'console.error', which won't crash an app that is
    using raw text nodes as View children, but it's better than nothing.

commit 287251a06a08f7338a0516b1648a25118a1c410b
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Sat Dec 21 16:57:11 2019 +0000

    [change] Remove 'placeholderTextColor' from 'createElement' props

    TextInput converts the 'placeholderTextColor' prop to a style.

commit e670e8135b2098dfe2d6874e0673652d6463f197
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Dec 20 23:30:37 2019 +0000

    [fix] TextInput forwards placeholderTextColor

    Fix a bug introduced by 924e891f58f137e363fea19aa9098b74cdf4555a

    Ref #1512

commit e22f0bebb3262f882497f8818d59f77139402d90
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Dec 20 19:30:09 2019 +0000

    [fix] ScrollView disabling of scroll

    Make sure 'scrollEnabled={false}' works on desktop browsers and no longer
    relies on using 'e.preventDefault()'.

    Fix #1491

commit f16c2c45ead945b821a29c2a09b2f8fa0a900d72
Author: luis filipe <papalagui@outlook.com>
Date:   Thu Dec 5 22:07:43 2019 +0100

    [fix] ScrollView scrollEventThrottle development warning check

    Close #1498

commit fc033a3161be76224d120dec7aab7009e9414fa7
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Dec 20 19:15:22 2019 +0000

    [add] TextInput disabled prop

    Add support for disabling TextInput elements

    Fix #1036

commit 8fa9fc5cc544ebdee884b64a2f586513f8ec6a92
Author: Greg Westneat <gwestneat@neat-designs.com>
Date:   Mon Dec 16 16:54:39 2019 -0800

    Update README link for Docz

    Close #1504

commit e0412acb94b75aac01eda7c0e661e61279401325
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Dec 19 16:59:06 2019 +0000

    [add] Allow style scrollbarWidth 'thin' value

    Close #1499

commit 0b31a8b09659c002e4499c1b71cae471fe5d6b20
Author: ecreeth <luismiguel1730@gmail.com>
Date:   Wed Dec 18 22:43:09 2019 -0400

    Refactor import and export in react-native-web entry file

    Close #1509

commit b10711bddd1fdf6e01e82c0d49840dce9c2e04d2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Dec 18 22:31:45 2019 +0000

    [fix] TextInput autoComplete behavior

    Fix 'autoComplete' behavior now that Chrome has fixed broken behavior for 'off'.
    Add fallback support for React Native's 'autoCompleteType' prop.

    Close #1404

commit 5334a4f0d8c2aefb64131fe59647e9ce2d946aac
Author: Chris Drackett <chrisdrackett@users.noreply.github.com>
Date:   Tue Oct 15 11:15:25 2019 -0700

    [fix] TextInput remove default browser margin

    Close #1458

commit df1b62cd454565cc3d07662f84848b483c6f8744
Author: Maxime Thirouin <git@moox.io>
Date:   Tue Nov 19 23:31:59 2019 +0100

    [add] useWindowDimensions hook

    Add the 'useWindowDimensions' hook from React Native

    Close #1487

commit 4763cc71c6ea4c278efe0a66599f0ab7e5ca212f
Author: Max Thirouin <git@moox.io>
Date:   Tue Nov 19 21:13:59 2019 +0100

    Document reasoning behind hairlineWidth value

    Close #1488

commit aa8593ba9704d42f26c87303ac5a584856cbadaa
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Dec 18 16:13:35 2019 +0000

    [change] Switch prop 'trackColor' support

    Remove support for legacy React Native props and add support for the
    'trackColor' object. Retains support for the web-only equivalents as I think
    this API is preferable to the one in React Native, both in terms of flexibility
    and performance (no inline objects).

    Fix #1382

commit 3c9cc66264fc5522ddfab0bf3b70392583599d34
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Dec 18 14:52:03 2019 +0000

    Update storybook dependencies

commit 1ad16930391303da511c98879fa7b2002b28c822
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Nov 13 16:09:47 2019 -0800

    [change] Remove PropTypes exports and internal use

    Removes the following deprecated exports: `ColorPropType`,
    `EdgeInsetsPropType`, `PointPropType`, `TextPropTypes`, and `ViewPropTypes`.

    Remove all use of `prop-types` in the implementations of components. Flow types
    are used instead, so there will no longer be runtime warnings related to props.

    NOTE: Removes support for `className` prop.

    Fix #1383
    Close #1477
    Close #1474
    Close #1489

commit 924e891f58f137e363fea19aa9098b74cdf4555a
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Nov 15 10:38:16 2019 -0800

    Update babel-plugin-tester

commit fced06aeaac66c551e7174e156040142088f3166
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Nov 13 01:04:54 2019 +0000

    Bump js-yaml from 3.12.0 to 3.13.1

    Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.0 to 3.13.1.
    - [Release notes](https://github.com/nodeca/js-yaml/releases)
    - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/nodeca/js-yaml/compare/3.12.0...3.13.1)

    Close #1479

    Signed-off-by: dependabot[bot] <support@github.com>

commit 21d60a3e9a2a465064ec498def7bfeb706122ede
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Nov 13 01:04:50 2019 +0000

    Bump lodash from 4.17.11 to 4.17.15

    Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15.
    - [Release notes](https://github.com/lodash/lodash/releases)
    - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15)

    Close #1478

    Signed-off-by: dependabot[bot] <support@github.com>

commit f4ff2e8891d7c35f8a5b7cb8853fb7eac1e8eedf
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Nov 12 23:40:50 2019 +0000

    Bump mixin-deep from 1.3.1 to 1.3.2

    Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
    - [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
    - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)

    Close #1468

    Signed-off-by: dependabot[bot] <support@github.com>

commit f43ce41f0dacde9cccebe5f6942b167725389e42
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Wed Nov 13 11:30:31 2019 -0800

    Update README

commit afb8d3b7fbe03feb7a79ca069c1c246787a51060
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Nov 12 16:54:51 2019 -0800

    [change] Configure hydration using AppRegistry.runApplication()

    Client-side hydration of server-rendered HTML now requires that `hydrate` is explicitly set in the `appParams` passed to `AppRegistry.runApplication()`.

    Fix #1374

commit e4ed0fd3c863e6c61aa3ea8afeff79b7fa74b461
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Nov 12 15:36:10 2019 -0800

    [fix] ScrollResponder componentWillMount -> UNSAFE_componentWillMount

commit 297cda7901c2ff5098ae273611f4d6a33c39dbe2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 15 09:32:13 2019 -0700

    Rewrite interactive documentation

    Consolidate all docs within the latest storybook

    Ref #1172

commit 8cf00a5c5abd60ff2f03b50c3ffa855a4a2df036
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 8 13:02:16 2019 -0700

    Update inline-style-prefixer and misc deps

commit 3fd90b925211de48ed5b16daae5576fd18f31878
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 8 12:50:44 2019 -0700

    Update flow to 0.109

    Add $FlowFixMe to vendor code that produces flow errors

commit 9e7c37128e3b8f942679322f08aee1aeb19ffd35
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 8 11:14:17 2019 -0700

    Update 'benchmarks' dependencies

commit 41e6dca1e35074158f5ca9baf41d1ae98f5e903e
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 8 11:01:12 2019 -0700

    Update linter and formatter tools

commit 02a3640f959c84b7314a44486abd944ae6c3c795
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Oct 8 10:58:37 2019 -0700

    Update test tools

commit 290a2a76cead587d8d079402fcbc5724ea0dabac
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 7 15:28:09 2019 -0700

    Update babel build tools

commit 1b3c31ff6acc27183547b4cf0e37214895f5f219
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 7 14:26:16 2019 -0700

    Run prettier across codebase

    Close #1444

commit d4b9f35d3379e3b92b7dfe279d1a9fa58dacecb6
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 7 14:20:49 2019 -0700

    [change] createElement -> unstable_createElement

    Rename the 'createElement' export to reflect its unstable status.

    Fix #1385

commit 3ac0b96498758f97460bcd1de997fc651dd482ab
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Oct 7 14:01:05 2019 -0700

    [change] Update Touchable components

    Reference RN 0.60 implementations with web-specific fixes

    Ref #1172
    Fix #1105

commit 33f1c3566c7c2f78695c4c9871c01f74ed73c6c7
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Oct 4 11:35:53 2019 -0700

    [add] forwardedRef prop to View and Text

    Ref #1172

commit d57fb6eb01f5226c01e034bd1ce535b5a7204b33
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jul 23 16:46:24 2019 -0700

    [change] accessibilityRelationship and accessibilityState props

    Adds the accessibilityState and accessibilityRelationship object props that map
    to ARIA props.

    Removes the accessibilityStates array prop that is not compatible with web
    accessibility services.

    Ref #1172

commit ae94551ac54b6f098dabf2084564f25aa1ca5b02
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Thu Jul 18 15:30:00 2019 -0700

    [change] Remove accessibilityTraits and accessibilityComponentType props

    These props are deprecated in React Native and replaced by accessibilityRole

    Ref #1352

commit 1af0218d26d42d7f00068c72b26070ce4d9d3c99
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Tue Jul 2 14:54:05 2019 -0700

    Remove unused 'shadowSpread' prop type

    Close #1357

commit d554d83727261763fc33b50e1c409f2573fd1724
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jul 1 17:29:19 2019 -0700

    [change] Text uses createContext

    Replaces the legacy 'contextTypes' API.
    Removes 'enzyme' from related tests. Back to recording DOM snapshots.

    Close #1248
    Ref #1172

commit 25dd43e960df17d0853fe3b5c188045bfff4863a
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jul 1 16:24:14 2019 -0700

    [change] Update vendor code

    * FlatList
    * SectionList
    * VirtualizedList
    * VirtualizedSectionList

commit c4a2a6d4a3a3e0bd8378e5e18381e859910c0203
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jul 1 14:41:18 2019 -0700

    Update to flow-bin@0.98

commit ad674e4b4f71613422a95b60b3edb2c54028336f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Mon Jul 1 14:40:25 2019 -0700

    [add] Platform.isTesting

commit 304e8a83ab6ea3d9aca806890b3bdbfb7db30db8
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 14:37:04 2019 -0700

    [change] Update Animated

    react-native@v0.60.0-rc.3

    Fix #1378
    Fix #1325
    Close #1306

commit ac71506610baf14936af7e48b90270bb1bb16cd8
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:30:11 2019 -0700

    [change] Remove WebView

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 847870e4b34033f184f9a86ed1b408cb9d2c6af9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:29:05 2019 -0700

    [change] Remove ViewPagerAndroid

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 845c2726b292e0521b17963e2d9e87b1e1337bc3
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:28:13 2019 -0700

    [change] Remove VibrationIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 9d76d5889164bb82a3cde903c0bf44b277bae40f
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:27:28 2019 -0700

    [change] Remove ToolbarAndroid

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit f54c957199b575ab25821d399617a3d9b893bdc9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:25:56 2019 -0700

    [change] Remove SwipeableListView

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 425102c16e57bef54a3fdf8e6ba5ddf427db0f14
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:20:41 2019 -0700

    [change] Remove StatusBarIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 0c350d2678fba6bb5d60d9275b3dc85a8dab5550
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:19:46 2019 -0700

    [change] Remove SnapshotViewIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit eaa24ae91d61bab4722e7a68177026a6bd1b2a03
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:17:25 2019 -0700

    [change] Remove Slider

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 24801cb5da4a10d67aca0bf43633080fc9a1f6db
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:16:03 2019 -0700

    [change] Remove SegmentedControlIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 41e4f05eb06cad5aaac18cac1a43d50e922e21f2
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:14:33 2019 -0700

    [change] Remove PushNotificationIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 72ede16c9c369f8347ddc8571c4a348f3638f608
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:13:28 2019 -0700

    [change] Remove ProgressBarAndroid and ProgressViewIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 7ec9b075a131b99e9af71795d78e7204a09f8d06
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:11:43 2019 -0700

    [change] Remove PickerIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 89bc074327d6831af7bf7d23aaa4713d6998fe39
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:08:58 2019 -0700

    [change] Remove NetInfo

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit add0e0cb7e419467db245adddcd1a2d7e15aa457
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 11:01:48 2019 -0700

    [change] Remove NavigatorIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 8900cea5760f52909e5de3b72ead1b2909e23f53
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:59:55 2019 -0700

    [change] Remove MaskedViewIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 6c682bbb92920555b3cd7c25f5213d45cb34edc7
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:59:04 2019 -0700

    [change] Remove ListView

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit ece4e95d4d7e77acf1635acec3885b3d7b387927
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:57:13 2019 -0700

    [change] Remove ImageStore

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit f9eadc10d2ebe5b26a5cadea8eec7f54a058edcd
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:49:43 2019 -0700

    [change] Remove ImagePickerIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit cc5a5d7d27a3997f1b79b57a1f729129afad0899
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:48:33 2019 -0700

    [change] Remove ImageEditor

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 800f24466e87e16936b19f212af57406daf2cab7
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:37:28 2019 -0700

    [change] Remove DatePickerAndroid and DatePickerIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 5a12430b509a44e57978d65beb85bc4c985410d9
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:30:32 2019 -0700

    [change] Remove CameraRoll

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit fbdbfa5484119296910a5b05af72406bf1e3f0c0
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:09:05 2019 -0700

    [change] Remove AsyncStorage

    Ref #1352
    Ref https://github.com/react-native-community/async-storage/issues/52
    Ref https://github.com/facebook/react-native/issues/23313

commit 920211b99852fc3717fc6f7e050ba273f1e2d26d
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:03:58 2019 -0700

    [change] Remove AlertIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit c0c7a18aca6021b1ad5b2fd1a710ff74d4e9cc75
Author: Nicolas Gallagher <nicolasgallagher@gmail.com>
Date:   Fri Jun 28 10:02:00 2019 -0700

    [change] Remove ActionSheetIOS

    Ref #1352
    Ref https://github.com/facebook/react-native/issues/23313

commit 250ee3c234196fdddf6e5189c572a292566c3cb2
Author: Marnus Weststrate <marnusw@gmail.com>
Date:   Tue Sep 17 07:33:24 2019 +0100

    [fix] Only inject ResponderEventPlugin client-side

    Close #1434
    Fix #1433

commit 6ce88e6db05e30b5c5c5453d01d0f99d3733ad3c
Author: John Rees <johnrees@users.noreply.github.com>
Date:   Thu Sep 26 11:59:18 2019 +0100

    Fix docs link to create-react-app

    Close #1440
@rectified95
Copy link
Collaborator

@rectified95 rectified95 commented Dec 16, 2020

@cpojer I've submitted a PR removing DatePicker - #30576

@cpojer
Copy link
Contributor Author

@cpojer cpojer commented Dec 16, 2020

Hello everyone,

this issue has been open for a long time. The community rallied to help with the deprecation and extractions early on, but since then it was Facebook's responsibility to remove the remaining modules from core. I kept this issue open to track the progress we are making at Facebook but people are still excited to help out and ping this thread asking for how to help. I'll close this issue now and consider most of the first phase of the Lean Core project concluded. There is still some leftover code in the React Native repo which we'll remove in the future. Thank you all for your help to make React Native smaller and leaner!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet