-
Notifications
You must be signed in to change notification settings - Fork 24.3k
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
[VirtualList] Fix off-by-one errors when rendering window-sized items. #14559
Conversation
271e9d5
to
ce0b1ee
Compare
I'm using a <FlatList horizontal windowSize={1} initialNumToRender={1} initialScrollIndex={1} pagingEnabled /> (where each element is exactly the width of the screen). The existing calculation would always detect a window size of 2(!). Namely because checking [375, 375, 750, 750] would cause it to match the first element (of 0, 375) and second element (of 375, 750). This causes the elements to be sized as (0, 374) and (375, 749), and in turn causes our search window to be [375, 375, 749, 749], which in turn would give a window size of exactly one, as expected. In the case of natural scroll lists, this is essentially irrelevant. In the case of pagingEnabled lists, this can result in an extra frame being rendered, and since I'm dealing with performance issues, I'm trying to minimize over-draw (at least on initial render), and want to be sure it *only* prioritizes the one element on the screen.
ce0b1ee
to
cd45a21
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add test cases to VirtualizeUtils-test.js?
Ahh yay, there's a jest test file for this one. Added a test for what I consider a new common case (ie 199), (and "fixed" the broken one to reflect the new behavior.) |
@mikelambert 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. |
…o virtuallist-one
Merged to head. @sahrens should I be tagging someone else on this review? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the fix!
Sorry I didn't see your update. Feel free to ping me more aggressively in the future.
@facebook-github-bot shipit |
Sorry, I can't do that @sahrens - this feature is only supported for non-employees; you can land via the internal pull request dashboard. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. If you think this issue should definitely remain open, please let us know why. Thank you for your contributions. |
Ping @sahrens ? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. If you think this issue should definitely remain open, please let us know why. Thank you for your contributions. |
Ping @sahrens ? |
Generated by 🚫 dangerJS |
Jest is failing -- might be a bad conflict resolution fix on my part. |
It seems like I never got around to looking into the Jest failure here. If someone wants to take a look at it, I'd be happy to import once it passes CI. |
@mikelambert it seems that all this time the reason this wasn't landed is because it actually has a legitimate test failure. If you rebase and run Jest on the react-native repo (yarn test), you'll see that one test is actually failing after your change. If you can fix that, we are happy to land it. |
Summary: @public This sync includes the following changes: - **[45fc46bfa](facebook/react@45fc46bfa )**: 16.8.1 packages //<Brian Vaughn>// - **[f2e2637c8](facebook/react@f2e2637c8 )**: Backwards compat fix for ReactCurrentDispatcher on older react versions (facebook#14770) //<Brian Vaughn>// - **[1107b9673](facebook/react@1107b9673 )**: [TestUtils.act] warn when using TestUtils.act in node (facebook#14768) //<Sunil Pai>// - **[0975ea327](facebook/react@0975ea327 )**: eslint-plugin-react-hooks v1.0.0 //<Brian Vaughn>// - **[bc9818f24](facebook/react@bc9818f24 )**: Scheduler.unstable_next (facebook#14756) //<Andrew Clark>// - **[ce6ecd3fb](facebook/react@ce6ecd3fb )**: Add 16.8.0 changelog and update some READMEs (facebook#14692) //<Dan Abramov>// - **[008a2ab9c](facebook/react@008a2ab9c )**: 16.8.0 //<Brian Vaughn>// - **[d1326f466](facebook/react@d1326f466 )**: [TestUtils.act] fix return result checking (facebook#14758) //<Sunil Pai>// - **[267ed9814](facebook/react@267ed9814 )**: expose `TestUtils.act()` for batching actions in tests (facebook#14744) //<Sunil Pai>// - **[fb3f7bfde](facebook/react@fb3f7bfde )**: Avoid importing Scheduler directly (facebook#14757) //<Andrew Clark>// - **[e602b5291](facebook/react@e602b5291 )**: Use SameValue instead of === to check for dispatchAction equivalence (facebook#14752) //<Jessica Franco>// - **[e489c3f9c](facebook/react@e489c3f9c )**: Update the version with Hooks proposal in README (facebook#14751) //<SToneX>// - **[c21c41ecf](facebook/react@c21c41ecf )**: Tweak invalid Hook warning and error (facebook#14747) //<Dan Abramov>// - **[fec00a869](facebook/react@fec00a869 )**: Typo in comment (facebook#14739) //<Deniz Susman>// - **[66eb29374](facebook/react@66eb29374 )**: Restrict effect return type to a function or nothing (facebook#14119) //<Andrew Clark>// - **[51c07912a](facebook/react@51c07912a )**: Warn when second argument is passed to useCallback (facebook#14729) //<Dan Abramov>// - **[70d407583](facebook/react@70d407583 )**: Move Hook mismatch warning to first mismatch site (facebook#14720) //<Andrew Clark>// - **[ba6477aa3](facebook/react@ba6477aa3 )**: Improve Reducer Hook's lazy init API (facebook#14723) //<Andrew Clark>// - **[cb1ff430e](facebook/react@cb1ff430e )**: Phased dispatcher (facebook#14701) //<Andrew Clark>// - **[9d483dcfd](facebook/react@9d483dcfd )**: Spelling abitrarily -> arbitrarily (facebook#14710) //<Peter Donald>// - **[e19c9e106](facebook/react@e19c9e106 )**: Fix issue with multiple code branches in hooks linter (facebook#14661) //<Yurick>// - **[f11a9c1cb](facebook/react@f11a9c1cb )**: State update bug in concurrent mode (facebook#14698) //<Brian Vaughn>// - **[e679a4b6e](facebook/react@e679a4b6e )**: Fix typo in code comment (facebook#14696) //<Greg Hurrell>// - **[8bcc88f2e](facebook/react@8bcc88f2e )**: Make all readContext() and Hook-in-a-Hook checks DEV-only (facebook#14677) //<Dan Abramov>// - **[6cb26774e](facebook/react@6cb26774e )**: Enable hooks! (facebook#14679) //<Brian Vaughn>// - **[73962c366](facebook/react@73962c366 )**: Revert "Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652)" (facebook#14654) //<Dan Abramov>// - **[994439228](facebook/react@994439228 )**: Put DEV-only code into DEV blocks (facebook#14673) //<Dan Abramov>// - **[f0befae65](facebook/react@f0befae65 )**: Tweak context invariant message (facebook#14671) //<Dan Abramov>// - **[a129259ad](facebook/react@a129259ad )**: Disallow reading context during useMemo etc (facebook#14653) //<Dan Abramov>// - **[c068d31cc](facebook/react@c068d31cc )**: Add unit tests for concurrent mode event dispatching (facebook#14415) //<Sebastian Markbåge>// - **[38247cba3](facebook/react@38247cba3 )**: --save is no longer needed (facebook#14302) //<SamCortopassi>// - **[3f0bcaf0d](facebook/react@3f0bcaf0d )**: Importing React for the first example. (facebook#14346) //<Ramón Chancay Ortega>// - **[ecd919a2f](facebook/react@ecd919a2f )**: RFC: warn when returning different hooks on subsequent renders (facebook#14585) //<Sunil Pai>// - **[3fbebb2a0](facebook/react@3fbebb2a0 )**: Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652) //<Dan Abramov>// - **[5fce6488c](facebook/react@5fce6488c )**: Revert "Disallow reading context during useMemo etc" (facebook#14651) //<Dan Abramov>// - **[fe2ecd276](facebook/react@fe2ecd276 )**: Add test coverage for readContext() on the server (facebook#14649) //<Dan Abramov>// - **[8f45a7fdc](facebook/react@8f45a7fdc )**: Warn about incorrect use of useImperativeHandle() (facebook#14647) //<Dan Abramov>// - **[1fcbd2243](facebook/react@1fcbd2243 )**: Disallow reading context during useMemo etc (facebook#14648) //<Dan Abramov>// - **[2a084f51a](facebook/react@2a084f51a )**: Warn about refs on lazy function components (facebook#14645) //<Dan Abramov>// - **[b5a3df6e8](facebook/react@b5a3df6e8 )**: Fix typo (facebook#14560) //<Linchengyi>// - **[9c146e675](facebook/react@9c146e675 )**: fix typo (facebook#14316) //<liunian>// - **[baa6d40fc](facebook/react@baa6d40fc )**: Mention forwardRef() in <Fn ref={...} /> errors and warnings (facebook#14644) //<Dan Abramov>// - **[a1414e894](facebook/react@a1414e894 )**: Double-render function components with Hooks in DEV in StrictMode (facebook#14643) //<Dan Abramov>// - **[10a7a5b5c](facebook/react@10a7a5b5c )**: Fix synchronous thenable rejection (facebook#14633) //<Dan Abramov>// - **[a2fa6eb98](facebook/react@a2fa6eb98 )**: Move lazy._result assignment (facebook#14632) //<Dan Abramov>// - **[9120f6c2d](facebook/react@9120f6c2d )**: Support sync thenables for lazy() (facebook#14626) //<Dan Abramov>// - **[b66e6e41e](facebook/react@b66e6e41e )**: Add directory details to the package.json of all packages (facebook#14628) //<Grey Baker>// - **[177fb7635](facebook/react@177fb7635 )**: Warn when second callback is passed to setState/dispatch in Hooks (facebook#14625) //<Dan Abramov>// - **[d17d0b99c](facebook/react@d17d0b99c )**: Use public context.report interface in eslint rules (facebook#14623) //<Sebastian Silbermann>// - **[4f332885a](facebook/react@4f332885a )**: Fix shallow renderer set instance state after gDSFP before calling sCU (facebook#14613) //<Yi-Shan, Chen>// - **[e1cd83e49](facebook/react@e1cd83e49 )**: Throw an error when using hooks inside useMemo/useState/useReducer, or .memo's comparator (facebook#14608) //<Sunil Pai>// - **[be457ca68](facebook/react@be457ca68 )**: Small tweaks to SSR to match facebook#14594 (facebook#14618) //<Dan Abramov>// - **[17d70df91](facebook/react@17d70df91 )**: Warn when mixing createRoot() and old APIs (facebook#14615) //<Dan Abramov>// - **[4feab7fc9](facebook/react@4feab7fc9 )**: Add hooks support to ReactShallowRenderer (facebook#14567) //<Dominic Gannaway>// - **[1454a8be0](facebook/react@1454a8be0 )**: Don't bother comparing constructor when deps are not provided (facebook#14594) //<Andrew Clark>// - **[71b64d521](facebook/react@71b64d521 )**: Warn if number of hooks increases (facebook#14591) //<Andrew Clark>// - **[790c8ef04](facebook/react@790c8ef04 )**: Allow useReducer to bail out of rendering by returning previous state (facebook#14569) //<Andrew Clark>// - **[7ab8a8e97](facebook/react@7ab8a8e97 )**: Added Flow type to keep hooks dispatchers in-sync (facebook#14599) //<Brian Vaughn>// - **[4392e3821](facebook/react@4392e3821 )**: useDebugValue should throw if used in a class component (facebook#14601) //<Brian Vaughn>// - **[153a0b598](facebook/react@153a0b598 )**: Add noop useDebugValue hook to partial/server renderer (facebook#14597) //<Brian Vaughn>// - **[7ad9806d1](facebook/react@7ad9806d1 )**: Tweak to avoid property read (facebook#14593) //<Brandon Dail>// - **[0fc154751](facebook/react@0fc154751 )**: Avoid new Set([iterable]) for thenables (facebook#14592) //<Brandon Dail>// - **[edb1f5956](facebook/react@edb1f5956 )**: Support configurable labels for custom hooks (facebook#14559) //<Brian Vaughn>// - **[3e15b1c69](facebook/react@3e15b1c69 )**: make a fork for ReactCurrentDispatcher (facebook#14588) //<Sunil Pai>// - **[0005d1e3f](facebook/react@0005d1e3f )**: Fix typo (facebook#14576) //<Carl Mungazi>// - **[f290138d3](facebook/react@f290138d3 )**: react-debug-tools accepts currentDispatcher ref as param (facebook#14556) //<Brian Vaughn>// - **[b4ad8e947](facebook/react@b4ad8e947 )**: rename useImperativeMethods -> useImperativeHandle (facebook#14565) //<Sunil Pai>// - **[ab03e3d65](facebook/react@ab03e3d65 )**: Inject ReactCurrentDispatcher ref to DevTools (facebook#14550) //<Brian Vaughn>// - **[19ef0ec11](facebook/react@19ef0ec11 )**: Separate current owner and dispatcher (facebook#14548) //<Brian Vaughn>// - **[a9b035b0c](facebook/react@a9b035b0c )**: Separate Object.is polyfill (facebook#14334) //<Maksim Markelov>// - **[547e059f0](facebook/react@547e059f0 )**: Simplify wording of key warning (facebook#14503) //<Sophie Alpert>// - **[3494ee57e](facebook/react@3494ee57e )**: Update ReactUpdateQueue.js (facebook#14521) //<Carl Mungazi>// - **[659c13963](facebook/react@659c13963 )**: Update ReactFiberScheduler.js (facebook#14477) //<Carl Mungazi>// - **[c695b2384](facebook/react@c695b2384 )**: React v16.7.0 //<Andrew Clark>// - **[1c5aa2f23](facebook/react@1c5aa2f23 )**: Move SchedulerFeatureFlags fork to src directory to fix lint //<Andrew Clark>// - **[653bc582f](facebook/react@653bc582f )**: Create separate SchedulerFeatureFlags instead of using ReactFeatureFlags (facebook#14455) //<Andrew Clark>// - **[8bfef0da5](facebook/react@8bfef0da5 )**: Make scheduler debugging feature flag static //<Andrew Clark>// - **[4a1072194](facebook/react@4a1072194 )**: Memoize promise listeners to prevent exponential growth (facebook#14429) //<Andrew Clark>// - **[535804f5c](facebook/react@535804f5c )**: Removed Fabric-specific feature flag files and updated Rollup to use the (non-Fabric) React Native flag files. (facebook#14437) //<Brian Vaughn>// - **[2743fb7b2](facebook/react@2743fb7b2 )**: Enable hooks by default for FB React Native renderer (facebook#14435) //<Brian Vaughn>// - **[7325ebe4d](facebook/react@7325ebe4d )**: Inject overrideProps() fn to DevTools (facebook#14427) //<Brian Vaughn>// - **[a22880e5e](facebook/react@a22880e5e )**: Add support for Suspense & lazy() to the react-is package (facebook#14423) //<Pleun Vanderbauwhede>// - **[947bddd5c](facebook/react@947bddd5c )**: Remove redundant argument of getPlugins function (facebook#14419) //<Heaven>// - **[8df4d59be](facebook/react@8df4d59be )**: Implement pauseExecution, continueExecution, dumpQueue for Scheduler (facebook#14053) //<Kevin Chavez>// - **[5bb4ad737](facebook/react@5bb4ad737 )**: Added ErrorBoundary tests for useEffect and useLayoutEffect (facebook#14401) //<Brian Vaughn>// - **[98eb5ae53](facebook/react@98eb5ae53 )**: TestRenderer toJSON should not expose the Array wrapper Suspense uses for hidden trees (facebook#14392) //<Brian Vaughn>// - **[39489e767](facebook/react@39489e767 )**: Enable hooks in fabric (facebook#14301) //<Spencer Ahrens>// - **[1dc108e58](facebook/react@1dc108e58 )**: Tweaked wording for v8 "performance cliff" issue //<Brian Vaughn>// Release Notes: [GENERAL] [Changed] - React sync for revisions 6bf5e85...aa94237 (React 16.8.1) Differential Revision: D13976467 fbshipit-source-id: 728fbf4fecde33184b6b36f863f2dfe940becc27
Summary: Pull Request resolved: facebook#23320 @public This sync includes the following changes: - **[45fc46bfa](facebook/react@45fc46bfa )**: 16.8.1 packages //<Brian Vaughn>// - **[f2e2637c8](facebook/react@f2e2637c8 )**: Backwards compat fix for ReactCurrentDispatcher on older react versions (facebook#14770) //<Brian Vaughn>// - **[1107b9673](facebook/react@1107b9673 )**: [TestUtils.act] warn when using TestUtils.act in node (facebook#14768) //<Sunil Pai>// - **[0975ea327](facebook/react@0975ea327 )**: eslint-plugin-react-hooks v1.0.0 //<Brian Vaughn>// - **[bc9818f24](facebook/react@bc9818f24 )**: Scheduler.unstable_next (facebook#14756) //<Andrew Clark>// - **[ce6ecd3fb](facebook/react@ce6ecd3fb )**: Add 16.8.0 changelog and update some READMEs (facebook#14692) //<Dan Abramov>// - **[008a2ab9c](facebook/react@008a2ab9c )**: 16.8.0 //<Brian Vaughn>// - **[d1326f466](facebook/react@d1326f466 )**: [TestUtils.act] fix return result checking (facebook#14758) //<Sunil Pai>// - **[267ed9814](facebook/react@267ed9814 )**: expose `TestUtils.act()` for batching actions in tests (facebook#14744) //<Sunil Pai>// - **[fb3f7bfde](facebook/react@fb3f7bfde )**: Avoid importing Scheduler directly (facebook#14757) //<Andrew Clark>// - **[e602b5291](facebook/react@e602b5291 )**: Use SameValue instead of === to check for dispatchAction equivalence (facebook#14752) //<Jessica Franco>// - **[e489c3f9c](facebook/react@e489c3f9c )**: Update the version with Hooks proposal in README (facebook#14751) //<SToneX>// - **[c21c41ecf](facebook/react@c21c41ecf )**: Tweak invalid Hook warning and error (facebook#14747) //<Dan Abramov>// - **[fec00a869](facebook/react@fec00a869 )**: Typo in comment (facebook#14739) //<Deniz Susman>// - **[66eb29374](facebook/react@66eb29374 )**: Restrict effect return type to a function or nothing (facebook#14119) //<Andrew Clark>// - **[51c07912a](facebook/react@51c07912a )**: Warn when second argument is passed to useCallback (facebook#14729) //<Dan Abramov>// - **[70d407583](facebook/react@70d407583 )**: Move Hook mismatch warning to first mismatch site (facebook#14720) //<Andrew Clark>// - **[ba6477aa3](facebook/react@ba6477aa3 )**: Improve Reducer Hook's lazy init API (facebook#14723) //<Andrew Clark>// - **[cb1ff430e](facebook/react@cb1ff430e )**: Phased dispatcher (facebook#14701) //<Andrew Clark>// - **[9d483dcfd](facebook/react@9d483dcfd )**: Spelling abitrarily -> arbitrarily (facebook#14710) //<Peter Donald>// - **[e19c9e106](facebook/react@e19c9e106 )**: Fix issue with multiple code branches in hooks linter (facebook#14661) //<Yurick>// - **[f11a9c1cb](facebook/react@f11a9c1cb )**: State update bug in concurrent mode (facebook#14698) //<Brian Vaughn>// - **[e679a4b6e](facebook/react@e679a4b6e )**: Fix typo in code comment (facebook#14696) //<Greg Hurrell>// - **[8bcc88f2e](facebook/react@8bcc88f2e )**: Make all readContext() and Hook-in-a-Hook checks DEV-only (facebook#14677) //<Dan Abramov>// - **[6cb26774e](facebook/react@6cb26774e )**: Enable hooks! (facebook#14679) //<Brian Vaughn>// - **[73962c366](facebook/react@73962c366 )**: Revert "Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652)" (facebook#14654) //<Dan Abramov>// - **[994439228](facebook/react@994439228 )**: Put DEV-only code into DEV blocks (facebook#14673) //<Dan Abramov>// - **[f0befae65](facebook/react@f0befae65 )**: Tweak context invariant message (facebook#14671) //<Dan Abramov>// - **[a129259ad](facebook/react@a129259ad )**: Disallow reading context during useMemo etc (facebook#14653) //<Dan Abramov>// - **[c068d31cc](facebook/react@c068d31cc )**: Add unit tests for concurrent mode event dispatching (facebook#14415) //<Sebastian Markbåge>// - **[38247cba3](facebook/react@38247cba3 )**: --save is no longer needed (facebook#14302) //<SamCortopassi>// - **[3f0bcaf0d](facebook/react@3f0bcaf0d )**: Importing React for the first example. (facebook#14346) //<Ramón Chancay Ortega>// - **[ecd919a2f](facebook/react@ecd919a2f )**: RFC: warn when returning different hooks on subsequent renders (facebook#14585) //<Sunil Pai>// - **[3fbebb2a0](facebook/react@3fbebb2a0 )**: Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652) //<Dan Abramov>// - **[5fce6488c](facebook/react@5fce6488c )**: Revert "Disallow reading context during useMemo etc" (facebook#14651) //<Dan Abramov>// - **[fe2ecd276](facebook/react@fe2ecd276 )**: Add test coverage for readContext() on the server (facebook#14649) //<Dan Abramov>// - **[8f45a7fdc](facebook/react@8f45a7fdc )**: Warn about incorrect use of useImperativeHandle() (facebook#14647) //<Dan Abramov>// - **[1fcbd2243](facebook/react@1fcbd2243 )**: Disallow reading context during useMemo etc (facebook#14648) //<Dan Abramov>// - **[2a084f51a](facebook/react@2a084f51a )**: Warn about refs on lazy function components (facebook#14645) //<Dan Abramov>// - **[b5a3df6e8](facebook/react@b5a3df6e8 )**: Fix typo (facebook#14560) //<Linchengyi>// - **[9c146e675](facebook/react@9c146e675 )**: fix typo (facebook#14316) //<liunian>// - **[baa6d40fc](facebook/react@baa6d40fc )**: Mention forwardRef() in <Fn ref={...} /> errors and warnings (facebook#14644) //<Dan Abramov>// - **[a1414e894](facebook/react@a1414e894 )**: Double-render function components with Hooks in DEV in StrictMode (facebook#14643) //<Dan Abramov>// - **[10a7a5b5c](facebook/react@10a7a5b5c )**: Fix synchronous thenable rejection (facebook#14633) //<Dan Abramov>// - **[a2fa6eb98](facebook/react@a2fa6eb98 )**: Move lazy._result assignment (facebook#14632) //<Dan Abramov>// - **[9120f6c2d](facebook/react@9120f6c2d )**: Support sync thenables for lazy() (facebook#14626) //<Dan Abramov>// - **[b66e6e41e](facebook/react@b66e6e41e )**: Add directory details to the package.json of all packages (facebook#14628) //<Grey Baker>// - **[177fb7635](facebook/react@177fb7635 )**: Warn when second callback is passed to setState/dispatch in Hooks (facebook#14625) //<Dan Abramov>// - **[d17d0b99c](facebook/react@d17d0b99c )**: Use public context.report interface in eslint rules (facebook#14623) //<Sebastian Silbermann>// - **[4f332885a](facebook/react@4f332885a )**: Fix shallow renderer set instance state after gDSFP before calling sCU (facebook#14613) //<Yi-Shan, Chen>// - **[e1cd83e49](facebook/react@e1cd83e49 )**: Throw an error when using hooks inside useMemo/useState/useReducer, or .memo's comparator (facebook#14608) //<Sunil Pai>// - **[be457ca68](facebook/react@be457ca68 )**: Small tweaks to SSR to match facebook#14594 (facebook#14618) //<Dan Abramov>// - **[17d70df91](facebook/react@17d70df91 )**: Warn when mixing createRoot() and old APIs (facebook#14615) //<Dan Abramov>// - **[4feab7fc9](facebook/react@4feab7fc9 )**: Add hooks support to ReactShallowRenderer (facebook#14567) //<Dominic Gannaway>// - **[1454a8be0](facebook/react@1454a8be0 )**: Don't bother comparing constructor when deps are not provided (facebook#14594) //<Andrew Clark>// - **[71b64d521](facebook/react@71b64d521 )**: Warn if number of hooks increases (facebook#14591) //<Andrew Clark>// - **[790c8ef04](facebook/react@790c8ef04 )**: Allow useReducer to bail out of rendering by returning previous state (facebook#14569) //<Andrew Clark>// - **[7ab8a8e97](facebook/react@7ab8a8e97 )**: Added Flow type to keep hooks dispatchers in-sync (facebook#14599) //<Brian Vaughn>// - **[4392e3821](facebook/react@4392e3821 )**: useDebugValue should throw if used in a class component (facebook#14601) //<Brian Vaughn>// - **[153a0b598](facebook/react@153a0b598 )**: Add noop useDebugValue hook to partial/server renderer (facebook#14597) //<Brian Vaughn>// - **[7ad9806d1](facebook/react@7ad9806d1 )**: Tweak to avoid property read (facebook#14593) //<Brandon Dail>// - **[0fc154751](facebook/react@0fc154751 )**: Avoid new Set([iterable]) for thenables (facebook#14592) //<Brandon Dail>// - **[edb1f5956](facebook/react@edb1f5956 )**: Support configurable labels for custom hooks (facebook#14559) //<Brian Vaughn>// - **[3e15b1c69](facebook/react@3e15b1c69 )**: make a fork for ReactCurrentDispatcher (facebook#14588) //<Sunil Pai>// - **[0005d1e3f](facebook/react@0005d1e3f )**: Fix typo (facebook#14576) //<Carl Mungazi>// - **[f290138d3](facebook/react@f290138d3 )**: react-debug-tools accepts currentDispatcher ref as param (facebook#14556) //<Brian Vaughn>// - **[b4ad8e947](facebook/react@b4ad8e947 )**: rename useImperativeMethods -> useImperativeHandle (facebook#14565) //<Sunil Pai>// - **[ab03e3d65](facebook/react@ab03e3d65 )**: Inject ReactCurrentDispatcher ref to DevTools (facebook#14550) //<Brian Vaughn>// - **[19ef0ec11](facebook/react@19ef0ec11 )**: Separate current owner and dispatcher (facebook#14548) //<Brian Vaughn>// - **[a9b035b0c](facebook/react@a9b035b0c )**: Separate Object.is polyfill (facebook#14334) //<Maksim Markelov>// - **[547e059f0](facebook/react@547e059f0 )**: Simplify wording of key warning (facebook#14503) //<Sophie Alpert>// - **[3494ee57e](facebook/react@3494ee57e )**: Update ReactUpdateQueue.js (facebook#14521) //<Carl Mungazi>// - **[659c13963](facebook/react@659c13963 )**: Update ReactFiberScheduler.js (facebook#14477) //<Carl Mungazi>// - **[c695b2384](facebook/react@c695b2384 )**: React v16.7.0 //<Andrew Clark>// - **[1c5aa2f23](facebook/react@1c5aa2f23 )**: Move SchedulerFeatureFlags fork to src directory to fix lint //<Andrew Clark>// - **[653bc582f](facebook/react@653bc582f )**: Create separate SchedulerFeatureFlags instead of using ReactFeatureFlags (facebook#14455) //<Andrew Clark>// - **[8bfef0da5](facebook/react@8bfef0da5 )**: Make scheduler debugging feature flag static //<Andrew Clark>// - **[4a1072194](facebook/react@4a1072194 )**: Memoize promise listeners to prevent exponential growth (facebook#14429) //<Andrew Clark>// - **[535804f5c](facebook/react@535804f5c )**: Removed Fabric-specific feature flag files and updated Rollup to use the (non-Fabric) React Native flag files. (facebook#14437) //<Brian Vaughn>// - **[2743fb7b2](facebook/react@2743fb7b2 )**: Enable hooks by default for FB React Native renderer (facebook#14435) //<Brian Vaughn>// - **[7325ebe4d](facebook/react@7325ebe4d )**: Inject overrideProps() fn to DevTools (facebook#14427) //<Brian Vaughn>// - **[a22880e5e](facebook/react@a22880e5e )**: Add support for Suspense & lazy() to the react-is package (facebook#14423) //<Pleun Vanderbauwhede>// - **[947bddd5c](facebook/react@947bddd5c )**: Remove redundant argument of getPlugins function (facebook#14419) //<Heaven>// - **[8df4d59be](facebook/react@8df4d59be )**: Implement pauseExecution, continueExecution, dumpQueue for Scheduler (facebook#14053) //<Kevin Chavez>// - **[5bb4ad737](facebook/react@5bb4ad737 )**: Added ErrorBoundary tests for useEffect and useLayoutEffect (facebook#14401) //<Brian Vaughn>// - **[98eb5ae53](facebook/react@98eb5ae53 )**: TestRenderer toJSON should not expose the Array wrapper Suspense uses for hidden trees (facebook#14392) //<Brian Vaughn>// - **[39489e767](facebook/react@39489e767 )**: Enable hooks in fabric (facebook#14301) //<Spencer Ahrens>// - **[1dc108e58](facebook/react@1dc108e58 )**: Tweaked wording for v8 "performance cliff" issue //<Brian Vaughn>// Release Notes: [GENERAL] [Changed] - React sync for revisions 6bf5e85...aa94237 (React 16.8.1) Differential Revision: D13976467 fbshipit-source-id: 72db51d098109081c19bce79129a7bb5932d77f5
Summary: This sync includes the following changes: - **[45fc46bfa](facebook/react@45fc46bfa )**: 16.8.1 packages //<Brian Vaughn>// - **[f2e2637c8](facebook/react@f2e2637c8 )**: Backwards compat fix for ReactCurrentDispatcher on older react versions (facebook#14770) //<Brian Vaughn>// - **[1107b9673](facebook/react@1107b9673 )**: [TestUtils.act] warn when using TestUtils.act in node (facebook#14768) //<Sunil Pai>// - **[0975ea327](facebook/react@0975ea327 )**: eslint-plugin-react-hooks v1.0.0 //<Brian Vaughn>// - **[bc9818f24](facebook/react@bc9818f24 )**: Scheduler.unstable_next (facebook#14756) //<Andrew Clark>// - **[ce6ecd3fb](facebook/react@ce6ecd3fb )**: Add 16.8.0 changelog and update some READMEs (facebook#14692) //<Dan Abramov>// - **[008a2ab9c](facebook/react@008a2ab9c )**: 16.8.0 //<Brian Vaughn>// - **[d1326f466](facebook/react@d1326f466 )**: [TestUtils.act] fix return result checking (facebook#14758) //<Sunil Pai>// - **[267ed9814](facebook/react@267ed9814 )**: expose `TestUtils.act()` for batching actions in tests (facebook#14744) //<Sunil Pai>// - **[fb3f7bfde](facebook/react@fb3f7bfde )**: Avoid importing Scheduler directly (facebook#14757) //<Andrew Clark>// - **[e602b5291](facebook/react@e602b5291 )**: Use SameValue instead of === to check for dispatchAction equivalence (facebook#14752) //<Jessica Franco>// - **[e489c3f9c](facebook/react@e489c3f9c )**: Update the version with Hooks proposal in README (facebook#14751) //<SToneX>// - **[c21c41ecf](facebook/react@c21c41ecf )**: Tweak invalid Hook warning and error (facebook#14747) //<Dan Abramov>// - **[fec00a869](facebook/react@fec00a869 )**: Typo in comment (facebook#14739) //<Deniz Susman>// - **[66eb29374](facebook/react@66eb29374 )**: Restrict effect return type to a function or nothing (facebook#14119) //<Andrew Clark>// - **[51c07912a](facebook/react@51c07912a )**: Warn when second argument is passed to useCallback (facebook#14729) //<Dan Abramov>// - **[70d407583](facebook/react@70d407583 )**: Move Hook mismatch warning to first mismatch site (facebook#14720) //<Andrew Clark>// - **[ba6477aa3](facebook/react@ba6477aa3 )**: Improve Reducer Hook's lazy init API (facebook#14723) //<Andrew Clark>// - **[cb1ff430e](facebook/react@cb1ff430e )**: Phased dispatcher (facebook#14701) //<Andrew Clark>// - **[9d483dcfd](facebook/react@9d483dcfd )**: Spelling abitrarily -> arbitrarily (facebook#14710) //<Peter Donald>// - **[e19c9e106](facebook/react@e19c9e106 )**: Fix issue with multiple code branches in hooks linter (facebook#14661) //<Yurick>// - **[f11a9c1cb](facebook/react@f11a9c1cb )**: State update bug in concurrent mode (facebook#14698) //<Brian Vaughn>// - **[e679a4b6e](facebook/react@e679a4b6e )**: Fix typo in code comment (facebook#14696) //<Greg Hurrell>// - **[8bcc88f2e](facebook/react@8bcc88f2e )**: Make all readContext() and Hook-in-a-Hook checks DEV-only (facebook#14677) //<Dan Abramov>// - **[6cb26774e](facebook/react@6cb26774e )**: Enable hooks! (facebook#14679) //<Brian Vaughn>// - **[73962c366](facebook/react@73962c366 )**: Revert "Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652)" (facebook#14654) //<Dan Abramov>// - **[994439228](facebook/react@994439228 )**: Put DEV-only code into DEV blocks (facebook#14673) //<Dan Abramov>// - **[f0befae65](facebook/react@f0befae65 )**: Tweak context invariant message (facebook#14671) //<Dan Abramov>// - **[a129259ad](facebook/react@a129259ad )**: Disallow reading context during useMemo etc (facebook#14653) //<Dan Abramov>// - **[c068d31cc](facebook/react@c068d31cc )**: Add unit tests for concurrent mode event dispatching (facebook#14415) //<Sebastian Markbåge>// - **[38247cba3](facebook/react@38247cba3 )**: --save is no longer needed (facebook#14302) //<SamCortopassi>// - **[3f0bcaf0d](facebook/react@3f0bcaf0d )**: Importing React for the first example. (facebook#14346) //<Ramón Chancay Ortega>// - **[ecd919a2f](facebook/react@ecd919a2f )**: RFC: warn when returning different hooks on subsequent renders (facebook#14585) //<Sunil Pai>// - **[3fbebb2a0](facebook/react@3fbebb2a0 )**: Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652) //<Dan Abramov>// - **[5fce6488c](facebook/react@5fce6488c )**: Revert "Disallow reading context during useMemo etc" (facebook#14651) //<Dan Abramov>// - **[fe2ecd276](facebook/react@fe2ecd276 )**: Add test coverage for readContext() on the server (facebook#14649) //<Dan Abramov>// - **[8f45a7fdc](facebook/react@8f45a7fdc )**: Warn about incorrect use of useImperativeHandle() (facebook#14647) //<Dan Abramov>// - **[1fcbd2243](facebook/react@1fcbd2243 )**: Disallow reading context during useMemo etc (facebook#14648) //<Dan Abramov>// - **[2a084f51a](facebook/react@2a084f51a )**: Warn about refs on lazy function components (facebook#14645) //<Dan Abramov>// - **[b5a3df6e8](facebook/react@b5a3df6e8 )**: Fix typo (facebook#14560) //<Linchengyi>// - **[9c146e675](facebook/react@9c146e675 )**: fix typo (facebook#14316) //<liunian>// - **[baa6d40fc](facebook/react@baa6d40fc )**: Mention forwardRef() in <Fn ref={...} /> errors and warnings (facebook#14644) //<Dan Abramov>// - **[a1414e894](facebook/react@a1414e894 )**: Double-render function components with Hooks in DEV in StrictMode (facebook#14643) //<Dan Abramov>// - **[10a7a5b5c](facebook/react@10a7a5b5c )**: Fix synchronous thenable rejection (facebook#14633) //<Dan Abramov>// - **[a2fa6eb98](facebook/react@a2fa6eb98 )**: Move lazy._result assignment (facebook#14632) //<Dan Abramov>// - **[9120f6c2d](facebook/react@9120f6c2d )**: Support sync thenables for lazy() (facebook#14626) //<Dan Abramov>// - **[b66e6e41e](facebook/react@b66e6e41e )**: Add directory details to the package.json of all packages (facebook#14628) //<Grey Baker>// - **[177fb7635](facebook/react@177fb7635 )**: Warn when second callback is passed to setState/dispatch in Hooks (facebook#14625) //<Dan Abramov>// - **[d17d0b99c](facebook/react@d17d0b99c )**: Use public context.report interface in eslint rules (facebook#14623) //<Sebastian Silbermann>// - **[4f332885a](facebook/react@4f332885a )**: Fix shallow renderer set instance state after gDSFP before calling sCU (facebook#14613) //<Yi-Shan, Chen>// - **[e1cd83e49](facebook/react@e1cd83e49 )**: Throw an error when using hooks inside useMemo/useState/useReducer, or .memo's comparator (facebook#14608) //<Sunil Pai>// - **[be457ca68](facebook/react@be457ca68 )**: Small tweaks to SSR to match facebook#14594 (facebook#14618) //<Dan Abramov>// - **[17d70df91](facebook/react@17d70df91 )**: Warn when mixing createRoot() and old APIs (facebook#14615) //<Dan Abramov>// - **[4feab7fc9](facebook/react@4feab7fc9 )**: Add hooks support to ReactShallowRenderer (facebook#14567) //<Dominic Gannaway>// - **[1454a8be0](facebook/react@1454a8be0 )**: Don't bother comparing constructor when deps are not provided (facebook#14594) //<Andrew Clark>// - **[71b64d521](facebook/react@71b64d521 )**: Warn if number of hooks increases (facebook#14591) //<Andrew Clark>// - **[790c8ef04](facebook/react@790c8ef04 )**: Allow useReducer to bail out of rendering by returning previous state (facebook#14569) //<Andrew Clark>// - **[7ab8a8e97](facebook/react@7ab8a8e97 )**: Added Flow type to keep hooks dispatchers in-sync (facebook#14599) //<Brian Vaughn>// - **[4392e3821](facebook/react@4392e3821 )**: useDebugValue should throw if used in a class component (facebook#14601) //<Brian Vaughn>// - **[153a0b598](facebook/react@153a0b598 )**: Add noop useDebugValue hook to partial/server renderer (facebook#14597) //<Brian Vaughn>// - **[7ad9806d1](facebook/react@7ad9806d1 )**: Tweak to avoid property read (facebook#14593) //<Brandon Dail>// - **[0fc154751](facebook/react@0fc154751 )**: Avoid new Set([iterable]) for thenables (facebook#14592) //<Brandon Dail>// - **[edb1f5956](facebook/react@edb1f5956 )**: Support configurable labels for custom hooks (facebook#14559) //<Brian Vaughn>// - **[3e15b1c69](facebook/react@3e15b1c69 )**: make a fork for ReactCurrentDispatcher (facebook#14588) //<Sunil Pai>// - **[0005d1e3f](facebook/react@0005d1e3f )**: Fix typo (facebook#14576) //<Carl Mungazi>// - **[f290138d3](facebook/react@f290138d3 )**: react-debug-tools accepts currentDispatcher ref as param (facebook#14556) //<Brian Vaughn>// - **[b4ad8e947](facebook/react@b4ad8e947 )**: rename useImperativeMethods -> useImperativeHandle (facebook#14565) //<Sunil Pai>// - **[ab03e3d65](facebook/react@ab03e3d65 )**: Inject ReactCurrentDispatcher ref to DevTools (facebook#14550) //<Brian Vaughn>// - **[19ef0ec11](facebook/react@19ef0ec11 )**: Separate current owner and dispatcher (facebook#14548) //<Brian Vaughn>// - **[a9b035b0c](facebook/react@a9b035b0c )**: Separate Object.is polyfill (facebook#14334) //<Maksim Markelov>// - **[547e059f0](facebook/react@547e059f0 )**: Simplify wording of key warning (facebook#14503) //<Sophie Alpert>// - **[3494ee57e](facebook/react@3494ee57e )**: Update ReactUpdateQueue.js (facebook#14521) //<Carl Mungazi>// - **[659c13963](facebook/react@659c13963 )**: Update ReactFiberScheduler.js (facebook#14477) //<Carl Mungazi>// - **[c695b2384](facebook/react@c695b2384 )**: React v16.7.0 //<Andrew Clark>// - **[1c5aa2f23](facebook/react@1c5aa2f23 )**: Move SchedulerFeatureFlags fork to src directory to fix lint //<Andrew Clark>// - **[653bc582f](facebook/react@653bc582f )**: Create separate SchedulerFeatureFlags instead of using ReactFeatureFlags (facebook#14455) //<Andrew Clark>// - **[8bfef0da5](facebook/react@8bfef0da5 )**: Make scheduler debugging feature flag static //<Andrew Clark>// - **[4a1072194](facebook/react@4a1072194 )**: Memoize promise listeners to prevent exponential growth (facebook#14429) //<Andrew Clark>// - **[535804f5c](facebook/react@535804f5c )**: Removed Fabric-specific feature flag files and updated Rollup to use the (non-Fabric) React Native flag files. (facebook#14437) //<Brian Vaughn>// - **[2743fb7b2](facebook/react@2743fb7b2 )**: Enable hooks by default for FB React Native renderer (facebook#14435) //<Brian Vaughn>// - **[7325ebe4d](facebook/react@7325ebe4d )**: Inject overrideProps() fn to DevTools (facebook#14427) //<Brian Vaughn>// - **[a22880e5e](facebook/react@a22880e5e )**: Add support for Suspense & lazy() to the react-is package (facebook#14423) //<Pleun Vanderbauwhede>// - **[947bddd5c](facebook/react@947bddd5c )**: Remove redundant argument of getPlugins function (facebook#14419) //<Heaven>// - **[8df4d59be](facebook/react@8df4d59be )**: Implement pauseExecution, continueExecution, dumpQueue for Scheduler (facebook#14053) //<Kevin Chavez>// - **[5bb4ad737](facebook/react@5bb4ad737 )**: Added ErrorBoundary tests for useEffect and useLayoutEffect (facebook#14401) //<Brian Vaughn>// - **[98eb5ae53](facebook/react@98eb5ae53 )**: TestRenderer toJSON should not expose the Array wrapper Suspense uses for hidden trees (facebook#14392) //<Brian Vaughn>// - **[39489e767](facebook/react@39489e767 )**: Enable hooks in fabric (facebook#14301) //<Spencer Ahrens>// - **[1dc108e58](facebook/react@1dc108e58 )**: Tweaked wording for v8 "performance cliff" issue //<Brian Vaughn>// Release Notes: [GENERAL] [Changed] - React sync for revisions 6bf5e85...aa94237 (React 16.8.1) Pull Request resolved: facebook#23320 Differential Revision: D13976467 fbshipit-source-id: 4d169f105c8964741cf3d8f9bc192d9955637cea
Summary: This sync includes the following changes: - **[45fc46bfa](facebook/react@45fc46bfa )**: 16.8.1 packages //<Brian Vaughn>// - **[f2e2637c8](facebook/react@f2e2637c8 )**: Backwards compat fix for ReactCurrentDispatcher on older react versions (facebook#14770) //<Brian Vaughn>// - **[1107b9673](facebook/react@1107b9673 )**: [TestUtils.act] warn when using TestUtils.act in node (facebook#14768) //<Sunil Pai>// - **[0975ea327](facebook/react@0975ea327 )**: eslint-plugin-react-hooks v1.0.0 //<Brian Vaughn>// - **[bc9818f24](facebook/react@bc9818f24 )**: Scheduler.unstable_next (facebook#14756) //<Andrew Clark>// - **[ce6ecd3fb](facebook/react@ce6ecd3fb )**: Add 16.8.0 changelog and update some READMEs (facebook#14692) //<Dan Abramov>// - **[008a2ab9c](facebook/react@008a2ab9c )**: 16.8.0 //<Brian Vaughn>// - **[d1326f466](facebook/react@d1326f466 )**: [TestUtils.act] fix return result checking (facebook#14758) //<Sunil Pai>// - **[267ed9814](facebook/react@267ed9814 )**: expose `TestUtils.act()` for batching actions in tests (facebook#14744) //<Sunil Pai>// - **[fb3f7bfde](facebook/react@fb3f7bfde )**: Avoid importing Scheduler directly (facebook#14757) //<Andrew Clark>// - **[e602b5291](facebook/react@e602b5291 )**: Use SameValue instead of === to check for dispatchAction equivalence (facebook#14752) //<Jessica Franco>// - **[e489c3f9c](facebook/react@e489c3f9c )**: Update the version with Hooks proposal in README (facebook#14751) //<SToneX>// - **[c21c41ecf](facebook/react@c21c41ecf )**: Tweak invalid Hook warning and error (facebook#14747) //<Dan Abramov>// - **[fec00a869](facebook/react@fec00a869 )**: Typo in comment (facebook#14739) //<Deniz Susman>// - **[66eb29374](facebook/react@66eb29374 )**: Restrict effect return type to a function or nothing (facebook#14119) //<Andrew Clark>// - **[51c07912a](facebook/react@51c07912a )**: Warn when second argument is passed to useCallback (facebook#14729) //<Dan Abramov>// - **[70d407583](facebook/react@70d407583 )**: Move Hook mismatch warning to first mismatch site (facebook#14720) //<Andrew Clark>// - **[ba6477aa3](facebook/react@ba6477aa3 )**: Improve Reducer Hook's lazy init API (facebook#14723) //<Andrew Clark>// - **[cb1ff430e](facebook/react@cb1ff430e )**: Phased dispatcher (facebook#14701) //<Andrew Clark>// - **[9d483dcfd](facebook/react@9d483dcfd )**: Spelling abitrarily -> arbitrarily (facebook#14710) //<Peter Donald>// - **[e19c9e106](facebook/react@e19c9e106 )**: Fix issue with multiple code branches in hooks linter (facebook#14661) //<Yurick>// - **[f11a9c1cb](facebook/react@f11a9c1cb )**: State update bug in concurrent mode (facebook#14698) //<Brian Vaughn>// - **[e679a4b6e](facebook/react@e679a4b6e )**: Fix typo in code comment (facebook#14696) //<Greg Hurrell>// - **[8bcc88f2e](facebook/react@8bcc88f2e )**: Make all readContext() and Hook-in-a-Hook checks DEV-only (facebook#14677) //<Dan Abramov>// - **[6cb26774e](facebook/react@6cb26774e )**: Enable hooks! (facebook#14679) //<Brian Vaughn>// - **[73962c366](facebook/react@73962c366 )**: Revert "Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652)" (facebook#14654) //<Dan Abramov>// - **[994439228](facebook/react@994439228 )**: Put DEV-only code into DEV blocks (facebook#14673) //<Dan Abramov>// - **[f0befae65](facebook/react@f0befae65 )**: Tweak context invariant message (facebook#14671) //<Dan Abramov>// - **[a129259ad](facebook/react@a129259ad )**: Disallow reading context during useMemo etc (facebook#14653) //<Dan Abramov>// - **[c068d31cc](facebook/react@c068d31cc )**: Add unit tests for concurrent mode event dispatching (facebook#14415) //<Sebastian Markbåge>// - **[38247cba3](facebook/react@38247cba3 )**: --save is no longer needed (facebook#14302) //<SamCortopassi>// - **[3f0bcaf0d](facebook/react@3f0bcaf0d )**: Importing React for the first example. (facebook#14346) //<Ramón Chancay Ortega>// - **[ecd919a2f](facebook/react@ecd919a2f )**: RFC: warn when returning different hooks on subsequent renders (facebook#14585) //<Sunil Pai>// - **[3fbebb2a0](facebook/react@3fbebb2a0 )**: Revert "Double-render function components with Hooks in DEV in StrictMode" (facebook#14652) //<Dan Abramov>// - **[5fce6488c](facebook/react@5fce6488c )**: Revert "Disallow reading context during useMemo etc" (facebook#14651) //<Dan Abramov>// - **[fe2ecd276](facebook/react@fe2ecd276 )**: Add test coverage for readContext() on the server (facebook#14649) //<Dan Abramov>// - **[8f45a7fdc](facebook/react@8f45a7fdc )**: Warn about incorrect use of useImperativeHandle() (facebook#14647) //<Dan Abramov>// - **[1fcbd2243](facebook/react@1fcbd2243 )**: Disallow reading context during useMemo etc (facebook#14648) //<Dan Abramov>// - **[2a084f51a](facebook/react@2a084f51a )**: Warn about refs on lazy function components (facebook#14645) //<Dan Abramov>// - **[b5a3df6e8](facebook/react@b5a3df6e8 )**: Fix typo (facebook#14560) //<Linchengyi>// - **[9c146e675](facebook/react@9c146e675 )**: fix typo (facebook#14316) //<liunian>// - **[baa6d40fc](facebook/react@baa6d40fc )**: Mention forwardRef() in <Fn ref={...} /> errors and warnings (facebook#14644) //<Dan Abramov>// - **[a1414e894](facebook/react@a1414e894 )**: Double-render function components with Hooks in DEV in StrictMode (facebook#14643) //<Dan Abramov>// - **[10a7a5b5c](facebook/react@10a7a5b5c )**: Fix synchronous thenable rejection (facebook#14633) //<Dan Abramov>// - **[a2fa6eb98](facebook/react@a2fa6eb98 )**: Move lazy._result assignment (facebook#14632) //<Dan Abramov>// - **[9120f6c2d](facebook/react@9120f6c2d )**: Support sync thenables for lazy() (facebook#14626) //<Dan Abramov>// - **[b66e6e41e](facebook/react@b66e6e41e )**: Add directory details to the package.json of all packages (facebook#14628) //<Grey Baker>// - **[177fb7635](facebook/react@177fb7635 )**: Warn when second callback is passed to setState/dispatch in Hooks (facebook#14625) //<Dan Abramov>// - **[d17d0b99c](facebook/react@d17d0b99c )**: Use public context.report interface in eslint rules (facebook#14623) //<Sebastian Silbermann>// - **[4f332885a](facebook/react@4f332885a )**: Fix shallow renderer set instance state after gDSFP before calling sCU (facebook#14613) //<Yi-Shan, Chen>// - **[e1cd83e49](facebook/react@e1cd83e49 )**: Throw an error when using hooks inside useMemo/useState/useReducer, or .memo's comparator (facebook#14608) //<Sunil Pai>// - **[be457ca68](facebook/react@be457ca68 )**: Small tweaks to SSR to match facebook#14594 (facebook#14618) //<Dan Abramov>// - **[17d70df91](facebook/react@17d70df91 )**: Warn when mixing createRoot() and old APIs (facebook#14615) //<Dan Abramov>// - **[4feab7fc9](facebook/react@4feab7fc9 )**: Add hooks support to ReactShallowRenderer (facebook#14567) //<Dominic Gannaway>// - **[1454a8be0](facebook/react@1454a8be0 )**: Don't bother comparing constructor when deps are not provided (facebook#14594) //<Andrew Clark>// - **[71b64d521](facebook/react@71b64d521 )**: Warn if number of hooks increases (facebook#14591) //<Andrew Clark>// - **[790c8ef04](facebook/react@790c8ef04 )**: Allow useReducer to bail out of rendering by returning previous state (facebook#14569) //<Andrew Clark>// - **[7ab8a8e97](facebook/react@7ab8a8e97 )**: Added Flow type to keep hooks dispatchers in-sync (facebook#14599) //<Brian Vaughn>// - **[4392e3821](facebook/react@4392e3821 )**: useDebugValue should throw if used in a class component (facebook#14601) //<Brian Vaughn>// - **[153a0b598](facebook/react@153a0b598 )**: Add noop useDebugValue hook to partial/server renderer (facebook#14597) //<Brian Vaughn>// - **[7ad9806d1](facebook/react@7ad9806d1 )**: Tweak to avoid property read (facebook#14593) //<Brandon Dail>// - **[0fc154751](facebook/react@0fc154751 )**: Avoid new Set([iterable]) for thenables (facebook#14592) //<Brandon Dail>// - **[edb1f5956](facebook/react@edb1f5956 )**: Support configurable labels for custom hooks (facebook#14559) //<Brian Vaughn>// - **[3e15b1c69](facebook/react@3e15b1c69 )**: make a fork for ReactCurrentDispatcher (facebook#14588) //<Sunil Pai>// - **[0005d1e3f](facebook/react@0005d1e3f )**: Fix typo (facebook#14576) //<Carl Mungazi>// - **[f290138d3](facebook/react@f290138d3 )**: react-debug-tools accepts currentDispatcher ref as param (facebook#14556) //<Brian Vaughn>// - **[b4ad8e947](facebook/react@b4ad8e947 )**: rename useImperativeMethods -> useImperativeHandle (facebook#14565) //<Sunil Pai>// - **[ab03e3d65](facebook/react@ab03e3d65 )**: Inject ReactCurrentDispatcher ref to DevTools (facebook#14550) //<Brian Vaughn>// - **[19ef0ec11](facebook/react@19ef0ec11 )**: Separate current owner and dispatcher (facebook#14548) //<Brian Vaughn>// - **[a9b035b0c](facebook/react@a9b035b0c )**: Separate Object.is polyfill (facebook#14334) //<Maksim Markelov>// - **[547e059f0](facebook/react@547e059f0 )**: Simplify wording of key warning (facebook#14503) //<Sophie Alpert>// - **[3494ee57e](facebook/react@3494ee57e )**: Update ReactUpdateQueue.js (facebook#14521) //<Carl Mungazi>// - **[659c13963](facebook/react@659c13963 )**: Update ReactFiberScheduler.js (facebook#14477) //<Carl Mungazi>// - **[c695b2384](facebook/react@c695b2384 )**: React v16.7.0 //<Andrew Clark>// - **[1c5aa2f23](facebook/react@1c5aa2f23 )**: Move SchedulerFeatureFlags fork to src directory to fix lint //<Andrew Clark>// - **[653bc582f](facebook/react@653bc582f )**: Create separate SchedulerFeatureFlags instead of using ReactFeatureFlags (facebook#14455) //<Andrew Clark>// - **[8bfef0da5](facebook/react@8bfef0da5 )**: Make scheduler debugging feature flag static //<Andrew Clark>// - **[4a1072194](facebook/react@4a1072194 )**: Memoize promise listeners to prevent exponential growth (facebook#14429) //<Andrew Clark>// - **[535804f5c](facebook/react@535804f5c )**: Removed Fabric-specific feature flag files and updated Rollup to use the (non-Fabric) React Native flag files. (facebook#14437) //<Brian Vaughn>// - **[2743fb7b2](facebook/react@2743fb7b2 )**: Enable hooks by default for FB React Native renderer (facebook#14435) //<Brian Vaughn>// - **[7325ebe4d](facebook/react@7325ebe4d )**: Inject overrideProps() fn to DevTools (facebook#14427) //<Brian Vaughn>// - **[a22880e5e](facebook/react@a22880e5e )**: Add support for Suspense & lazy() to the react-is package (facebook#14423) //<Pleun Vanderbauwhede>// - **[947bddd5c](facebook/react@947bddd5c )**: Remove redundant argument of getPlugins function (facebook#14419) //<Heaven>// - **[8df4d59be](facebook/react@8df4d59be )**: Implement pauseExecution, continueExecution, dumpQueue for Scheduler (facebook#14053) //<Kevin Chavez>// - **[5bb4ad737](facebook/react@5bb4ad737 )**: Added ErrorBoundary tests for useEffect and useLayoutEffect (facebook#14401) //<Brian Vaughn>// - **[98eb5ae53](facebook/react@98eb5ae53 )**: TestRenderer toJSON should not expose the Array wrapper Suspense uses for hidden trees (facebook#14392) //<Brian Vaughn>// - **[39489e767](facebook/react@39489e767 )**: Enable hooks in fabric (facebook#14301) //<Spencer Ahrens>// - **[1dc108e58](facebook/react@1dc108e58 )**: Tweaked wording for v8 "performance cliff" issue //<Brian Vaughn>// Release Notes: [GENERAL] [Changed] - React sync for revisions 6bf5e85...aa94237 (React 16.8.1) Pull Request resolved: facebook#23320 Differential Revision: D13976467 fbshipit-source-id: 9e11552268883db8672d11cf489d3a5949f498b7
Summary: allow-large-files This sync includes the following changes: - **[45fc46bfa](facebook/react@45fc46bfa )**: 16.8.1 packages //<Brian Vaughn>// - **[f2e2637c8](facebook/react@f2e2637c8 )**: Backwards compat fix for ReactCurrentDispatcher on older react versions (#14770) //<Brian Vaughn>// - **[1107b9673](facebook/react@1107b9673 )**: [TestUtils.act] warn when using TestUtils.act in node (#14768) //<Sunil Pai>// - **[0975ea327](facebook/react@0975ea327 )**: eslint-plugin-react-hooks v1.0.0 //<Brian Vaughn>// - **[bc9818f24](facebook/react@bc9818f24 )**: Scheduler.unstable_next (#14756) //<Andrew Clark>// - **[ce6ecd3fb](facebook/react@ce6ecd3fb )**: Add 16.8.0 changelog and update some READMEs (#14692) //<Dan Abramov>// - **[008a2ab9c](facebook/react@008a2ab9c )**: 16.8.0 //<Brian Vaughn>// - **[d1326f466](facebook/react@d1326f466 )**: [TestUtils.act] fix return result checking (#14758) //<Sunil Pai>// - **[267ed9814](facebook/react@267ed9814 )**: expose `TestUtils.act()` for batching actions in tests (#14744) //<Sunil Pai>// - **[fb3f7bfde](facebook/react@fb3f7bfde )**: Avoid importing Scheduler directly (#14757) //<Andrew Clark>// - **[e602b5291](facebook/react@e602b5291 )**: Use SameValue instead of === to check for dispatchAction equivalence (#14752) //<Jessica Franco>// - **[e489c3f9c](facebook/react@e489c3f9c )**: Update the version with Hooks proposal in README (#14751) //<SToneX>// - **[c21c41ecf](facebook/react@c21c41ecf )**: Tweak invalid Hook warning and error (#14747) //<Dan Abramov>// - **[fec00a869](facebook/react@fec00a869 )**: Typo in comment (#14739) //<Deniz Susman>// - **[66eb29374](facebook/react@66eb29374 )**: Restrict effect return type to a function or nothing (#14119) //<Andrew Clark>// - **[51c07912a](facebook/react@51c07912a )**: Warn when second argument is passed to useCallback (#14729) //<Dan Abramov>// - **[70d407583](facebook/react@70d407583 )**: Move Hook mismatch warning to first mismatch site (#14720) //<Andrew Clark>// - **[ba6477aa3](facebook/react@ba6477aa3 )**: Improve Reducer Hook's lazy init API (#14723) //<Andrew Clark>// - **[cb1ff430e](facebook/react@cb1ff430e )**: Phased dispatcher (#14701) //<Andrew Clark>// - **[9d483dcfd](facebook/react@9d483dcfd )**: Spelling abitrarily -> arbitrarily (#14710) //<Peter Donald>// - **[e19c9e106](facebook/react@e19c9e106 )**: Fix issue with multiple code branches in hooks linter (#14661) //<Yurick>// - **[f11a9c1cb](facebook/react@f11a9c1cb )**: State update bug in concurrent mode (#14698) //<Brian Vaughn>// - **[e679a4b6e](facebook/react@e679a4b6e )**: Fix typo in code comment (#14696) //<Greg Hurrell>// - **[8bcc88f2e](facebook/react@8bcc88f2e )**: Make all readContext() and Hook-in-a-Hook checks DEV-only (#14677) //<Dan Abramov>// - **[6cb26774e](facebook/react@6cb26774e )**: Enable hooks! (#14679) //<Brian Vaughn>// - **[73962c366](facebook/react@73962c366 )**: Revert "Revert "Double-render function components with Hooks in DEV in StrictMode" (#14652)" (#14654) //<Dan Abramov>// - **[994439228](facebook/react@994439228 )**: Put DEV-only code into DEV blocks (#14673) //<Dan Abramov>// - **[f0befae65](facebook/react@f0befae65 )**: Tweak context invariant message (#14671) //<Dan Abramov>// - **[a129259ad](facebook/react@a129259ad )**: Disallow reading context during useMemo etc (#14653) //<Dan Abramov>// - **[c068d31cc](facebook/react@c068d31cc )**: Add unit tests for concurrent mode event dispatching (#14415) //<Sebastian Markbåge>// - **[38247cba3](facebook/react@38247cba3 )**: --save is no longer needed (#14302) //<SamCortopassi>// - **[3f0bcaf0d](facebook/react@3f0bcaf0d )**: Importing React for the first example. (#14346) //<Ramón Chancay Ortega>// - **[ecd919a2f](facebook/react@ecd919a2f )**: RFC: warn when returning different hooks on subsequent renders (#14585) //<Sunil Pai>// - **[3fbebb2a0](facebook/react@3fbebb2a0 )**: Revert "Double-render function components with Hooks in DEV in StrictMode" (#14652) //<Dan Abramov>// - **[5fce6488c](facebook/react@5fce6488c )**: Revert "Disallow reading context during useMemo etc" (#14651) //<Dan Abramov>// - **[fe2ecd276](facebook/react@fe2ecd276 )**: Add test coverage for readContext() on the server (#14649) //<Dan Abramov>// - **[8f45a7fdc](facebook/react@8f45a7fdc )**: Warn about incorrect use of useImperativeHandle() (#14647) //<Dan Abramov>// - **[1fcbd2243](facebook/react@1fcbd2243 )**: Disallow reading context during useMemo etc (#14648) //<Dan Abramov>// - **[2a084f51a](facebook/react@2a084f51a )**: Warn about refs on lazy function components (#14645) //<Dan Abramov>// - **[b5a3df6e8](facebook/react@b5a3df6e8 )**: Fix typo (#14560) //<Linchengyi>// - **[9c146e675](facebook/react@9c146e675 )**: fix typo (#14316) //<liunian>// - **[baa6d40fc](facebook/react@baa6d40fc )**: Mention forwardRef() in <Fn ref={...} /> errors and warnings (#14644) //<Dan Abramov>// - **[a1414e894](facebook/react@a1414e894 )**: Double-render function components with Hooks in DEV in StrictMode (#14643) //<Dan Abramov>// - **[10a7a5b5c](facebook/react@10a7a5b5c )**: Fix synchronous thenable rejection (#14633) //<Dan Abramov>// - **[a2fa6eb98](facebook/react@a2fa6eb98 )**: Move lazy._result assignment (#14632) //<Dan Abramov>// - **[9120f6c2d](facebook/react@9120f6c2d )**: Support sync thenables for lazy() (#14626) //<Dan Abramov>// - **[b66e6e41e](facebook/react@b66e6e41e )**: Add directory details to the package.json of all packages (#14628) //<Grey Baker>// - **[177fb7635](facebook/react@177fb7635 )**: Warn when second callback is passed to setState/dispatch in Hooks (#14625) //<Dan Abramov>// - **[d17d0b99c](facebook/react@d17d0b99c )**: Use public context.report interface in eslint rules (#14623) //<Sebastian Silbermann>// - **[4f332885a](facebook/react@4f332885a )**: Fix shallow renderer set instance state after gDSFP before calling sCU (#14613) //<Yi-Shan, Chen>// - **[e1cd83e49](facebook/react@e1cd83e49 )**: Throw an error when using hooks inside useMemo/useState/useReducer, or .memo's comparator (#14608) //<Sunil Pai>// - **[be457ca68](facebook/react@be457ca68 )**: Small tweaks to SSR to match #14594 (#14618) //<Dan Abramov>// - **[17d70df91](facebook/react@17d70df91 )**: Warn when mixing createRoot() and old APIs (#14615) //<Dan Abramov>// - **[4feab7fc9](facebook/react@4feab7fc9 )**: Add hooks support to ReactShallowRenderer (#14567) //<Dominic Gannaway>// - **[1454a8be0](facebook/react@1454a8be0 )**: Don't bother comparing constructor when deps are not provided (#14594) //<Andrew Clark>// - **[71b64d521](facebook/react@71b64d521 )**: Warn if number of hooks increases (#14591) //<Andrew Clark>// - **[790c8ef04](facebook/react@790c8ef04 )**: Allow useReducer to bail out of rendering by returning previous state (#14569) //<Andrew Clark>// - **[7ab8a8e97](facebook/react@7ab8a8e97 )**: Added Flow type to keep hooks dispatchers in-sync (#14599) //<Brian Vaughn>// - **[4392e3821](facebook/react@4392e3821 )**: useDebugValue should throw if used in a class component (#14601) //<Brian Vaughn>// - **[153a0b598](facebook/react@153a0b598 )**: Add noop useDebugValue hook to partial/server renderer (#14597) //<Brian Vaughn>// - **[7ad9806d1](facebook/react@7ad9806d1 )**: Tweak to avoid property read (#14593) //<Brandon Dail>// - **[0fc154751](facebook/react@0fc154751 )**: Avoid new Set([iterable]) for thenables (#14592) //<Brandon Dail>// - **[edb1f5956](facebook/react@edb1f5956 )**: Support configurable labels for custom hooks (#14559) //<Brian Vaughn>// - **[3e15b1c69](facebook/react@3e15b1c69 )**: make a fork for ReactCurrentDispatcher (#14588) //<Sunil Pai>// - **[0005d1e3f](facebook/react@0005d1e3f )**: Fix typo (#14576) //<Carl Mungazi>// - **[f290138d3](facebook/react@f290138d3 )**: react-debug-tools accepts currentDispatcher ref as param (#14556) //<Brian Vaughn>// - **[b4ad8e947](facebook/react@b4ad8e947 )**: rename useImperativeMethods -> useImperativeHandle (#14565) //<Sunil Pai>// - **[ab03e3d65](facebook/react@ab03e3d65 )**: Inject ReactCurrentDispatcher ref to DevTools (#14550) //<Brian Vaughn>// - **[19ef0ec11](facebook/react@19ef0ec11 )**: Separate current owner and dispatcher (#14548) //<Brian Vaughn>// - **[a9b035b0c](facebook/react@a9b035b0c )**: Separate Object.is polyfill (#14334) //<Maksim Markelov>// - **[547e059f0](facebook/react@547e059f0 )**: Simplify wording of key warning (#14503) //<Sophie Alpert>// - **[3494ee57e](facebook/react@3494ee57e )**: Update ReactUpdateQueue.js (#14521) //<Carl Mungazi>// - **[659c13963](facebook/react@659c13963 )**: Update ReactFiberScheduler.js (#14477) //<Carl Mungazi>// - **[c695b2384](facebook/react@c695b2384 )**: React v16.7.0 //<Andrew Clark>// - **[1c5aa2f23](facebook/react@1c5aa2f23 )**: Move SchedulerFeatureFlags fork to src directory to fix lint //<Andrew Clark>// - **[653bc582f](facebook/react@653bc582f )**: Create separate SchedulerFeatureFlags instead of using ReactFeatureFlags (#14455) //<Andrew Clark>// - **[8bfef0da5](facebook/react@8bfef0da5 )**: Make scheduler debugging feature flag static //<Andrew Clark>// - **[4a1072194](facebook/react@4a1072194 )**: Memoize promise listeners to prevent exponential growth (#14429) //<Andrew Clark>// - **[535804f5c](facebook/react@535804f5c )**: Removed Fabric-specific feature flag files and updated Rollup to use the (non-Fabric) React Native flag files. (#14437) //<Brian Vaughn>// - **[2743fb7b2](facebook/react@2743fb7b2 )**: Enable hooks by default for FB React Native renderer (#14435) //<Brian Vaughn>// - **[7325ebe4d](facebook/react@7325ebe4d )**: Inject overrideProps() fn to DevTools (#14427) //<Brian Vaughn>// - **[a22880e5e](facebook/react@a22880e5e )**: Add support for Suspense & lazy() to the react-is package (#14423) //<Pleun Vanderbauwhede>// - **[947bddd5c](facebook/react@947bddd5c )**: Remove redundant argument of getPlugins function (#14419) //<Heaven>// - **[8df4d59be](facebook/react@8df4d59be )**: Implement pauseExecution, continueExecution, dumpQueue for Scheduler (#14053) //<Kevin Chavez>// - **[5bb4ad737](facebook/react@5bb4ad737 )**: Added ErrorBoundary tests for useEffect and useLayoutEffect (#14401) //<Brian Vaughn>// - **[98eb5ae53](facebook/react@98eb5ae53 )**: TestRenderer toJSON should not expose the Array wrapper Suspense uses for hidden trees (#14392) //<Brian Vaughn>// - **[39489e767](facebook/react@39489e767 )**: Enable hooks in fabric (#14301) //<Spencer Ahrens>// - **[1dc108e58](facebook/react@1dc108e58 )**: Tweaked wording for v8 "performance cliff" issue //<Brian Vaughn>// Release Notes: [GENERAL] [Changed] - React sync for revisions 6bf5e85...aa94237 (React 16.8.1) Pull Request resolved: #23320 Reviewed By: rickhanlonii Differential Revision: D13976467 fbshipit-source-id: 4ce198e86a54658e1c35aa36bffe4a7dc2956a2e
I'm gonna close this PR as unfortunately we didn't do a good job iterating on it in the past, and the original author isn't responsive any longer (sorry about that :( ). If anyone is coming across this PR, please patch it, rebase and make sure the tests are passing. |
I'm using a
<FlatList horizontal windowSize={1} initialNumToRender={1} initialScrollIndex={1} pagingEnabled />
(where each element is exactly the width of the screen).The existing calculation would always detect a window size of 2(!). Namely because checking [375, 375, 750, 750] would cause it to match the first element (of 0, 375) and second element (of 375, 750).
This causes the elements to be sized as (0, 374) and (375, 749), and in turn causes our search window to be [375, 375, 749, 749], which in turn would give a window size of exactly one, as expected.
In the case of natural scroll lists, this is essentially irrelevant. In the case of pagingEnabled lists, this can result in an extra frame being rendered, and since I'm dealing with performance issues, I'm trying to minimize over-draw (at least on initial render), and want to be sure it only prioritizes the one element on the screen.
I've verified (with my FlatList designed as above), that the window size is now only one-element large (as expected), and only has two elements when I am dragging the FlatList and it is showing two elements on screen simultaneously. I'm not sure if that's sufficient of a test plan here?