react icon indicating copy to clipboard operation
react copied to clipboard

Move string ref coercion to JSX runtime

Open acdlite opened this issue 2 years ago • 1 comments

Based on:

  • #28464

This moves the entire string ref implementation out Fiber and into the JSX runtime. The string is converted to a callback ref during element creation. This is a subtle change in behavior, because it will have already been converted to a callback ref if you access element.prop.ref or element.ref. But this is only for Meta, because string refs are disabled entirely in open source. And if it leads to an issue in practice, the solution is to switch to a different ref type, which Meta is going to do regardless.

acdlite avatar Feb 29 '24 18:02 acdlite

Comparing: fd0da3eef1e23b7dd5071fef21de414da8e5038e...880ccbd85a8ff168a38ef3b19223d3ac7bb5b217

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.min.js = 168.88 kB 168.88 kB = 52.68 kB 52.69 kB
oss-experimental/react-dom/cjs/react-dom.production.min.js = 170.69 kB 170.69 kB = 53.23 kB 53.24 kB
facebook-www/ReactDOM-prod.classic.js = 591.32 kB 590.15 kB = 103.85 kB 103.60 kB
facebook-www/ReactDOM-prod.modern.js = 567.65 kB 566.48 kB = 99.80 kB 99.56 kB
facebook-react-native/react/cjs/JSXRuntime-prod.js +70.42% 1.64 kB 2.80 kB +58.54% 0.77 kB 1.22 kB
facebook-react-native/react/cjs/JSXRuntime-profiling.js +70.42% 1.64 kB 2.80 kB +58.54% 0.77 kB 1.22 kB
facebook-www/JSXDEVRuntime-dev.modern.js +15.49% 50.73 kB 58.59 kB +11.20% 13.29 kB 14.78 kB
facebook-www/JSXDEVRuntime-dev.classic.js +15.43% 50.73 kB 58.56 kB +11.15% 13.29 kB 14.77 kB
facebook-react-native/react/cjs/JSXDEVRuntime-dev.js +15.26% 48.40 kB 55.79 kB +10.71% 12.81 kB 14.18 kB
facebook-react-native/react/cjs/JSXRuntime-dev.js +14.83% 49.81 kB 57.20 kB +10.55% 13.17 kB 14.56 kB
facebook-www/React-prod.modern.js +10.08% 21.17 kB 23.30 kB +11.27% 5.26 kB 5.86 kB
facebook-www/React-prod.classic.js +10.08% 21.17 kB 23.30 kB +11.26% 5.27 kB 5.86 kB
facebook-www/React-profiling.modern.js +9.87% 21.60 kB 23.73 kB +11.12% 5.34 kB 5.94 kB
facebook-www/React-profiling.classic.js +9.87% 21.60 kB 23.74 kB +11.13% 5.34 kB 5.94 kB
facebook-www/ReactServer-dev.modern.js +9.10% 94.62 kB 103.23 kB +7.02% 22.47 kB 24.05 kB
facebook-www/ReactServer-prod.modern.js +8.24% 17.81 kB 19.28 kB +6.01% 4.63 kB 4.90 kB
facebook-react-native/react/cjs/React-prod.js +7.42% 20.81 kB 22.35 kB +10.11% 5.21 kB 5.73 kB
facebook-react-native/react/cjs/React-profiling.js +7.27% 21.24 kB 22.79 kB +10.04% 5.28 kB 5.81 kB
facebook-www/React-dev.modern.js +6.86% 125.52 kB 134.13 kB +5.32% 29.62 kB 31.19 kB
facebook-www/React-dev.classic.js +6.80% 126.10 kB 134.68 kB +5.32% 29.72 kB 31.30 kB
facebook-react-native/react/cjs/React-dev.js +6.16% 124.17 kB 131.81 kB +4.65% 29.31 kB 30.67 kB
test_utils/ReactAllWarnings.js Deleted 64.04 kB 0.00 kB Deleted 16.02 kB 0.00 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
facebook-react-native/react/cjs/JSXRuntime-prod.js +70.42% 1.64 kB 2.80 kB +58.54% 0.77 kB 1.22 kB
facebook-react-native/react/cjs/JSXRuntime-profiling.js +70.42% 1.64 kB 2.80 kB +58.54% 0.77 kB 1.22 kB
facebook-www/JSXDEVRuntime-dev.modern.js +15.49% 50.73 kB 58.59 kB +11.20% 13.29 kB 14.78 kB
facebook-www/JSXDEVRuntime-dev.classic.js +15.43% 50.73 kB 58.56 kB +11.15% 13.29 kB 14.77 kB
facebook-react-native/react/cjs/JSXDEVRuntime-dev.js +15.26% 48.40 kB 55.79 kB +10.71% 12.81 kB 14.18 kB
facebook-react-native/react/cjs/JSXRuntime-dev.js +14.83% 49.81 kB 57.20 kB +10.55% 13.17 kB 14.56 kB
facebook-www/React-prod.modern.js +10.08% 21.17 kB 23.30 kB +11.27% 5.26 kB 5.86 kB
facebook-www/React-prod.classic.js +10.08% 21.17 kB 23.30 kB +11.26% 5.27 kB 5.86 kB
facebook-www/React-profiling.modern.js +9.87% 21.60 kB 23.73 kB +11.12% 5.34 kB 5.94 kB
facebook-www/React-profiling.classic.js +9.87% 21.60 kB 23.74 kB +11.13% 5.34 kB 5.94 kB
facebook-www/ReactServer-dev.modern.js +9.10% 94.62 kB 103.23 kB +7.02% 22.47 kB 24.05 kB
facebook-www/ReactServer-prod.modern.js +8.24% 17.81 kB 19.28 kB +6.01% 4.63 kB 4.90 kB
facebook-react-native/react/cjs/React-prod.js +7.42% 20.81 kB 22.35 kB +10.11% 5.21 kB 5.73 kB
facebook-react-native/react/cjs/React-profiling.js +7.27% 21.24 kB 22.79 kB +10.04% 5.28 kB 5.81 kB
facebook-www/React-dev.modern.js +6.86% 125.52 kB 134.13 kB +5.32% 29.62 kB 31.19 kB
facebook-www/React-dev.classic.js +6.80% 126.10 kB 134.68 kB +5.32% 29.72 kB 31.30 kB
facebook-react-native/react/cjs/React-dev.js +6.16% 124.17 kB 131.81 kB +4.65% 29.31 kB 30.67 kB
oss-experimental/react/cjs/react-jsx-runtime.profiling.js +0.40% 4.49 kB 4.51 kB +0.25% 2.03 kB 2.04 kB
oss-stable-semver/react/cjs/react-jsx-runtime.profiling.js +0.40% 4.49 kB 4.51 kB +0.25% 2.03 kB 2.04 kB
oss-stable/react/cjs/react-jsx-runtime.profiling.js +0.40% 4.49 kB 4.51 kB +0.25% 2.03 kB 2.04 kB
oss-experimental/react/cjs/react-jsx-runtime.production.js +0.40% 4.49 kB 4.51 kB +0.30% 2.03 kB 2.04 kB
oss-stable-semver/react/cjs/react-jsx-runtime.production.js +0.40% 4.49 kB 4.51 kB +0.30% 2.03 kB 2.04 kB
oss-stable/react/cjs/react-jsx-runtime.production.js +0.40% 4.49 kB 4.51 kB +0.30% 2.03 kB 2.04 kB
oss-experimental/react/cjs/react-jsx-runtime.react-server.production.js +0.39% 4.56 kB 4.58 kB +0.34% 2.05 kB 2.05 kB
oss-stable-semver/react/cjs/react-jsx-runtime.react-server.production.js +0.39% 4.56 kB 4.58 kB +0.34% 2.05 kB 2.05 kB
oss-stable/react/cjs/react-jsx-runtime.react-server.production.js +0.39% 4.56 kB 4.58 kB +0.34% 2.05 kB 2.05 kB
facebook-www/ReactDOMTesting-prod.modern.js = 583.41 kB 582.23 kB = 103.70 kB 103.45 kB
facebook-www/ReactDOM-prod.modern.js = 567.65 kB 566.48 kB = 99.80 kB 99.56 kB
facebook-www/ReactDOMTesting-dev.classic.js = 1,699.40 kB 1,694.01 kB = 337.50 kB 336.28 kB
facebook-www/ReactART-prod.classic.js = 366.69 kB 365.52 kB = 61.81 kB 61.54 kB
facebook-www/ReactDOM-dev.classic.js = 1,677.63 kB 1,672.24 kB = 332.89 kB 331.63 kB
facebook-www/ReactDOMTesting-dev.modern.js = 1,646.39 kB 1,641.00 kB = 328.11 kB 326.89 kB
facebook-www/ReactDOM-dev.modern.js = 1,625.91 kB 1,620.52 kB = 323.71 kB 322.48 kB
facebook-www/ReactART-prod.modern.js = 348.28 kB 347.10 kB = 58.89 kB 58.63 kB
react-native/implementations/ReactNativeRenderer-dev.fb.js = 1,111.68 kB 1,107.75 kB = 221.19 kB 220.40 kB
react-native/implementations/ReactFabric-dev.fb.js = 1,097.07 kB 1,093.13 kB = 217.31 kB 216.48 kB
facebook-www/ReactTestRenderer-dev.classic.js = 967.97 kB 964.49 kB = 192.07 kB 191.30 kB
facebook-www/ReactTestRenderer-dev.modern.js = 967.97 kB 964.49 kB = 192.07 kB 191.30 kB
facebook-react-native/react-test-renderer/cjs/ReactTestRenderer-dev.js = 962.95 kB 959.47 kB = 189.74 kB 188.96 kB
react-native/implementations/ReactNativeRenderer-dev.js = 1,001.45 kB 997.52 kB = 200.12 kB 199.27 kB
react-native/implementations/ReactFabric-dev.js = 986.56 kB 982.63 kB = 196.36 kB 195.58 kB
react-native/implementations/ReactNativeRenderer-profiling.fb.js = 402.13 kB 400.03 kB = 69.83 kB 69.27 kB
react-native/implementations/ReactFabric-profiling.fb.js = 394.67 kB 392.57 kB = 68.54 kB 67.96 kB
react-native/implementations/ReactNativeRenderer-prod.fb.js = 374.82 kB 372.72 kB = 65.63 kB 65.08 kB
react-native/implementations/ReactFabric-prod.fb.js = 367.43 kB 365.33 kB = 64.35 kB 63.78 kB
react-native/implementations/ReactNativeRenderer-profiling.js = 346.60 kB 344.50 kB = 60.18 kB 59.59 kB
facebook-react-native/react-test-renderer/cjs/ReactTestRenderer-profiling.js = 340.06 kB 337.96 kB = 59.09 kB 58.53 kB
react-native/implementations/ReactFabric-profiling.js = 337.10 kB 335.00 kB = 58.52 kB 57.91 kB
react-native/implementations/ReactNativeRenderer-prod.js = 319.53 kB 317.43 kB = 55.96 kB 55.38 kB
facebook-react-native/react-test-renderer/cjs/ReactTestRenderer-prod.js = 316.30 kB 314.21 kB = 55.67 kB 55.11 kB
react-native/implementations/ReactFabric-prod.js = 310.78 kB 308.68 kB = 54.45 kB 53.85 kB
facebook-www/ReactART-dev.classic.js = 1,079.46 kB 1,071.23 kB = 210.82 kB 208.53 kB
facebook-www/ReactART-dev.modern.js = 1,045.81 kB 1,037.58 kB = 204.78 kB 202.46 kB
test_utils/ReactAllWarnings.js Deleted 64.04 kB 0.00 kB Deleted 16.02 kB 0.00 kB

Generated by :no_entry_sign: dangerJS against 880ccbd85a8ff168a38ef3b19223d3ac7bb5b217

react-sizebot avatar Feb 29 '24 18:02 react-sizebot