Skip to content

Move passive logic out of layout phase#19500

Merged
acdlite merged 3 commits into
facebook:masterfrom
acdlite:move-passive-logic-out-of-layout-phase
Jul 31, 2020
Merged

Move passive logic out of layout phase#19500
acdlite merged 3 commits into
facebook:masterfrom
acdlite:move-passive-logic-out-of-layout-phase

Conversation

@acdlite
Copy link
Copy Markdown
Collaborator

@acdlite acdlite commented Jul 30, 2020

tl;dr

Some minor refactoring so that I can delete effect.tag |= HookHasEffect from the synchronous deletion path.


We don't need to check HookHasEffect during a deletion; all effects are unmounted.

So we also don't have to set HookHasEffect during a deletion, either.

This allows us to remove the last remaining passive effect logic from the synchronous layout phase. (For deletions; there's still some passive logic in the layout phase for mounts/updates that we've yet to remove.)

acdlite added 3 commits July 30, 2020 16:38
Part of the code in flushPassiveUnmountEffects is a duplicate of the
code used for unmounting layout effects. I did some minor refactoring to
so we could use the same function in both places.

Closure will inline anyway so it doesn't affect code size or
performance, just maintainability.
We don't need to check HookHasEffect during a deletion; all effects are
unmounted.

So we also don't have to set HookHasEffect during a deletion, either.

This allows us to remove the last remaining passive effect logic from
the synchronous layout phase.
@acdlite acdlite requested a review from bvaughn July 30, 2020 21:44
@facebook-github-bot facebook-github-bot added CLA Signed React Core Team Opened by a member of the React Core Team labels Jul 30, 2020
@codesandbox-ci
Copy link
Copy Markdown

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit fd7e0e0:

Sandbox Source
React Configuration

@sizebot
Copy link
Copy Markdown

sizebot commented Jul 30, 2020

Details of bundled changes.

Comparing: 22d16cc...fd7e0e0

react-dom

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-dom.development.js 0.0% -0.0% 916.65 KB 916.65 KB 208.54 KB 208.53 KB NODE_DEV
ReactDOMForked-prod.js -0.0% -0.0% 399.01 KB 398.88 KB 74 KB 73.98 KB FB_WWW_PROD
react-dom.production.min.js 0.0% -0.0% 124.16 KB 124.16 KB 39.8 KB 39.8 KB NODE_PROD
ReactDOMForked-profiling.js -0.1% -0.0% 414.51 KB 414.13 KB 76.75 KB 76.73 KB FB_WWW_PROFILING
react-dom-server.browser.development.js 0.0% -0.0% 145.06 KB 145.06 KB 36.91 KB 36.91 KB UMD_DEV
react-dom-server.node.production.min.js 0.0% -0.0% 20.72 KB 20.72 KB 7.68 KB 7.67 KB NODE_PROD
react-dom-test-utils.production.min.js 0.0% -0.0% 12.86 KB 12.86 KB 5.04 KB 5.04 KB UMD_PROD
ReactDOMTesting-dev.js 0.0% -0.0% 951.89 KB 951.89 KB 213.58 KB 213.58 KB FB_WWW_DEV
react-dom-test-utils.development.js 0.0% -0.0% 60.89 KB 60.89 KB 17.66 KB 17.65 KB NODE_DEV
react-dom-unstable-fizz.node.development.js 0.0% +0.1% 5.61 KB 5.61 KB 1.86 KB 1.86 KB NODE_DEV
react-dom-test-utils.production.min.js 0.0% -0.0% 12.71 KB 12.71 KB 4.97 KB 4.97 KB NODE_PROD
react-dom-unstable-fizz.browser.development.js 0.0% -0.2% 5.36 KB 5.36 KB 1.8 KB 1.8 KB UMD_DEV
react-dom-unstable-fizz.browser.production.min.js 0.0% -0.1% 1.2 KB 1.2 KB 705 B 704 B UMD_PROD
react-dom-unstable-fizz.browser.development.js 0.0% -0.1% 4.87 KB 4.87 KB 1.71 KB 1.7 KB NODE_DEV
react-dom.development.js 0.0% -0.0% 962.99 KB 962.99 KB 211.16 KB 211.16 KB UMD_DEV
react-dom-unstable-fizz.browser.production.min.js 0.0% -0.2% 1.01 KB 1.01 KB 616 B 615 B NODE_PROD
react-dom.production.min.js 0.0% -0.0% 124.03 KB 124.03 KB 40.55 KB 40.55 KB UMD_PROD
react-dom.profiling.min.js 0.0% -0.0% 129.22 KB 129.22 KB 42.19 KB 42.19 KB UMD_PROFILING
ReactDOMForked-dev.js -0.0% -0.0% 994.56 KB 994.1 KB 221.31 KB 221.3 KB FB_WWW_DEV
react-dom.profiling.min.js 0.0% -0.0% 129.55 KB 129.55 KB 41.45 KB 41.45 KB NODE_PROFILING
ReactDOM-dev.js 0.0% -0.0% 986.74 KB 986.74 KB 220.34 KB 220.34 KB FB_WWW_DEV
ReactDOM-prod.js 0.0% -0.0% 395.14 KB 395.14 KB 73.39 KB 73.38 KB FB_WWW_PROD
react-dom-server.browser.development.js 0.0% -0.0% 137.6 KB 137.6 KB 36.47 KB 36.47 KB NODE_DEV
ReactDOM-profiling.js 0.0% -0.0% 409.54 KB 409.54 KB 76.02 KB 76.02 KB FB_WWW_PROFILING
react-dom-server.browser.production.min.js 0.0% -0.0% 20.3 KB 20.3 KB 7.52 KB 7.52 KB NODE_PROD
ReactDOMServer-dev.js 0.0% -0.0% 143.44 KB 143.44 KB 36.48 KB 36.48 KB FB_WWW_DEV
react-dom-test-utils.development.js 0.0% -0.0% 65.91 KB 65.91 KB 18.18 KB 18.18 KB UMD_DEV

ReactDOM: size: 0.0%, gzip: -0.0%

Size changes (experimental)

Generated by 🚫 dangerJS against fd7e0e0

@sizebot
Copy link
Copy Markdown

sizebot commented Jul 30, 2020

Details of bundled changes.

Comparing: 22d16cc...fd7e0e0

react-dom

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
ReactDOMForked-prod.js -0.0% -0.0% 410.15 KB 410.02 KB 75.67 KB 75.65 KB FB_WWW_PROD
react-dom-server.node.development.js 0.0% -0.0% 137.36 KB 137.36 KB 36.5 KB 36.5 KB NODE_DEV
react-dom.production.min.js 0.0% -0.0% 119.37 KB 119.37 KB 38.38 KB 38.38 KB NODE_PROD
ReactDOMForked-profiling.js -0.1% -0.0% 425.71 KB 425.33 KB 78.39 KB 78.37 KB FB_WWW_PROFILING
react-dom-server.browser.development.js 0.0% -0.0% 143.48 KB 143.48 KB 36.71 KB 36.71 KB UMD_DEV
react-dom-test-utils.production.min.js 0.0% -0.0% 12.84 KB 12.84 KB 5.03 KB 5.03 KB UMD_PROD
ReactDOMTesting-dev.js 0.0% -0.0% 980.05 KB 980.05 KB 218.99 KB 218.98 KB FB_WWW_DEV
react-dom-test-utils.development.js 0.0% -0.0% 60.88 KB 60.88 KB 17.65 KB 17.65 KB NODE_DEV
ReactDOMTesting-prod.js 0.0% -0.0% 414.77 KB 414.77 KB 77.65 KB 77.65 KB FB_WWW_PROD
react-dom.development.js 0.0% -0.0% 924.08 KB 924.08 KB 204.29 KB 204.29 KB UMD_DEV
react-dom.production.min.js 0.0% -0.0% 119.31 KB 119.31 KB 39.08 KB 39.08 KB UMD_PROD
react-dom.profiling.min.js 0.0% -0.0% 123.21 KB 123.21 KB 40.28 KB 40.28 KB UMD_PROFILING
ReactDOMForked-dev.js -0.0% -0.0% 1020.1 KB 1019.64 KB 226.04 KB 226.03 KB FB_WWW_DEV
react-dom.profiling.min.js 0.0% -0.0% 123.44 KB 123.44 KB 39.63 KB 39.63 KB NODE_PROFILING
react-dom-server.browser.production.min.js 0.0% -0.0% 19.92 KB 19.92 KB 7.46 KB 7.46 KB UMD_PROD
ReactDOM-dev.js 0.0% -0.0% 1012.29 KB 1012.29 KB 225.03 KB 225.03 KB FB_WWW_DEV
ReactDOM-prod.js 0.0% -0.0% 406.27 KB 406.27 KB 75.03 KB 75.03 KB FB_WWW_PROD
react-dom-server.browser.development.js 0.0% -0.0% 136.09 KB 136.09 KB 36.26 KB 36.25 KB NODE_DEV
ReactDOM-profiling.js 0.0% -0.0% 420.73 KB 420.73 KB 77.66 KB 77.66 KB FB_WWW_PROFILING
react-dom-server.browser.production.min.js 0.0% -0.0% 19.84 KB 19.84 KB 7.44 KB 7.44 KB NODE_PROD
ReactDOMServer-dev.js 0.0% -0.0% 147.47 KB 147.47 KB 37.48 KB 37.48 KB FB_WWW_DEV
react-dom-test-utils.development.js 0.0% -0.0% 65.9 KB 65.9 KB 18.18 KB 18.17 KB UMD_DEV

ReactDOM: size: 0.0%, gzip: -0.0%

Size changes (stable)

Generated by 🚫 dangerJS against fd7e0e0

@acdlite
Copy link
Copy Markdown
Collaborator Author

acdlite commented Jul 30, 2020

It's really only the third commit that's interesting. The first two are minor factoring changes that I noticed and didn't feel like opening a separate PR for.

@acdlite acdlite merged commit ede9170 into facebook:master Jul 31, 2020
Copy link
Copy Markdown
Contributor

@bvaughn bvaughn left a comment

Choose a reason for hiding this comment

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

Nice cleanup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants