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

Native Animated - Support events using RCT{Direct|Bubbling}EventBlock on iOS #15611

Closed

Conversation

janicduplessis
Copy link
Contributor

@janicduplessis janicduplessis commented Aug 23, 2017

When calling a prop of type RCTDirectEventBlock or RCTBubblingEventBlock it uses a completely different code path than events using [RCTEventDispatcher sendEvent:] and those were not dispatched to the RCTEventDispatcherListeners. We also do some event name normalization which caused issues between the JS and native event names. To fix that I simply remove the parts we normalize from the event key.

Changelog:

[iOS] [Fixed] - Support events using RCT{Direct|Bubbling}EventBlock

Test plan:

Added a Slider (it used RCTBubblingEventBlock for it's onValueChange event) that can control a native animated value in RNTester to reproduce the bug and made sure this diff fixes it.

@facebook-github-bot facebook-github-bot added GH Review: review-needed CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. labels Aug 23, 2017
@pull-bot
Copy link

pull-bot commented Aug 23, 2017

@facebook-github-bot label Core Team

Attention: @janicduplessis, @shergin

Generated by 🚫 dangerJS

Copy link
Contributor

@shergin shergin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like two great PR mixed up here. 😄

- (instancetype)initWithName:(NSString *)name viewTag:(NSNumber *)viewTag arguments:(NSArray *)arguments
{
self = [super init];
if (self) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One line, please.

@@ -37,6 +37,50 @@
);
}

/**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Separate file, please.

@janicduplessis
Copy link
Contributor Author

@shergin Updated

@nerdmed
Copy link

nerdmed commented Aug 23, 2017

@janicduplessis this is awesome! Looking forward for this!

@shergin
Copy link
Contributor

shergin commented Aug 23, 2017

@janicduplessis What does RCTInputEvent and Animated have in common?

@janicduplessis
Copy link
Contributor Author

@shergin Ok I understand why you are confused :)

Not sure why it is called INPUT event because afaik it has nothing to do with inputs, I just kept the current naming.

So when using RCTDirectEventBlock to create a view manager prop it ends up here https://github.com/facebook/react-native/blob/master/React/Views/RCTComponentData.m#L242 then createEventSetter will create a block that calls into [sendInputEventWithName:] (https://github.com/facebook/react-native/blob/master/React/Views/RCTComponentData.m#L121) to dispatch the event to JS. We want to call the listeners there too like we do in [sendEvent:] so native animated can do its thing.

@janicduplessis
Copy link
Contributor Author

And the other part of the PR is to deal with the event name normalization that is done in sendInputEventWithName (https://github.com/facebook/react-native/blob/master/React/Base/RCTEventDispatcher.m#L91)

@shergin
Copy link
Contributor

shergin commented Aug 24, 2017

OMG, now I know how RCTDirectEvent works. Almost. Thanks!
I will try to figure it out. We have to split this anyways though.

@janicduplessis
Copy link
Contributor Author

@shergin 👍 Let me know if you need more context on anything else.

@shergin
Copy link
Contributor

shergin commented Aug 25, 2017

@janicduplessis Could you please help me figure out why this was named sendInputEvent? Is it just because it was used for TextInput only?
Should we generalize this approach? And rename it?

@janicduplessis
Copy link
Contributor Author

@shergin From doing a quick search looks like it is only used in createEventSetter and sendTextEventWithType. It has been deprecated for a while (

* Deprecated, do not use.
) so changing / removing it should be fine.

There is also sendEvent which takes a RCTEvent and is similar to sendInputEvent but more complex, It uses an event queue and does optional coalescing. Ideally we'd always use sendEvent but I don't know if the scheduling would end up being exactly the same.

@shergin
Copy link
Contributor

shergin commented Aug 25, 2017

@janicduplessis I just want to know that we know what we are doing. And do the right things. 😄
I would love to adopt sendEvent... everywhere!

@janicduplessis
Copy link
Contributor Author

@shergin Ok, I had a better look at that code and it should be possible to switch to using only sendEvent. There's a bit more overhead but it should not make a noticeable difference performance wise. Some of our more frequent events like onScroll already use sendEvent anyway.

I can put up a PR tomorrow to remove sendInputEvent and move everything to sendEvent.

@shergin
Copy link
Contributor

shergin commented Aug 25, 2017

@janicduplessis Great! Do you mean remove sendInputEvent from Animated of remove completely?

@janicduplessis
Copy link
Contributor Author

I think we can get rid of it completely and always use sendEvent

@janicduplessis
Copy link
Contributor Author

@shergin Removed sendInputEvent and created a new RCTEvent class that can be used with sendEvent and that replicates the behaviour of sendInputEvent. Named it RCTComponentEvent since sendInputEvent was used to dispatch events to components (including but not limited to text input events). That name should make it a lot clearer what it is used for.

Also simplified dealing with non-coalescable events by automatically generating a coalescingKey is canCoalesce returns NO. Also made a few coalescing related methods/props optional so they can be omitted if canCoalesce is false. Otherwise every RCTEvent class would have to implement some unique key generator even if the event is never coalescable.

@janicduplessis
Copy link
Contributor Author

Also this should probably be split in 2 PRs, just wanted to keep it here for now but once we're happy with a solution I'll make a new PR for the removal of sendInputEvent.

@nerdmed
Copy link

nerdmed commented Sep 29, 2017

@janicduplessis @shergin any news here? What is needed to proceed with this pr?

static NSNumber *RCTGetEventID(id<RCTEvent> event)
{
return @(
event.viewTag.intValue |
(((uint64_t)event.eventName.hash & 0xFFFF) << 32) |
(((uint64_t)event.coalescingKey) << 48)
(((uint64_t)([event canCoalesce] ? event.coalescingKey : RCTNonCoalescableEventKey++)) << 48)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We access optional canCoalesce and coalescingKey here.
So, we have two options here:

  1. Do responseToSelector check here.
  2. Make that props required for all implementations.

I strongly prefer 2 because we should maintain this function as perfromant as possible.

Right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, no, I see, I am wrong.

@shergin
Copy link
Contributor

shergin commented Sep 30, 2017

@janicduplessis Okay, we will be back to this PR after landing of #15894. Right?

@janicduplessis
Copy link
Contributor Author

janicduplessis commented Sep 30, 2017

@shergin Yep, then I will rebase this PR on top of the event improvements

@facebook-github-bot
Copy link
Contributor

@janicduplessis I tried to find reviewers for this pull request and wanted to ping them to take another look. However, based on the blame information for the files in this pull request I couldn't find any reviewers. This sometimes happens when the files in the pull request are new or don't exist on master anymore. Is this pull request still relevant? If yes could you please rebase? In case you know who has context on this code feel free to mention them in a comment (one person is fine). Thanks for reading and hope you will continue contributing to the project.

@nerdmed
Copy link

nerdmed commented Feb 2, 2018

@janicduplessis thanks a lot for your previous effort on this PR. It would enable really nice native animations with RN. This become stale for more a couple of month now. Any change to get this going?

@pull-bot
Copy link

pull-bot commented Apr 22, 2019

Messages
📖 📋 Missing Summary - Can you add a Summary? To do so, add a "## Summary" section to your PR description. This is a good place to explain the motivation for making this change.

Generated by 🚫 dangerJS against 5967a1d

@janicduplessis
Copy link
Contributor Author

@shergin Rebased and tested it still works :)

@react-native-bot react-native-bot added Includes Changelog Bug and removed Missing Changelog This PR appears to be missing a changelog, or they are incorrectly formatted. labels Apr 22, 2019
@cpojer
Copy link
Contributor

cpojer commented Jun 4, 2019

What's the status of this PR?

@pull-bot
Copy link

Messages
📖 📋 Missing Summary - Can you add a Summary? To do so, add a "## Summary" section to your PR description. This is a good place to explain the motivation for making this change.

Generated by 🚫 dangerJS against 4fe14cf

@janicduplessis
Copy link
Contributor Author

@cpojer @shergin Rebased this and made sure the fix is still needed and works.

Copy link
Contributor

@cpojer cpojer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's ship it.

Copy link
Contributor

@facebook-github-bot facebook-github-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cpojer is landing this pull request. If you are a Facebook employee, you can view this diff on Phabricator.

@react-native-bot
Copy link
Collaborator

This pull request was successfully merged by @janicduplessis in 083f835.

When will my fix make it into a release? | Upcoming Releases

@react-native-bot react-native-bot added the Merged This PR has been merged. label Jun 19, 2019
@cpojer
Copy link
Contributor

cpojer commented Jun 19, 2019

Had to revert this because of:

react-native/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m:35:11: error: no previous prototype for function 'RCTNormalizeAnimatedEventName' [-Werror,-Wmissing-prototypes]
NSString *RCTNormalizeAnimatedEventName(NSString *eventName)
          ^

Could you send it again with this fixed?

@janicduplessis
Copy link
Contributor Author

@cpojer Fixed #25317

@janicduplessis janicduplessis deleted the native-events-fix branch June 19, 2019 18:13
facebook-github-bot pushed a commit that referenced this pull request Jun 21, 2019
… on iOS (#25317)

Summary:
Reland #15611 and added the gcc warning that was different from fb internal config. The original PR missed the static keyword for the `RCTNormalizeAnimatedEventName` function which triggered the gcc warning internally but not with the OSS xcode config.

When calling a prop of type `RCTDirectEventBlock` or `RCTBubblingEventBlock` it uses a completely different code path than events using `[RCTEventDispatcher sendEvent:]` and those were not dispatched to the `RCTEventDispatcherListener`s. We also do some event name normalization which caused issues between the JS and native event names. To fix that I simply remove the parts we normalize from the event key.

## Changelog:

[iOS] [Fixed] - Support events using RCT{Direct|Bubbling}EventBlock
Pull Request resolved: #25317

Test Plan: Added a Slider (it uses RCTBubblingEventBlock for its onValueChange event) that can control a native animated value in RNTester to reproduce the bug and made sure this diff fixes it.

Differential Revision: D15938856

Pulled By: cpojer

fbshipit-source-id: 7e7a3459e2a2e8b1254a2f1ec8153a159ea73eed
facebook-github-bot pushed a commit that referenced this pull request Jul 30, 2019
Summary:
This sync includes the following changes:
- **[55bc393f7](https://github.com/facebook/react/^Cmmit/55bc393f7 )**: [Flare] Ensure we check for bad polyfill when creating responders (#16243) //<Dominic Gannaway>//
- **[47656bf2a](https://github.com/facebook/react/^Cmmit/47656bf2a )**: [Flare] Remove longpress from press responder (#16242) //<Nicolas Gallagher>//
- **[9914a1919](https://github.com/facebook/react/^Cmmit/9914a1919 )**: [Fresh] Transfer refs when remounting (#16241) //<Dan Abramov>//
- **[75ab53b9e](https://github.com/facebook/react/^Cmmit/75ab53b9e )**: [scheduler] Yield many times per frame, no rAF (#16214) //<Andrew Clark>//
- **[0d7141dd4](https://github.com/facebook/react/^Cmmit/0d7141dd4 )**: [Flare] Fix SSR issue with serializing responders prop (#16227) //<Dominic Gannaway>//
- **[ed57bf8ed](https://github.com/facebook/react/^Cmmit/ed57bf8ed )**: [Bugfix] Check tag before calling hook effects (#16215) //<Andrew Clark>//
- **[858c84206](https://github.com/facebook/react/^Cmmit/858c84206 )**: Don't hyphenate custom CSS properties for ReactDOMServer (#16167) //<Belmin Bedak>//
- **[d412eec83](https://github.com/facebook/react/^Cmmit/d412eec83 )**: [act] flush work correctly without a mocked scheduler (#16223) //<Sunil Pai>//
- **[b43785e15](https://github.com/facebook/react/^Cmmit/b43785e15 )**: Update use-subscription README (#16216) //<Sophie Alpert>//
- **[c0830a0e6](https://github.com/facebook/react/^Cmmit/c0830a0e6 )**: [Scheduler] Test browser implementation details (#16198) //<Andrew Clark>//
- **[857deb2ed](https://github.com/facebook/react/^Cmmit/857deb2ed )**: Warn when Using DefaultProps on Function Components (#16210) //<lunaruan>//
- **[e0472709c](https://github.com/facebook/react/^Cmmit/e0472709c )**: [Flare] Adds Keyboard event responder (#16204) //<Dominic Gannaway>//
- **[5b08f7b43](https://github.com/facebook/react/^Cmmit/5b08f7b43 )**: [Flare] Adds useListener implementation to ReactDebugHooks (#16205) //<Dominic Gannaway>//
- **[ed72f4025](https://github.com/facebook/react/^Cmmit/ed72f4025 )**: [Flare] Remove references to EventComponent (#16206) //<Dominic Gannaway>//
- **[121bfb03b](https://github.com/facebook/react/^Cmmit/121bfb03b )**: update legacy context warning message (#16196) //<Sunil Pai>//
- **[9ae5e38f1](https://github.com/facebook/react/^Cmmit/9ae5e38f1 )**: Add guard to ensure Profiler onRender prop is function before calling (#16197) //<Brian Vaughn>//
- **[144dba1a1](https://github.com/facebook/react/^Cmmit/144dba1a1 )**: Fix suspenseCallback type warning, add a test (#16194) //<Benoit Girard>//
- **[7ad221126](https://github.com/facebook/react/^Cmmit/7ad221126 )**: [Flare] Ensure Flare components are no-ops for TestRenderer (#16192) //<Dominic Gannaway>//
- **[06cc99699](https://github.com/facebook/react/^Cmmit/06cc99699 )**: Edit Suspense Priority Warning Message (#16186) //<lunaruan>//
- **[42b75ab00](https://github.com/facebook/react/^Cmmit/42b75ab00 )**: Add suspenseCallback feature for runtime tracing of loading states (#16134) //<Benoit Girard>//
- **[c73e1f236](https://github.com/facebook/react/^Cmmit/c73e1f236 )**: flush work on exiting outermost act(), with nested act()s from different renderers (#16181) //<Sunil Pai>//
- **[509889119](https://github.com/facebook/react/^Cmmit/509889119 )**: [Flare] Redesign core event system (#16163) //<Dominic Gannaway>//
- **[19354db51](https://github.com/facebook/react/^Cmmit/19354db51 )**: [Scheduler] Add names to inline functions (#16180) //<Andrew Clark>//
- **[bff7abf6b](https://github.com/facebook/react/^Cmmit/bff7abf6b )**: [Scheduler][Bugfix] Multiple rAFs in same frame (#16184) //<Andrew Clark>//
- **[afb599168](https://github.com/facebook/react/^Cmmit/afb599168 )**: Enable profiler+tracing for test renderer (#16178) //<Brian Vaughn>//
- **[2237efcef](https://github.com/facebook/react/^Cmmit/2237efcef )**: [Fresh] Track unrecoverable errors (#16183) //<Dan Abramov>//
- **[bbd21066e](https://github.com/facebook/react/^Cmmit/bbd21066e )**: [Flare] Press: fix keyboard interactions (#16179) //<Nicolas Gallagher>//
- **[03944bfb0](https://github.com/facebook/react/^Cmmit/03944bfb0 )**: Update Suspense Priority Warning to Include Component that Triggered Update (#16030) //<lunaruan>//
- **[3f2cafe8b](https://github.com/facebook/react/^Cmmit/3f2cafe8b )**: [WIP][Scheduler] Use rIC to post first callback (#16166) //<Andrew Clark>//
- **[2bd88e38a](https://github.com/facebook/react/^Cmmit/2bd88e38a )**: [Scheduler] Bugfix: Cancelling a continuation (#16151) //<Andrew Clark>//
- **[783b8f4ae](https://github.com/facebook/react/^Cmmit/783b8f4ae )**: [Flare] Ensure mouse events can use target to validate press (#16172) //<Dominic Gannaway>//
- **[2c4d61e10](https://github.com/facebook/react/^Cmmit/2c4d61e10 )**: Adds experimental fundamental interface (#16049) //<Dominic Gannaway>//
- **[b4178af81](https://github.com/facebook/react/^Cmmit/b4178af81 )**: clean up nextEffect pointers (#16115) //<Paul Shen>//
- **[997154bcc](https://github.com/facebook/react/^Cmmit/997154bcc )**: [Flare] Add FocusWithin responder (#16152) //<Nicolas Gallagher>//
- **[65b80fdd9](https://github.com/facebook/react/^Cmmit/65b80fdd9 )**: [Flare] Add Input event responder surface (#16148) //<Dominic Gannaway>//
- **[ce883a19d](https://github.com/facebook/react/^Cmmit/ce883a19d )**: useSubscription hook (#15022) //<Brian Vaughn>//
- **[c45c2c3a2](https://github.com/facebook/react/^Cmmit/c45c2c3a2 )**: Move ReactFiberErrorDialog RN fork into RN itself (#16141) //<Moti Zilberman>//
- **[d9b4c55d5](https://github.com/facebook/react/^Cmmit/d9b4c55d5 )**: unify deprecated/unsafe lifecycle warnings, pass tests (#16103) //<Sunil Pai>//
- **[424099da6](https://github.com/facebook/react/^Cmmit/424099da6 )**: Inject getCurrentFiber() function to DevTools (#16133) //<Brian Vaughn>//
- **[9f395904c](https://github.com/facebook/react/^Cmmit/9f395904c )**: Inject ReactDebugCurrentFrame into DevTools so it can append component stacks to warnings in DEV mode (#16127) //<Brian Vaughn>//
- **[fcff9c57b](https://github.com/facebook/react/^Cmmit/fcff9c57b )**: Add tail="hidden" option to SuspenseList (#16024) //<Sebastian Markbåge>//
- **[8d413bf2c](https://github.com/facebook/react/^Cmmit/8d413bf2c )**: Remove React.error and React.warn (#16126) //<Brian Vaughn>//
- **[ca4d78f9b](https://github.com/facebook/react/^Cmmit/ca4d78f9b )**: [Flare] Press: fix middle-click handling (#16114) //<Nicolas Gallagher>//
- **[3f1dee09a](https://github.com/facebook/react/^Cmmit/3f1dee09a )**: expose act() sigil correctly for umd builds (#16110) //<Sunil Pai>//
- **[b7669044d](https://github.com/facebook/react/^Cmmit/b7669044d )**: Use Map instead of object as map in ReactNativeComponentTree (#16107) //<Sebastian Markbåge>//
- **[d2d9b1f70](https://github.com/facebook/react/^Cmmit/d2d9b1f70 )**: [Scheduler] Support inferring priority from stack (#16105) //<Andrew Clark>//
- **[48f659447](https://github.com/facebook/react/^Cmmit/48f659447 )**: Add warning when single item or nested arrays are used with SuspenseList (#16094) //<Sebastian Markbåge>//
- **[2073a7144](https://github.com/facebook/react/^Cmmit/2073a7144 )**: [Flare] Press includes button type (#16100) //<Nicolas Gallagher>//
- **[23b8a2534](https://github.com/facebook/react/^Cmmit/23b8a2534 )**: [Flare] Remove responder flags to simplify logic (#16084) //<Dominic Gannaway>//
- **[8533c0a16](https://github.com/facebook/react/^Cmmit/8533c0a16 )**: [Fabric] Add dispatchCommand to React Native renderers (#16085) //<Eli White>//
- **[2253bc81d](https://github.com/facebook/react/^Cmmit/2253bc81d )**: [Flare] Switch from currentTarget model to responderTarget model (#16082) //<Dominic Gannaway>//
- **[67e3f3fb6](https://github.com/facebook/react/^Cmmit/67e3f3fb6 )**: [Flare] Revise responder event types (#16081) //<Dominic Gannaway>//
- **[2a0f6390e](https://github.com/facebook/react/^Cmmit/2a0f6390e )**: Fix typos (#16076) //<Min ho Kim>//
- **[aa519c17c](https://github.com/facebook/react/^Cmmit/aa519c17c )**: [Flare] Add currentTarget and unify RN and DOM codepaths (#16066) //<Dominic Gannaway>//
- **[35d2b3bb5](https://github.com/facebook/react/^Cmmit/35d2b3bb5 )**: fix spelling error: resoltion ->  resolution (#16055) //<fnll>//
- **[bd72b0493](https://github.com/facebook/react/^Cmmit/bd72b0493 )**: [Flare] Clear pressStart timeout on pointercancel (#16067) //<Vincent Riemer>//
- **[c40075a72](https://github.com/facebook/react/^Cmmit/c40075a72 )**: [Flare] Remove capture phase Flare events (#16054) //<Dominic Gannaway>//
- **[786186c69](https://github.com/facebook/react/^Cmmit/786186c69 )**: [Flare] createInitialState -> getInitialState (#16051) //<Dominic Gannaway>//
- **[c64f40d71](https://github.com/facebook/react/^Cmmit/c64f40d71 )**: [Flare] Remove dead event target code (#16063) //<Dominic Gannaway>//
- **[e6bfa327d](https://github.com/facebook/react/^Cmmit/e6bfa327d )**: [Flare] Cleanup ReactFiberEvents-test (#16047) //<Dominic Gannaway>//
- **[b365ee281](https://github.com/facebook/react/^Cmmit/b365ee281 )**: [Fire] Remove unused React fire fork (#16046) //<Dominic Gannaway>//
- **[b8f91e664](https://github.com/facebook/react/^Cmmit/b8f91e664 )**: [fail] reset IsThisRendererActing correctly (#16042) //<Sunil Pai>//
- **[bd846459d](https://github.com/facebook/react/^Cmmit/bd846459d )**: [fail] Only warn on unacted effects for strict / non sync modes (#16041) //<Sunil Pai>//
- **[6b946ad9d](https://github.com/facebook/react/^Cmmit/6b946ad9d )**: [Flare] Add more functionality to Scroll event resonder (#16036) //<Dominic Gannaway>//
- **[a457e02ae](https://github.com/facebook/react/^Cmmit/a457e02ae )**: allow nested `act()`s from different renderers (#16039) //<Sunil Pai>//
- **[a865e4a64](https://github.com/facebook/react/^Cmmit/a865e4a64 )**: Clone a custom hook node before use (#16019) //<Anton Korzunov>//
- **[6cf2234a5](https://github.com/facebook/react/^Cmmit/6cf2234a5 )**: [Flare] Do not block mouse presses on scroll (#16033) //<Dominic Gannaway>//
- **[5cb8f6f34](https://github.com/facebook/react/^Cmmit/5cb8f6f34 )**: Add tail="collapsed" option to SuspenseList (#16007) //<Sebastian Markbåge>//
- **[46bd11ac3](https://github.com/facebook/react/^Cmmit/46bd11ac3 )**: Flush sync bug (#16027) //<lunaruan>//
- **[933c664ad](https://github.com/facebook/react/^Cmmit/933c664ad )**: SuspenseList Optimizations (#16005) //<Sebastian Markbåge>//
- **[fbbbea16e](https://github.com/facebook/react/^Cmmit/fbbbea16e )**: fix word async -> concurrent (#15844) //<Heaven>//
- **[eb2ace128](https://github.com/facebook/react/^Cmmit/eb2ace128 )**: [Flare] Bring Flare support to React Native Fabric (#15887) //<Dominic Gannaway>//
- **[9b0bd4355](https://github.com/facebook/react/^Cmmit/9b0bd4355 )**: [Flare] Re-label Flare flag (#16014) //<Dominic Gannaway>//
- **[8b88ac259](https://github.com/facebook/react/^Cmmit/8b88ac259 )**: [Flare] Remove event targets including TouchHitTarget (#16011) //<Dominic Gannaway>//
- **[f11540926](https://github.com/facebook/react/^Cmmit/f11540926 )**: Handle changes at module boundaries (#16002) //<Dan Abramov>//
- **[915dfe697](https://github.com/facebook/react/^Cmmit/915dfe697 )**: Slightly improve performance of hydration. (#15998) //<Benedikt Meurer>//
- **[824e9bec7](https://github.com/facebook/react/^Cmmit/824e9bec7 )**: [Flare] Fix issues with touch + pointer interactions (#15997) //<Dominic Gannaway>//
- **[dd93357aa](https://github.com/facebook/react/^Cmmit/dd93357aa )**: [Flare] Move click handling back into target phase (#15993) //<Dominic Gannaway>//
- **[4d307de45](https://github.com/facebook/react/^Cmmit/4d307de45 )**: Prefix mock Scheduler APIs with _unstable (#15999) //<Andrew Clark>//
- **[9b55bcfc6](https://github.com/facebook/react/^Cmmit/9b55bcfc6 )**: [Flare] Add Hooks to event modules (#15953) //<Brandon Dail>//
- **[20da1dae4](https://github.com/facebook/react/^Cmmit/20da1dae4 )**: Fix error logging in getDerivedStateFromProps (#15797) //<Ricky>//
- **[6088a201e](https://github.com/facebook/react/^Cmmit/6088a201e )**: [Flare] Fix Press scroll cancellation handling (#15983) //<Dominic Gannaway>//
- **[fd601fb21](https://github.com/facebook/react/^Cmmit/fd601fb21 )**: [Flare] Move all event responders to dom directory (#15981) //<Dominic Gannaway>//
- **[827cbc4d0](https://github.com/facebook/react/^Cmmit/827cbc4d0 )**: Rename StatelessComponent to FunctionComponent in react-is/README.md (#15963) //<Veniamin Krol>//
- **[d48db594e](https://github.com/facebook/react/^Cmmit/d48db594e )**: eslint-plugin-react-hooks@1.6.1 //<Dan Abramov>//
- **[7439b48cf](https://github.com/facebook/react/^Cmmit/7439b48cf )**: Add explicit support for ESLint 6.0.0 (#15974) //<Thomas Broyer>//
- **[fce15f14d](https://github.com/facebook/react/^Cmmit/fce15f14d )**: don't fire missing act() warnings for react-art (#15975) //<Sunil Pai>//
- **[20f354696](https://github.com/facebook/react/^Cmmit/20f354696 )**: [Flare] Ensure Press event hook does not execute side-effects (#15976) //<Dominic Gannaway>//
- **[d420d2ccb](https://github.com/facebook/react/^Cmmit/d420d2ccb )**: [Fresh] Retry failed roots on refresh (#15966) //<Dan Abramov>//
- **[04b77c630](https://github.com/facebook/react/^Cmmit/04b77c630 )**: followup to #15763, fix failing test in ReactDOMTracing-test (#15972) //<Sunil Pai>//
- **[e1c5e8720](https://github.com/facebook/react/^Cmmit/e1c5e8720 )**: warn if passive effects get queued outside of an act() call. (#15763) //<Sunil Pai>//
- **[39b97e8eb](https://github.com/facebook/react/^Cmmit/39b97e8eb )**: Report refreshed families to the caller (#15957) //<Dan Abramov>//
- **[d271df5c9](https://github.com/facebook/react/^Cmmit/d271df5c9 )**: Use function expression for custom Hook signature argument (#15956) //<Dan Abramov>//
- **[4189f712c](https://github.com/facebook/react/^Cmmit/4189f712c )**: [Scheduler] Increase max frame length to 300 //<Andrew Clark>//
- **[595c9414b](https://github.com/facebook/react/^Cmmit/595c9414b )**: [Scheduler] Fix navigator.isInputPending call //<Andrew Clark>//
- **[e7fcfe104](https://github.com/facebook/react/^Cmmit/e7fcfe104 )**: [scheduler] Put isPendingInput behind a flag (#15962) //<Andrew Clark>//
- **[6568a7993](https://github.com/facebook/react/^Cmmit/6568a7993 )**: [Scheduler] requestPaint (#15960) //<Andrew Clark>//
- **[8d4ddd33a](https://github.com/facebook/react/^Cmmit/8d4ddd33a )**: [Scheduler] Yield less if there's no pending input (#15959) //<Andrew Clark>//
- **[d77d12510](https://github.com/facebook/react/^Cmmit/d77d12510 )**: Expire rendering the tail of SuspenseList after a timeout (#15946) //<Sebastian Markbåge>//
- **[dc298fdf9](https://github.com/facebook/react/^Cmmit/dc298fdf9 )**: [Flare] Refinements to useEvent hook (#15955) //<Dominic Gannaway>//
- **[696609d49](https://github.com/facebook/react/^Cmmit/696609d49 )**: [Fiber] Clear down dependencies during detachFiber (#15947) //<Dominic Gannaway>//
- **[a5ed2f98f](https://github.com/facebook/react/^Cmmit/a5ed2f98f )**: [Flare] Guard against stateNode being null (#15952) //<Dominic Gannaway>//
- **[34ce57ae7](https://github.com/facebook/react/^Cmmit/34ce57ae7 )**: [Flare] Refine flow type annotations (#15950) //<Dominic Gannaway>//
- **[4f92fbce5](https://github.com/facebook/react/^Cmmit/4f92fbce5 )**: [Flare] Move createEvent back to React object (#15943) //<Dominic Gannaway>//
- **[175111de7](https://github.com/facebook/react/^Cmmit/175111de7 )**: Lazily initialize dependencies object (#15944) //<Andrew Clark>//
- **[720db4cbe](https://github.com/facebook/react/^Cmmit/720db4cbe )**: [Flare] Add useEvent hook implementation (#15927) //<Dominic Gannaway>//
- **[6ff4c9de1](https://github.com/facebook/react/^Cmmit/6ff4c9de1 )**: [Flare] Press: fix stale deactivation region state (#15931) //<Nicolas Gallagher>//
- **[7a4c3e3b7](https://github.com/facebook/react/^Cmmit/7a4c3e3b7 )**: Make global names more obscure (#15941) //<Dan Abramov>//
- **[270dc2e4d](https://github.com/facebook/react/^Cmmit/270dc2e4d )**: Add forwards and backwards options to SuspenseList (#15918) //<Sebastian Markbåge>//
- **[5368f7316](https://github.com/facebook/react/^Cmmit/5368f7316 )**: [Flare] Fix keyboard keyup regression (#15938) //<Dominic Gannaway>//
- **[3d0af2aea](https://github.com/facebook/react/^Cmmit/3d0af2aea )**: Don't consider require-like calls to be likely HOCs (#15940) //<Dan Abramov>//
- **[d4f384d25](https://github.com/facebook/react/^Cmmit/d4f384d25 )**: [Fresh] Throw in prod and change annotation (#15939) //<Dan Abramov>//
- **[ff91bfa58](https://github.com/facebook/react/^Cmmit/ff91bfa58 )**: [act] reset scope depth on synchronous errors (#15937) //<Sunil Pai>//
- **[e61c9e0a2](https://github.com/facebook/react/^Cmmit/e61c9e0a2 )**: [Flare] Fix Press retention state regression (#15936) //<Dominic Gannaway>//
- **[76864f7ff](https://github.com/facebook/react/^Cmmit/76864f7ff )**: Add SuspenseList Component (#15902) //<Sebastian Markbåge>//
- **[e9d0a3ff2](https://github.com/facebook/react/^Cmmit/e9d0a3ff2 )**: [Fresh] Track mounted roots via DevTools Hook (#15928) //<Dan Abramov>//
- **[35ef78de3](https://github.com/facebook/react/^Cmmit/35ef78de3 )**: [Scheduler] Integrated timers (#15911) //<Andrew Clark>//
- **[3af91eb8c](https://github.com/facebook/react/^Cmmit/3af91eb8c )**: [Scheduler] Use continuation pattern for posting host callback (#15910) //<Andrew Clark>//
- **[b62ae1642](https://github.com/facebook/react/^Cmmit/b62ae1642 )**: [Flare] Rename createEventComponent -> createEvent (#15929) //<Dominic Gannaway>//
- **[f4e1ac8ca](https://github.com/facebook/react/^Cmmit/f4e1ac8ca )**: [Flare] Press events include defaultPrevented (#15916) //<Nicolas Gallagher>//
- **[4a7a39b59](https://github.com/facebook/react/^Cmmit/4a7a39b59 )**: [Flare] Add RN build step for ReactTypes (#15926) //<Dominic Gannaway>//
- **[0bd755114](https://github.com/facebook/react/^Cmmit/0bd755114 )**: Remove mention of Prepack (#15922) //<Christoph Nakazawa>//
- **[689beef6f](https://github.com/facebook/react/^Cmmit/689beef6f )**: [Flare] Move unstable_createEventComponent to ReactDOM (#15890) //<Dominic Gannaway>//
- **[98454371a](https://github.com/facebook/react/^Cmmit/98454371a )**: Construct Error at invariant call site for clearer stack traces (#15877) //<Moti Zilberman>//
- **[f97b95166](https://github.com/facebook/react/^Cmmit/f97b95166 )**: [Flare] add disableContextMenu to Press (#15909) //<Nicolas Gallagher>//
- **[cd98e63b4](https://github.com/facebook/react/^Cmmit/cd98e63b4 )**: [Fresh] Fall back to Map/Set if Weak equivalents are not available (#15907) //<Dan Abramov>//
- **[a3c5b1fb8](https://github.com/facebook/react/^Cmmit/a3c5b1fb8 )**: [Fresh] Rename findHostNodesForHotUpdate to findHostInstancesForHotUpdate (#15904) //<Dan Abramov>//
- **[7985bf7d5](https://github.com/facebook/react/^Cmmit/7985bf7d5 )**: Remove outdated test renderer comments (#15898) //<Sebastian Markbåge>//
- **[f0156766d](https://github.com/facebook/react/^Cmmit/f0156766d )**: [Fresh] react-fresh => react-refresh (#15888) //<Dan Abramov>//
- **[801feed95](https://github.com/facebook/react/^Cmmit/801feed95 )**: Interaction tracing works across hidden and SSR hydration boundaries (#15872) //<Brian Vaughn>//
- **[661562fc5](https://github.com/facebook/react/^Cmmit/661562fc5 )**: Fix outdated test comments (#15892) //<Andrew Clark>//
- **[788da69b7](https://github.com/facebook/react/^Cmmit/788da69b7 )**: [Suspense] Fix bad loading state not being delayed (#15891) //<Andrew Clark>//
- **[353e0ee47](https://github.com/facebook/react/^Cmmit/353e0ee47 )**: [Flare] remove stopLocalPropagation option + modify responder ownership (#15889) //<Dominic Gannaway>//
- **[a146c1f9e](https://github.com/facebook/react/^Cmmit/a146c1f9e )**: [Flare] Refactor of Press to fix various issues (#15878) //<Dominic Gannaway>//
- **[de7a09c1e](https://github.com/facebook/react/^Cmmit/de7a09c1e )**: [Fresh] Make transform resilient to plugin order (#15883) //<Dan Abramov>//
- **[2fe8fd290](https://github.com/facebook/react/^Cmmit/2fe8fd290 )**: [Suspense] Use style.setProperty to set display (#15882) //<Andrew Clark>//
- **[e91dd70ba](https://github.com/facebook/react/^Cmmit/e91dd70ba )**: Remove disableYielding feature flag (#15654) //<Andrew Clark>//
- **[4d949d764](https://github.com/facebook/react/^Cmmit/4d949d764 )**: [React Native] Replace touch discrepancy errors to warnings (#15866) //<Timothy Yung>//
- **[45acbdc0b](https://github.com/facebook/react/^Cmmit/45acbdc0b )**: [Flare] Unsure root events are removed on contextmenu (#15862) //<Dominic Gannaway>//
- **[198ed661c](https://github.com/facebook/react/^Cmmit/198ed661c )**: [Suspense] Use !important to hide Suspended nodes (#15861) //<Andrew Clark>//
- **[191920605](https://github.com/facebook/react/^Cmmit/191920605 )**: [Fresh] Implement missing features (#15860) //<Dan Abramov>//
- **[c403ae4d3](https://github.com/facebook/react/^Cmmit/c403ae4d3 )**: [Flare] Move Press root event removal till click phase (#15854) //<Dominic Gannaway>//
- **[f4cd7a38d](https://github.com/facebook/react/^Cmmit/f4cd7a38d )**:  [Flare] Listen to document.body + add stopPropagation to Press (#15853) //<Dominic Gannaway>//
- **[425473f43](https://github.com/facebook/react/^Cmmit/425473f43 )**: [Flare] Improve runtime performance of hit target intersection (#15836) //<Dominic Gannaway>//
- **[def56c979](https://github.com/facebook/react/^Cmmit/def56c979 )**: [Fresh] Capture Hook signatures lazily on first render (#15832) //<Dan Abramov>//
- **[8cfcfe0fc](https://github.com/facebook/react/^Cmmit/8cfcfe0fc )**: [Flare] Fix ES6 issues with IE11 (#15834) //<Dominic Gannaway>//
- **[d0e041aee](https://github.com/facebook/react/^Cmmit/d0e041aee )**: [Fresh] Support classes by force-remounting them on edit (#15801) //<Dan Abramov>//
- **[73c27d8b4](https://github.com/facebook/react/^Cmmit/73c27d8b4 )**: [Flare] Add basic Scroll event responder module (#15827) //<Dominic Gannaway>//
- **[c72dceffb](https://github.com/facebook/react/^Cmmit/c72dceffb )**: [Flare] Small Swipe/Drag fixes (#15825) //<Dominic Gannaway>//
- **[6aaa43708](https://github.com/facebook/react/^Cmmit/6aaa43708 )**: Rename ReactFeatureFlags to remove the `.fb` suffix. (#15826) //<Christoph Nakazawa>//
- **[843a59ab6](https://github.com/facebook/react/^Cmmit/843a59ab6 )**: [React Native] Remove eventTypes from ReactNativeBridgeEventPlugin (#15802) //<Ricky>//
- **[7b28ad119](https://github.com/facebook/react/^Cmmit/7b28ad119 )**: [Flare] EventPriority enum (#15823) //<Andrew Clark>//
- **[d707a7579](https://github.com/facebook/react/^Cmmit/d707a7579 )**: nit: a quick copy edit for an act() message/comment (#15805) //<Sunil Pai>//
- **[cfb79ee5b](https://github.com/facebook/react/^Cmmit/cfb79ee5b )**: [Flare] Fix isTouchEvent (#15824) //<Dominic Gannaway>//
- **[6b5deeed5](https://github.com/facebook/react/^Cmmit/6b5deeed5 )**: [Events] Add support for events that are both user-blocking and continuous (#15811) //<Andrew Clark>//
- **[8d4fb132e](https://github.com/facebook/react/^Cmmit/8d4fb132e )**: [Flare] Fix nativeEvent.x/y for older browsers (#15820) //<Dominic Gannaway>//
- **[2534c0c92](https://github.com/facebook/react/^Cmmit/2534c0c92 )**: [Flare] Add event position properties to Hover responder (#15819) //<Dominic Gannaway>//
- **[dd43cb5fb](https://github.com/facebook/react/^Cmmit/dd43cb5fb )**: [Flare] Fix isPressWithinResponderRegion logic (#15808) //<Nicolas Gallagher>//
- **[4f6cab547](https://github.com/facebook/react/^Cmmit/4f6cab547 )**: [Flare] Ignore keyboard interactions on text input children (#15810) //<Nicolas Gallagher>//
- **[fa1e8df11](https://github.com/facebook/react/^Cmmit/fa1e8df11 )**: chore: use jest-serializer-raw for react-fresh snapshots (#15806) //<Simen Bekkhus>//
- **[07da821bf](https://github.com/facebook/react/^Cmmit/07da821bf )**: [react-native] Rewrite Haste imports in RN shims and add .fb.js extension (#15786) //<James Ide>//
- **[a383c4678](https://github.com/facebook/react/^Cmmit/a383c4678 )**: [ESLint] don't warn for Flow type variables (#15804) //<Jordan Rome>//
- **[5763f1d4c](https://github.com/facebook/react/^Cmmit/5763f1d4c )**: [Events] Nested discrete events across systems //<Andrew Clark>//
- **[7aa35ceae](https://github.com/facebook/react/^Cmmit/7aa35ceae )**: Fix casing of shouldflushDiscreteUpdates //<Andrew Clark>//
- **[91635dd48](https://github.com/facebook/react/^Cmmit/91635dd48 )**: Switch to "discrete" and "continuous" terminology //<Andrew Clark>//
- **[73c380fca](https://github.com/facebook/react/^Cmmit/73c380fca )**: WorkPhase -> ExecutionContext //<Andrew Clark>//
- **[88b396382](https://github.com/facebook/react/^Cmmit/88b396382 )**: [Flare] Remove deprecated keypress event (#15795) //<Nicolas Gallagher>//
- **[63fe08eef](https://github.com/facebook/react/^Cmmit/63fe08eef )**: React Events: allow Tab+Alt on Mac in Focus responder (#15679) //<Mateusz Burzyński>//
- **[113497cc0](https://github.com/facebook/react/^Cmmit/113497cc0 )**: [Suspense] Change Suspending and Restarting Heuristics (#15769) //<Sebastian Markbåge>//
- **[3b2302253](https://github.com/facebook/react/^Cmmit/3b2302253 )**: Fix sizebot (#15771) //<Andrew Clark>//
- **[0f7cc2ba8](https://github.com/facebook/react/^Cmmit/0f7cc2ba8 )**: React Events: check window before using navigator (#15768) //<Nicolas Gallagher>//
- **[2670bc340](https://github.com/facebook/react/^Cmmit/2670bc340 )**: React Events: support legacy browser Spacebar key value (#15766) //<Nicolas Gallagher>//
- **[9aad17d60](https://github.com/facebook/react/^Cmmit/9aad17d60 )**: using the wrong renderer's act() should warn (#15756) //<Sunil Pai>//
- **[1cc3bba00](https://github.com/facebook/react/^Cmmit/1cc3bba00 )**: Parallelizes the build script across multiple processes (#15716) //<Andrew Clark>//
- **[112168f31](https://github.com/facebook/react/^Cmmit/112168f31 )**: Lint rule for unminified errors (#15757) //<Andrew Clark>//
- **[142cf56cb](https://github.com/facebook/react/^Cmmit/142cf56cb )**: [Flare] Adds onContextMenu and fixes some contextmenu related issues (#15761) //<Dominic Gannaway>//
- **[556cc6fe1](https://github.com/facebook/react/^Cmmit/556cc6fe1 )**: [Fresh] Generate signatures for Hooks (#15733) //<Dan Abramov>//
- **[b74fa9868](https://github.com/facebook/react/^Cmmit/b74fa9868 )**: Clean up (#15755) //<Sebastian Markbåge>//
- **[d915a4c1f](https://github.com/facebook/react/^Cmmit/d915a4c1f )**: [Suspense] Add Batched Mode variant to fuzz tester (#15734) //<Andrew Clark>//
- **[401065fe5](https://github.com/facebook/react/^Cmmit/401065fe5 )**: Adds test for #15732. (#15747) //<Caleb Meredith>//
- **[287ef30bb](https://github.com/facebook/react/^Cmmit/287ef30bb )**: [Flare] Deeply prevent default on anchor elements (#15750) //<Dominic Gannaway>//
- **[a97b5c07b](https://github.com/facebook/react/^Cmmit/a97b5c07b )**: [Flare] More fixes for getAbsoluteBoundingClientRect (#15746) //<Dominic Gannaway>//
- **[393924879](https://github.com/facebook/react/^Cmmit/393924879 )**: [Fresh] Babel plugin now handles HOCs + add integration tests (#15724) //<Dan Abramov>//
- **[8af1f8792](https://github.com/facebook/react/^Cmmit/8af1f8792 )**: Rename ReactFiberScheduler -> ReactFiberWorkLoop and extract throwException from Unwind (#15725) //<Sebastian Markbåge>//
- **[399cd0d16](https://github.com/facebook/react/^Cmmit/399cd0d16 )**: Set up cron job to run fuzz tester (#15718) //<Andrew Clark>//
- **[025b07b61](https://github.com/facebook/react/^Cmmit/025b07b61 )**: [Flare] Ensure getAbsoluteBoundingClientRect aligns with offsetParent (#15720) //<Dominic Gannaway>//
- **[61f62246c](https://github.com/facebook/react/^Cmmit/61f62246c )**: [react-native] Use path-based imports instead of Haste for the RN renderer (#15604) //<James Ide>//
- **[b962adfc2](https://github.com/facebook/react/^Cmmit/b962adfc2 )**: [Flare] event component displayName is now mandatory (#15717) //<Dominic Gannaway>//
- **[5c2124fc7](https://github.com/facebook/react/^Cmmit/5c2124fc7 )**: [Fresh] Initial Babel plugin implementation (#15711) //<Dan Abramov>//
- **[b9ebc37c5](https://github.com/facebook/react/^Cmmit/b9ebc37c5 )**: Fix Flow (#15710) //<Dominic Gannaway>//
- **[a25a793fe](https://github.com/facebook/react/^Cmmit/a25a793fe )**: [Flare] update getEventCurrentTarget to use fiber tree (#15708) //<Dominic Gannaway>//
- **[b5dff62fa](https://github.com/facebook/react/^Cmmit/b5dff62fa )**: [Flare] Account for fixed elements in getAbsoluteBoundingClientRect (#15707) //<Dominic Gannaway>//
- **[f50f9ba5d](https://github.com/facebook/react/^Cmmit/f50f9ba5d )**: Fix ReactFiberNewContext spelling (#15692) //<Maksim Markelov>//
- **[e180f656f](https://github.com/facebook/react/^Cmmit/e180f656f )**: Flare: change flushDiscreteUpdates invariant to warning (#15702) //<Dominic Gannaway>//
- **[7829d8cf9](https://github.com/facebook/react/^Cmmit/7829d8cf9 )**: Fix missing return pointer assignment (#15700) //<Andrew Clark>//
- **[d7afe23f1](https://github.com/facebook/react/^Cmmit/d7afe23f1 )**: Rename "loading" to "busy" in SuspenseConfig API (#15699) //<Sebastian Markbåge>//
- **[ef4ac42f8](https://github.com/facebook/react/^Cmmit/ef4ac42f8 )**: [Flare] Update interactiveUpdates flushing heuristics (#15687) //<Dominic Gannaway>//
- **[6d4f85b61](https://github.com/facebook/react/^Cmmit/6d4f85b61 )**: [Fresh] Set up infra for runtime and Babel plugin (#15698) //<Dan Abramov>//
- **[121acae09](https://github.com/facebook/react/^Cmmit/121acae09 )**: Flare: simplify dispatchEvent discrete argument (#15694) //<Dominic Gannaway>//
- **[a398cbd5a](https://github.com/facebook/react/^Cmmit/a398cbd5a )**: Flare: update invalid accessor warnings + add no-ops (#15693) //<Dominic Gannaway>//
- **[9c9ea9485](https://github.com/facebook/react/^Cmmit/9c9ea9485 )**: flush only on exiting outermost act() (#15682) //<Sunil Pai>//
- **[50b50c26f](https://github.com/facebook/react/^Cmmit/50b50c26f )**: Inform DevTools of commit priority level (#15664) //<Brian Vaughn>//
- **[0bd9b5d00](https://github.com/facebook/react/^Cmmit/0bd9b5d00 )**: [Fresh] Support re-rendering lazy() without losing state (#15686) //<Dan Abramov>//
- **[ec38def44](https://github.com/facebook/react/^Cmmit/ec38def44 )**: [Fresh] Don't traverse remounted trees (#15685) //<Dan Abramov>//
- **[5731e522d](https://github.com/facebook/react/^Cmmit/5731e522d )**: [Fresh] Support lazy() and add Suspense tests (#15681) //<Dan Abramov>//
- **[31487dd82](https://github.com/facebook/react/^Cmmit/31487dd82 )**: [Fresh] Set up initial scaffolding (#15619) //<Dan Abramov>//
- **[9c6de716d](https://github.com/facebook/react/^Cmmit/9c6de716d )**: Add withSuspenseConfig API (#15593) //<Sebastian Markbåge>//
- **[1160b3769](https://github.com/facebook/react/^Cmmit/1160b3769 )**: Event API: Add responder allowMultipleHostChildren flag (#15646) //<Dominic Gannaway>//
- **[95e06ac3d](https://github.com/facebook/react/^Cmmit/95e06ac3d )**: Event API: isTargetWithinEventResponderScope on unmounted event components (#15672) //<Dominic Gannaway>//
- **[d278a3ff8](https://github.com/facebook/react/^Cmmit/d278a3ff8 )**: `act()` - s / flushPassiveEffects / Scheduler.unstable_flushWithoutYielding (#15591) //<Sunil Pai>//
- **[aad5a264d](https://github.com/facebook/react/^Cmmit/aad5a264d )**: Event API: ensure calculateResponderRegion accounts for page offset (#15671) //<Dominic Gannaway>//
- **[bb89b4eac](https://github.com/facebook/react/^Cmmit/bb89b4eac )**: Bail out of updates in offscreen trees (#15666) //<Dan Abramov>//
- **[4bf88ddec](https://github.com/facebook/react/^Cmmit/4bf88ddec )**: Fix <embed> not triggering onLoad (#15614) //<Andrew Cherniavskii>//
- **[f961050a3](https://github.com/facebook/react/^Cmmit/f961050a3 )**: Always flushPassiveEffects before rendering //<Andrew Clark>//
- **[b899819e7](https://github.com/facebook/react/^Cmmit/b899819e7 )**: Use dynamic flag in test renderer in www (#15662) //<Andrew Clark>//
- **[d34b457ce](https://github.com/facebook/react/^Cmmit/d34b457ce )**: Feature flag to revert #15650 (#15659) //<Andrew Clark>//
- **[668fbd651](https://github.com/facebook/react/^Cmmit/668fbd651 )**: Fix serial passive effects (#15650) //<Andrew Clark>//
- **[b0657fde6](https://github.com/facebook/react/^Cmmit/b0657fde6 )**: Event API: ensure getFocusableElementsInScope handles suspended trees (#15651) //<Dominic Gannaway>//
- **[8af90c897](https://github.com/facebook/react/^Cmmit/8af90c897 )**: Add test for nested avoided boundaries (#15636) //<Sebastian Markbåge>//
- **[af19e2eb2](https://github.com/facebook/react/^Cmmit/af19e2eb2 )**: Event API: adds pointerType to Focus events (#15645) //<Dominic Gannaway>//
- **[cc24d0ea5](https://github.com/facebook/react/^Cmmit/cc24d0ea5 )**: Invariant that throws when committing wrong tree (#15517) //<Andrew Clark>//
- **[83fc258f2](https://github.com/facebook/react/^Cmmit/83fc258f2 )**: Remove <ConcurrentMode /> (#15532) //<Andrew Clark>//
- **[283ce5320](https://github.com/facebook/react/^Cmmit/283ce5320 )**: Add ReactDOM.unstable_createSyncRoot (#15504) //<Andrew Clark>//
- **[862f499fa](https://github.com/facebook/react/^Cmmit/862f499fa )**: Add Batched Mode (#15502) //<Andrew Clark>//
- **[fec74f99d](https://github.com/facebook/react/^Cmmit/fec74f99d )**: Event API: ensure preventDefault works for nested targets (#15633) //<Dominic Gannaway>//
- **[edfedf3ae](https://github.com/facebook/react/^Cmmit/edfedf3ae )**: Fork ReactSharedInternals for UMD builds (#15617) //<Andrew Clark>//
- **[39ef609e7](https://github.com/facebook/react/^Cmmit/39ef609e7 )**: Update test to fix CI //<Andrew Clark>//
- **[5b6eb55e1](https://github.com/facebook/react/^Cmmit/5b6eb55e1 )**: Remove scheduler from React package dependencies (#15616) //<Andrew Clark>//
- **[0803d2247](https://github.com/facebook/react/^Cmmit/0803d2247 )**: Don't consider "Never" expiration as part of most recent event time (#15606) //<Sebastian Markbåge>//
- **[90f54d77f](https://github.com/facebook/react/^Cmmit/90f54d77f )**: Event API: add follow up event unwind test (#15612) //<Dominic Gannaway>//
- **[91a044e31](https://github.com/facebook/react/^Cmmit/91a044e31 )**: Event API: add key modifiers to Press events (#15611) //<Dominic Gannaway>//
- **[3d8b836e2](https://github.com/facebook/react/^Cmmit/3d8b836e2 )**: Event API: ensure we pop context for event system fibers (#15599) //<Dominic Gannaway>//
- **[e33e32db0](https://github.com/facebook/react/^Cmmit/e33e32db0 )**: Event API: normalize event timeStamp property to be in event system (#15598) //<Dominic Gannaway>//
- **[3669b9010](https://github.com/facebook/react/^Cmmit/3669b9010 )**: Event API: add more warnings for responder based events (#15597) //<Dominic Gannaway>//
- **[05d08500b](https://github.com/facebook/react/^Cmmit/05d08500b )**: Experimental Event API: Press event properties (#15586) //<Dominic Gannaway>//
- **[51e66cf9f](https://github.com/facebook/react/^Cmmit/51e66cf9f )**: Experimental Event API: reduce code size of event modules (#15590) //<Dominic Gannaway>//
- **[8abf243b8](https://github.com/facebook/react/^Cmmit/8abf243b8 )**: Ensure touch events are properly handled for pageX and pageY (#15587) //<Dominic Gannaway>//
- **[c7398f339](https://github.com/facebook/react/^Cmmit/c7398f339 )**: Add Suspense Boundary Context (and unstable_avoidThisFallback) (#15578) //<Sebastian Markbåge>//
- **[f9e60c8a1](https://github.com/facebook/react/^Cmmit/f9e60c8a1 )**: Warn when suspending at wrong priority (#15492) //<Andrew Clark>//
- **[89d8d1435](https://github.com/facebook/react/^Cmmit/89d8d1435 )**: Add React.unstable_createEventComponent (#15580) //<Nicolas Gallagher>//
- **[6da04b5d8](https://github.com/facebook/react/^Cmmit/6da04b5d8 )**: Fix interaction tracing for batched update mounts (#15567) //<Brian Vaughn>//
- **[d38cfd452](https://github.com/facebook/react/^Cmmit/d38cfd452 )**: Ensure TouchHitTarget element is server side rendered with hit slop (#15385) //<Dominic Gannaway>//
- **[2e5d1a8b9](https://github.com/facebook/react/^Cmmit/2e5d1a8b9 )**: React Events: fix cancel events for Press (#15563) //<Nicolas Gallagher>//
- **[307e0a7d7](https://github.com/facebook/react/^Cmmit/307e0a7d7 )**: React Events: cancel onLongPress for large enough moves (#15562) //<Nicolas Gallagher>//
- **[339366c46](https://github.com/facebook/react/^Cmmit/339366c46 )**: Event API: Support press reentry for pointer events (#15560) //<Dominic Gannaway>//

Changelog:
[General][Changed] - React sync for revisions ec6691a...55bc393

Reviewed By: yungsters

Differential Revision: D16555458

fbshipit-source-id: 2d71da52992fbb05b682247cfee20385d70a681b
M-i-k-e-l pushed a commit to M-i-k-e-l/react-native that referenced this pull request Mar 10, 2020
… on iOS (facebook#15611)

Summary:
When calling a prop of type `RCTDirectEventBlock` or `RCTBubblingEventBlock` it uses a completely different code path than events using `[RCTEventDispatcher sendEvent:]` and those were not dispatched to the `RCTEventDispatcherListener`s. We also do some event name normalization which caused issues between the JS and native event names. To fix that I simply remove the parts we normalize from the event key.

## Changelog:

[iOS] [Fixed] - Support events using RCT{Direct|Bubbling}EventBlock
Pull Request resolved: facebook#15611

Test Plan: Added a Slider (it used RCTBubblingEventBlock for it's onValueChange event) that can control a native animated value in RNTester to reproduce the bug and made sure this diff fixes it.

Differential Revision: D15896806

Pulled By: cpojer

fbshipit-source-id: c0ae463f4c3f890062238575e813ed7ab3b7a7e6
M-i-k-e-l pushed a commit to M-i-k-e-l/react-native that referenced this pull request Mar 10, 2020
… on iOS (facebook#25317)

Summary:
Reland facebook#15611 and added the gcc warning that was different from fb internal config. The original PR missed the static keyword for the `RCTNormalizeAnimatedEventName` function which triggered the gcc warning internally but not with the OSS xcode config.

When calling a prop of type `RCTDirectEventBlock` or `RCTBubblingEventBlock` it uses a completely different code path than events using `[RCTEventDispatcher sendEvent:]` and those were not dispatched to the `RCTEventDispatcherListener`s. We also do some event name normalization which caused issues between the JS and native event names. To fix that I simply remove the parts we normalize from the event key.

## Changelog:

[iOS] [Fixed] - Support events using RCT{Direct|Bubbling}EventBlock
Pull Request resolved: facebook#25317

Test Plan: Added a Slider (it uses RCTBubblingEventBlock for its onValueChange event) that can control a native animated value in RNTester to reproduce the bug and made sure this diff fixes it.

Differential Revision: D15938856

Pulled By: cpojer

fbshipit-source-id: 7e7a3459e2a2e8b1254a2f1ec8153a159ea73eed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API: Animated Bug CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. Platform: iOS iOS applications. Ran Commands One of our bots successfully processed a command.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants