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

[Fizz/Float] Float for stylesheet resources #25243

Merged
merged 35 commits into from
Sep 30, 2022
Merged

Conversation

gnoff
Copy link
Collaborator

@gnoff gnoff commented Sep 12, 2022

This is a brief overview of Resources and how they operate when Float is turned on

A React Resource represents a Browser Resource such as a stylehseet, font, script, or other entity that can be represented by a URL or something analagous like an inline style or script which substitutes for a Browser Resource.

A Resource dependency is when you tell React you need a Resource to be loaded and if that dependency is within a Suspense boundary you may want that boundary to wait until it is ready before revealing itself. The suspensy nature of resources is not yet implemented clientside however it does work for boundary reveals that are streamed in from the server runtime if using the new streaming apis.

Currently (this PR) the only two resources that are supported are

  1. stylesheet
  2. font

more will be introduced soon.

When you render a dom element like <link rel="stylesheet" .../> and Float is enabled React will attempt to preload it and dedupe it. If you end up rendering multiple links to the same href there will only be 1 link in the DOM.

In addition, two new functions exist to allow other ways to initiate loading and preloading of resources

ReactDOM.preload(href, options)

this function will attempt to preload the resource at the href immediately.

ReactDOM.preinit(href, options)

this function will attempt to insert a resource at the specified href immediately and if it cannot do so it will fall back to preloading it. This function is useful for getting a Resource to be loaded but does not represent a Resource dependency so if you call it during a Component render it won't make Suspense boundary around that component wait for the resource to load if in fallback mode and otherwise ready to reveal.

General Resource Notes

  1. Deduping or otherwise breaking the general 1 to 1 relationship between what is renderered in your app and what appears in the DOM can make certain props problematic. For instance the onLoad prop for a stylesheet. If that stylesheet already existed in the DOM there will be no 'load' event. Do we replay a previous event and try to simulate a non-deduped resource envrionment? Rather than make the library larger trying to handle these edge cases we use the presence of certain props as opt-outs or opt-ins to Resource semantics.

If you include onLoad or onError props for any potential Resource it will render as a component instead.
If you include disabled for a style resource it will render as a component instead.

  1. All instances of a Resource (Resource dependencies or calls to Preinit) must have props that agree. React will only ever use the props it found the first time a Resource was encountered and you will be warned if you do provide props that differ in Dev. In Production new props will be ignored except in cases where the href changes which acts like a new Resource.

Stylesheet Resource Notes

Stylesheets are a special kind of resource because their order in the document matters quite a bit and they are not fire-and-forget like scripts so they need to load/unload at predictable and coordinated times.

Your styles should be scoped (CSS Modules for instance) or order-independent (see various atomic css libraries). The reas for this is we can coordinate revealing content by adding missing resources and listening for their load event but we cannot easily remove styles that are no longer being referred to in a coordinated fashion. The reasons for this limitation have to do with selective hydration and the nature of streaming rendering on the server

Additionally while you may depend on a style Resource deep in your component tree it will be hoisted to the document head and ordered among other style resources. You can describe the ordering by providing a precedence prop (componet) or option (preinit call). Precedence works a lot like CSS layers where the values are arbitrary and the ordering is earlier discovered precedences appear before later ones.

Because the constraints on the kinds of CSS that are appropriate for Resource semantics are non-trivial the only way to opt into Resource behavior is to provide a precedence value when rendering a link tag. If a stylesheet link is found without a precedence it will be treated exactly the way it is today before this change.

@sizebot
Copy link

sizebot commented Sep 14, 2022

Comparing: abbbdf4...1ccdb00

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 +0.14% 135.28 kB 135.47 kB +0.03% 43.39 kB 43.41 kB
oss-experimental/react-dom/cjs/react-dom.production.min.js +3.38% 142.91 kB 147.73 kB +3.41% 45.61 kB 47.17 kB
facebook-www/ReactDOM-prod.classic.js +0.05% 491.42 kB 491.69 kB +0.05% 87.45 kB 87.49 kB
facebook-www/ReactDOM-prod.modern.js +0.06% 476.71 kB 476.98 kB = 85.25 kB 85.24 kB
facebook-www/ReactDOMForked-prod.classic.js +0.05% 491.42 kB 491.69 kB +0.05% 87.45 kB 87.49 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +21.34% 37.22 kB 45.17 kB +16.18% 12.33 kB 14.33 kB
oss-experimental/react-dom/umd/react-dom-server-legacy.browser.production.min.js +21.21% 37.34 kB 45.26 kB +16.24% 12.49 kB 14.52 kB
oss-experimental/react-dom/cjs/react-dom-static.browser.production.min.js +20.90% 37.95 kB 45.88 kB +15.86% 12.99 kB 15.05 kB
oss-experimental/react-dom/cjs/react-dom-server.browser.production.min.js +20.84% 38.07 kB 46.00 kB +15.80% 13.03 kB 15.09 kB
oss-experimental/react-dom/umd/react-dom-server.browser.production.min.js +20.70% 38.17 kB 46.07 kB +15.98% 13.17 kB 15.27 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.node.production.min.js +19.60% 41.25 kB 49.33 kB +14.90% 13.55 kB 15.57 kB
oss-experimental/react-dom/cjs/react-dom-static.node.production.min.js +19.31% 41.72 kB 49.77 kB +14.56% 14.15 kB 16.21 kB
oss-experimental/react-dom/cjs/react-dom-server.node.production.min.js +19.31% 41.75 kB 49.81 kB +14.40% 14.18 kB 16.22 kB
oss-experimental/react-dom/cjs/react-dom-static.browser.development.js +16.58% 255.96 kB 298.40 kB +14.78% 62.07 kB 71.25 kB
oss-experimental/react-dom/cjs/react-dom-server.browser.development.js +16.54% 256.65 kB 299.10 kB +14.73% 62.27 kB 71.44 kB
oss-experimental/react-dom/umd/react-dom-server.browser.development.js +16.53% 269.19 kB 313.69 kB +14.57% 62.99 kB 72.17 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.browser.development.js +16.50% 257.64 kB 300.16 kB +14.86% 62.13 kB 71.37 kB
oss-experimental/react-dom/umd/react-dom-server-legacy.browser.development.js +16.50% 270.19 kB 314.77 kB +14.71% 62.88 kB 72.13 kB
oss-experimental/react-dom/cjs/react-dom-static.node.development.js +16.46% 257.85 kB 300.30 kB +14.73% 62.28 kB 71.45 kB
oss-experimental/react-dom/cjs/react-dom-server.node.development.js +16.46% 257.89 kB 300.34 kB +14.76% 62.18 kB 71.36 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.node.development.js +16.40% 259.35 kB 301.87 kB +14.75% 62.60 kB 71.84 kB
oss-stable-semver/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.production.min.server.js +11.42% 18.21 kB 20.29 kB +6.16% 6.76 kB 7.17 kB
oss-stable/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.production.min.server.js +11.42% 18.21 kB 20.29 kB +6.16% 6.76 kB 7.17 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.production.min.server.js +11.37% 18.03 kB 20.08 kB +5.94% 6.70 kB 7.10 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.production.min.server.js +11.37% 18.03 kB 20.08 kB +5.94% 6.70 kB 7.10 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.production.min.server.js +11.11% 18.45 kB 20.50 kB +5.92% 6.79 kB 7.20 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.production.min.server.js +11.11% 18.45 kB 20.50 kB +5.92% 6.79 kB 7.20 kB
oss-experimental/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.production.min.server.js +11.04% 18.80 kB 20.87 kB +5.99% 6.93 kB 7.35 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.production.min.server.js +11.00% 18.63 kB 20.68 kB +5.81% 6.88 kB 7.28 kB
oss-stable-semver/react-dom/cjs/react-dom-server.browser.development.js +10.84% 250.73 kB 277.92 kB +10.19% 60.81 kB 67.01 kB
oss-stable/react-dom/cjs/react-dom-server.browser.development.js +10.84% 250.76 kB 277.94 kB +10.19% 60.83 kB 67.03 kB
oss-stable-semver/react-dom/umd/react-dom-server.browser.development.js +10.81% 262.95 kB 291.38 kB +10.00% 61.53 kB 67.69 kB
oss-stable/react-dom/umd/react-dom-server.browser.development.js +10.81% 262.97 kB 291.40 kB +10.00% 61.55 kB 67.71 kB
oss-stable-semver/react-dom/cjs/react-dom-server.node.development.js +10.79% 251.97 kB 279.16 kB +10.22% 60.73 kB 66.93 kB
oss-stable/react-dom/cjs/react-dom-server.node.development.js +10.79% 252.00 kB 279.18 kB +10.22% 60.75 kB 66.95 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.production.min.server.js +10.76% 19.05 kB 21.10 kB +5.75% 6.97 kB 7.37 kB
facebook-www/ReactDOMServerStreaming-dev.modern.js +10.58% 257.43 kB 284.67 kB +9.68% 61.27 kB 67.21 kB
facebook-www/ReactDOMServer-dev.modern.js +10.43% 261.85 kB 289.17 kB +9.51% 62.28 kB 68.21 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.browser.development.js +10.28% 251.72 kB 277.60 kB +9.54% 60.68 kB 66.46 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.browser.development.js +10.28% 251.75 kB 277.62 kB +9.54% 60.70 kB 66.48 kB
oss-stable-semver/react-dom/umd/react-dom-server-legacy.browser.development.js +10.27% 263.95 kB 291.06 kB +9.32% 61.43 kB 67.15 kB
oss-stable/react-dom/umd/react-dom-server-legacy.browser.development.js +10.27% 263.97 kB 291.09 kB +9.32% 61.44 kB 67.17 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.node.development.js +10.21% 253.43 kB 279.31 kB +9.47% 61.14 kB 66.94 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.node.development.js +10.21% 253.45 kB 279.33 kB +9.48% 61.16 kB 66.96 kB
facebook-www/ReactDOMServer-dev.classic.js +10.17% 268.55 kB 295.87 kB +9.40% 63.70 kB 69.68 kB
oss-stable-semver/react-dom/cjs/react-dom-server.browser.production.min.js +9.66% 36.87 kB 40.43 kB +7.10% 12.66 kB 13.56 kB
oss-stable/react-dom/cjs/react-dom-server.browser.production.min.js +9.65% 36.89 kB 40.46 kB +7.11% 12.68 kB 13.58 kB
oss-stable-semver/react-dom/umd/react-dom-server.browser.production.min.js +9.62% 36.98 kB 40.54 kB +7.14% 12.78 kB 13.69 kB
oss-stable/react-dom/umd/react-dom-server.browser.production.min.js +9.62% 37.00 kB 40.56 kB +7.15% 12.80 kB 13.72 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer-server.production.min.js +9.46% 2.96 kB 3.24 kB +6.42% 1.14 kB 1.21 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer-server.production.min.js +9.46% 2.96 kB 3.24 kB +6.42% 1.14 kB 1.21 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer-server.production.min.js +9.46% 2.96 kB 3.24 kB +6.42% 1.14 kB 1.21 kB
oss-stable-semver/react-dom/cjs/react-dom-server.node.production.min.js +8.83% 40.40 kB 43.96 kB +6.71% 13.72 kB 14.64 kB
oss-stable/react-dom/cjs/react-dom-server.node.production.min.js +8.82% 40.42 kB 43.99 kB +6.70% 13.74 kB 14.66 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.development.server.js +7.03% 72.24 kB 77.32 kB +8.06% 18.56 kB 20.06 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.development.server.js +7.03% 72.24 kB 77.32 kB +8.06% 18.56 kB 20.06 kB
oss-stable-semver/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.development.server.js +6.95% 75.91 kB 81.18 kB +8.12% 18.78 kB 20.30 kB
oss-stable/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.development.server.js +6.95% 75.91 kB 81.18 kB +8.12% 18.78 kB 20.30 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.development.server.js +6.89% 73.65 kB 78.72 kB +8.05% 18.66 kB 20.17 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.development.server.js +6.89% 73.65 kB 78.72 kB +8.05% 18.66 kB 20.17 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.development.server.js +6.67% 76.17 kB 81.24 kB +7.53% 19.55 kB 21.03 kB
oss-experimental/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.development.server.js +6.59% 80.02 kB 85.30 kB +7.66% 19.77 kB 21.29 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.development.server.js +6.54% 77.57 kB 82.65 kB +7.53% 19.66 kB 21.14 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer-server.development.js +5.63% 6.18 kB 6.53 kB +4.65% 1.72 kB 1.80 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer-server.development.js +5.63% 6.18 kB 6.53 kB +4.65% 1.72 kB 1.80 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer-server.development.js +5.63% 6.18 kB 6.53 kB +4.65% 1.72 kB 1.80 kB
facebook-www/ReactDOMServer-prod.modern.js +4.38% 85.28 kB 89.01 kB +5.09% 17.51 kB 18.40 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +4.34% 36.02 kB 37.59 kB +4.36% 11.94 kB 12.46 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +4.34% 36.05 kB 37.61 kB +4.36% 11.96 kB 12.48 kB
oss-stable-semver/react-dom/umd/react-dom-server-legacy.browser.production.min.js +4.31% 36.14 kB 37.70 kB +4.55% 12.10 kB 12.65 kB
oss-stable/react-dom/umd/react-dom-server-legacy.browser.production.min.js +4.31% 36.16 kB 37.72 kB +4.56% 12.12 kB 12.67 kB
facebook-www/ReactDOMServer-prod.classic.js +4.22% 88.38 kB 92.11 kB +5.07% 18.13 kB 19.05 kB
facebook-www/ReactDOMServerStreaming-prod.modern.js +4.17% 89.33 kB 93.06 kB +4.75% 18.49 kB 19.37 kB
oss-experimental/react-server/cjs/react-server.production.min.js +4.14% 22.77 kB 23.71 kB +3.14% 7.76 kB 8.00 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.node.production.min.js +3.93% 39.89 kB 41.45 kB +3.98% 13.12 kB 13.65 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.node.production.min.js +3.93% 39.91 kB 41.48 kB +3.98% 13.15 kB 13.67 kB
oss-experimental/react-dom/cjs/react-dom.development.js +3.58% 1,108.58 kB 1,148.21 kB +3.31% 247.34 kB 255.53 kB
oss-experimental/react-dom/umd/react-dom.development.js +3.56% 1,162.90 kB 1,204.36 kB +3.26% 250.10 kB 258.24 kB
oss-experimental/react-dom/umd/react-dom.production.min.js +3.35% 142.94 kB 147.72 kB +3.43% 46.30 kB 47.89 kB
oss-experimental/react-dom/cjs/react-dom.profiling.min.js +3.17% 152.39 kB 157.21 kB +3.38% 48.03 kB 49.65 kB
oss-experimental/react-dom/umd/react-dom.profiling.min.js +3.15% 151.75 kB 156.53 kB +3.35% 48.59 kB 50.21 kB
oss-experimental/react-server/cjs/react-server.development.js +2.00% 140.41 kB 143.22 kB +1.73% 35.16 kB 35.77 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-experimental/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +21.34% 37.22 kB 45.17 kB +16.18% 12.33 kB 14.33 kB
oss-experimental/react-dom/umd/react-dom-server-legacy.browser.production.min.js +21.21% 37.34 kB 45.26 kB +16.24% 12.49 kB 14.52 kB
oss-experimental/react-dom/cjs/react-dom-static.browser.production.min.js +20.90% 37.95 kB 45.88 kB +15.86% 12.99 kB 15.05 kB
oss-experimental/react-dom/cjs/react-dom-server.browser.production.min.js +20.84% 38.07 kB 46.00 kB +15.80% 13.03 kB 15.09 kB
oss-experimental/react-dom/umd/react-dom-server.browser.production.min.js +20.70% 38.17 kB 46.07 kB +15.98% 13.17 kB 15.27 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.node.production.min.js +19.60% 41.25 kB 49.33 kB +14.90% 13.55 kB 15.57 kB
oss-experimental/react-dom/cjs/react-dom-static.node.production.min.js +19.31% 41.72 kB 49.77 kB +14.56% 14.15 kB 16.21 kB
oss-experimental/react-dom/cjs/react-dom-server.node.production.min.js +19.31% 41.75 kB 49.81 kB +14.40% 14.18 kB 16.22 kB
oss-experimental/react-dom/cjs/react-dom-static.browser.development.js +16.58% 255.96 kB 298.40 kB +14.78% 62.07 kB 71.25 kB
oss-experimental/react-dom/cjs/react-dom-server.browser.development.js +16.54% 256.65 kB 299.10 kB +14.73% 62.27 kB 71.44 kB
oss-experimental/react-dom/umd/react-dom-server.browser.development.js +16.53% 269.19 kB 313.69 kB +14.57% 62.99 kB 72.17 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.browser.development.js +16.50% 257.64 kB 300.16 kB +14.86% 62.13 kB 71.37 kB
oss-experimental/react-dom/umd/react-dom-server-legacy.browser.development.js +16.50% 270.19 kB 314.77 kB +14.71% 62.88 kB 72.13 kB
oss-experimental/react-dom/cjs/react-dom-static.node.development.js +16.46% 257.85 kB 300.30 kB +14.73% 62.28 kB 71.45 kB
oss-experimental/react-dom/cjs/react-dom-server.node.development.js +16.46% 257.89 kB 300.34 kB +14.76% 62.18 kB 71.36 kB
oss-experimental/react-dom/cjs/react-dom-server-legacy.node.development.js +16.40% 259.35 kB 301.87 kB +14.75% 62.60 kB 71.84 kB
oss-stable-semver/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.production.min.server.js +11.42% 18.21 kB 20.29 kB +6.16% 6.76 kB 7.17 kB
oss-stable/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.production.min.server.js +11.42% 18.21 kB 20.29 kB +6.16% 6.76 kB 7.17 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.production.min.server.js +11.37% 18.03 kB 20.08 kB +5.94% 6.70 kB 7.10 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.production.min.server.js +11.37% 18.03 kB 20.08 kB +5.94% 6.70 kB 7.10 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.production.min.server.js +11.11% 18.45 kB 20.50 kB +5.92% 6.79 kB 7.20 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.production.min.server.js +11.11% 18.45 kB 20.50 kB +5.92% 6.79 kB 7.20 kB
oss-experimental/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.production.min.server.js +11.04% 18.80 kB 20.87 kB +5.99% 6.93 kB 7.35 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.production.min.server.js +11.00% 18.63 kB 20.68 kB +5.81% 6.88 kB 7.28 kB
oss-stable-semver/react-dom/cjs/react-dom-server.browser.development.js +10.84% 250.73 kB 277.92 kB +10.19% 60.81 kB 67.01 kB
oss-stable/react-dom/cjs/react-dom-server.browser.development.js +10.84% 250.76 kB 277.94 kB +10.19% 60.83 kB 67.03 kB
oss-stable-semver/react-dom/umd/react-dom-server.browser.development.js +10.81% 262.95 kB 291.38 kB +10.00% 61.53 kB 67.69 kB
oss-stable/react-dom/umd/react-dom-server.browser.development.js +10.81% 262.97 kB 291.40 kB +10.00% 61.55 kB 67.71 kB
oss-stable-semver/react-dom/cjs/react-dom-server.node.development.js +10.79% 251.97 kB 279.16 kB +10.22% 60.73 kB 66.93 kB
oss-stable/react-dom/cjs/react-dom-server.node.development.js +10.79% 252.00 kB 279.18 kB +10.22% 60.75 kB 66.95 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.production.min.server.js +10.76% 19.05 kB 21.10 kB +5.75% 6.97 kB 7.37 kB
facebook-www/ReactDOMServerStreaming-dev.modern.js +10.58% 257.43 kB 284.67 kB +9.68% 61.27 kB 67.21 kB
facebook-www/ReactDOMServer-dev.modern.js +10.43% 261.85 kB 289.17 kB +9.51% 62.28 kB 68.21 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.browser.development.js +10.28% 251.72 kB 277.60 kB +9.54% 60.68 kB 66.46 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.browser.development.js +10.28% 251.75 kB 277.62 kB +9.54% 60.70 kB 66.48 kB
oss-stable-semver/react-dom/umd/react-dom-server-legacy.browser.development.js +10.27% 263.95 kB 291.06 kB +9.32% 61.43 kB 67.15 kB
oss-stable/react-dom/umd/react-dom-server-legacy.browser.development.js +10.27% 263.97 kB 291.09 kB +9.32% 61.44 kB 67.17 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.node.development.js +10.21% 253.43 kB 279.31 kB +9.47% 61.14 kB 66.94 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.node.development.js +10.21% 253.45 kB 279.33 kB +9.48% 61.16 kB 66.96 kB
facebook-www/ReactDOMServer-dev.classic.js +10.17% 268.55 kB 295.87 kB +9.40% 63.70 kB 69.68 kB
oss-stable-semver/react-dom/cjs/react-dom-server.browser.production.min.js +9.66% 36.87 kB 40.43 kB +7.10% 12.66 kB 13.56 kB
oss-stable/react-dom/cjs/react-dom-server.browser.production.min.js +9.65% 36.89 kB 40.46 kB +7.11% 12.68 kB 13.58 kB
oss-stable-semver/react-dom/umd/react-dom-server.browser.production.min.js +9.62% 36.98 kB 40.54 kB +7.14% 12.78 kB 13.69 kB
oss-stable/react-dom/umd/react-dom-server.browser.production.min.js +9.62% 37.00 kB 40.56 kB +7.15% 12.80 kB 13.72 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer-server.production.min.js +9.46% 2.96 kB 3.24 kB +6.42% 1.14 kB 1.21 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer-server.production.min.js +9.46% 2.96 kB 3.24 kB +6.42% 1.14 kB 1.21 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer-server.production.min.js +9.46% 2.96 kB 3.24 kB +6.42% 1.14 kB 1.21 kB
oss-stable-semver/react-dom/cjs/react-dom-server.node.production.min.js +8.83% 40.40 kB 43.96 kB +6.71% 13.72 kB 14.64 kB
oss-stable/react-dom/cjs/react-dom-server.node.production.min.js +8.82% 40.42 kB 43.99 kB +6.70% 13.74 kB 14.66 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.development.server.js +7.03% 72.24 kB 77.32 kB +8.06% 18.56 kB 20.06 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.development.server.js +7.03% 72.24 kB 77.32 kB +8.06% 18.56 kB 20.06 kB
oss-stable-semver/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.development.server.js +6.95% 75.91 kB 81.18 kB +8.12% 18.78 kB 20.30 kB
oss-stable/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.development.server.js +6.95% 75.91 kB 81.18 kB +8.12% 18.78 kB 20.30 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.development.server.js +6.89% 73.65 kB 78.72 kB +8.05% 18.66 kB 20.17 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.development.server.js +6.89% 73.65 kB 78.72 kB +8.05% 18.66 kB 20.17 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.browser.development.server.js +6.67% 76.17 kB 81.24 kB +7.53% 19.55 kB 21.03 kB
oss-experimental/react-server-dom-webpack/umd/react-server-dom-webpack-writer.browser.development.server.js +6.59% 80.02 kB 85.30 kB +7.66% 19.77 kB 21.29 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-writer.node.development.server.js +6.54% 77.57 kB 82.65 kB +7.53% 19.66 kB 21.14 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer-server.development.js +5.63% 6.18 kB 6.53 kB +4.65% 1.72 kB 1.80 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer-server.development.js +5.63% 6.18 kB 6.53 kB +4.65% 1.72 kB 1.80 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer-server.development.js +5.63% 6.18 kB 6.53 kB +4.65% 1.72 kB 1.80 kB
facebook-www/ReactDOMServer-prod.modern.js +4.38% 85.28 kB 89.01 kB +5.09% 17.51 kB 18.40 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +4.34% 36.02 kB 37.59 kB +4.36% 11.94 kB 12.46 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.browser.production.min.js +4.34% 36.05 kB 37.61 kB +4.36% 11.96 kB 12.48 kB
oss-stable-semver/react-dom/umd/react-dom-server-legacy.browser.production.min.js +4.31% 36.14 kB 37.70 kB +4.55% 12.10 kB 12.65 kB
oss-stable/react-dom/umd/react-dom-server-legacy.browser.production.min.js +4.31% 36.16 kB 37.72 kB +4.56% 12.12 kB 12.67 kB
facebook-www/ReactDOMServer-prod.classic.js +4.22% 88.38 kB 92.11 kB +5.07% 18.13 kB 19.05 kB
facebook-www/ReactDOMServerStreaming-prod.modern.js +4.17% 89.33 kB 93.06 kB +4.75% 18.49 kB 19.37 kB
oss-experimental/react-server/cjs/react-server.production.min.js +4.14% 22.77 kB 23.71 kB +3.14% 7.76 kB 8.00 kB
oss-stable-semver/react-dom/cjs/react-dom-server-legacy.node.production.min.js +3.93% 39.89 kB 41.45 kB +3.98% 13.12 kB 13.65 kB
oss-stable/react-dom/cjs/react-dom-server-legacy.node.production.min.js +3.93% 39.91 kB 41.48 kB +3.98% 13.15 kB 13.67 kB
oss-experimental/react-dom/cjs/react-dom.development.js +3.58% 1,108.58 kB 1,148.21 kB +3.31% 247.34 kB 255.53 kB
oss-experimental/react-dom/umd/react-dom.development.js +3.56% 1,162.90 kB 1,204.36 kB +3.26% 250.10 kB 258.24 kB
oss-experimental/react-dom/cjs/react-dom.production.min.js +3.38% 142.91 kB 147.73 kB +3.41% 45.61 kB 47.17 kB
oss-experimental/react-dom/umd/react-dom.production.min.js +3.35% 142.94 kB 147.72 kB +3.43% 46.30 kB 47.89 kB
oss-experimental/react-dom/cjs/react-dom.profiling.min.js +3.17% 152.39 kB 157.21 kB +3.38% 48.03 kB 49.65 kB
oss-experimental/react-dom/umd/react-dom.profiling.min.js +3.15% 151.75 kB 156.53 kB +3.35% 48.59 kB 50.21 kB
oss-experimental/react-server/cjs/react-server.development.js +2.00% 140.41 kB 143.22 kB +1.73% 35.16 kB 35.77 kB
oss-stable-semver/react-server/cjs/react-server.development.js +1.41% 135.20 kB 137.10 kB +1.38% 33.93 kB 34.40 kB
oss-stable/react-server/cjs/react-server.development.js +1.41% 135.20 kB 137.10 kB +1.38% 33.93 kB 34.40 kB
oss-stable-semver/react-server/cjs/react-server-flight.development.js +1.40% 47.78 kB 48.45 kB +1.10% 12.04 kB 12.17 kB
oss-stable/react-server/cjs/react-server-flight.development.js +1.40% 47.78 kB 48.45 kB +1.10% 12.04 kB 12.17 kB
oss-experimental/react-server/cjs/react-server-flight.development.js +1.30% 51.65 kB 52.32 kB +0.99% 13.02 kB 13.15 kB
oss-stable-semver/react-server/cjs/react-server.production.min.js +1.08% 21.63 kB 21.86 kB +0.92% 7.43 kB 7.50 kB
oss-stable/react-server/cjs/react-server.production.min.js +1.08% 21.63 kB 21.86 kB +0.92% 7.43 kB 7.50 kB
oss-experimental/react-reconciler/cjs/react-reconciler-reflection.production.min.js +0.90% 2.67 kB 2.69 kB +0.35% 1.14 kB 1.14 kB
oss-experimental/react-reconciler/cjs/react-reconciler.production.min.js +0.82% 103.43 kB 104.28 kB +0.61% 31.63 kB 31.82 kB
oss-experimental/react-reconciler/cjs/react-reconciler.profiling.min.js +0.76% 112.28 kB 113.13 kB +0.56% 33.79 kB 33.98 kB
oss-experimental/react-reconciler/cjs/react-reconciler-reflection.development.js +0.61% 18.33 kB 18.44 kB +0.32% 5.27 kB 5.28 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer.production.min.js +0.60% 12.43 kB 12.51 kB +0.30% 3.72 kB 3.73 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer.production.min.js +0.60% 12.43 kB 12.51 kB +0.30% 3.72 kB 3.73 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer.production.min.js +0.60% 12.43 kB 12.51 kB +0.30% 3.72 kB 3.73 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer-persistent.production.min.js +0.60% 12.50 kB 12.58 kB +0.27% 3.74 kB 3.75 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer-persistent.production.min.js +0.60% 12.50 kB 12.58 kB +0.27% 3.74 kB 3.75 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer-persistent.production.min.js +0.60% 12.50 kB 12.58 kB +0.27% 3.74 kB 3.75 kB
oss-experimental/react-reconciler/cjs/react-reconciler.development.js +0.42% 824.36 kB 827.83 kB +0.21% 174.85 kB 175.22 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler-reflection.development.js +0.39% 17.97 kB 18.04 kB +0.25% 5.19 kB 5.20 kB
oss-stable/react-reconciler/cjs/react-reconciler-reflection.development.js +0.39% 17.97 kB 18.04 kB +0.25% 5.19 kB 5.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.min.js +0.36% 96.45 kB 96.79 kB +0.30% 29.65 kB 29.74 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.min.js +0.36% 96.47 kB 96.81 kB +0.29% 29.67 kB 29.76 kB
oss-experimental/react-dom/cjs/react-dom-unstable_testing.production.min.js +0.33% 146.09 kB 146.57 kB +0.29% 46.98 kB 47.12 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.min.js +0.33% 105.27 kB 105.62 kB +0.31% 31.85 kB 31.95 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.min.js +0.33% 105.30 kB 105.64 kB +0.32% 31.87 kB 31.97 kB
facebook-www/ReactFlightDOMRelayServer-dev.classic.js +0.31% 64.33 kB 64.53 kB = 16.59 kB 16.57 kB
facebook-www/ReactFlightDOMRelayServer-dev.modern.js +0.31% 64.39 kB 64.59 kB = 16.61 kB 16.59 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer.development.js +0.26% 34.60 kB 34.69 kB +0.22% 7.80 kB 7.82 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer.development.js +0.26% 34.60 kB 34.69 kB +0.22% 7.80 kB 7.82 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer.development.js +0.26% 34.60 kB 34.69 kB +0.22% 7.80 kB 7.82 kB
oss-experimental/react-noop-renderer/cjs/react-noop-renderer-persistent.development.js +0.26% 34.73 kB 34.82 kB +0.26% 7.82 kB 7.84 kB
oss-stable-semver/react-noop-renderer/cjs/react-noop-renderer-persistent.development.js +0.26% 34.73 kB 34.82 kB +0.26% 7.82 kB 7.84 kB
oss-stable/react-noop-renderer/cjs/react-noop-renderer-persistent.development.js +0.26% 34.73 kB 34.82 kB +0.26% 7.82 kB 7.84 kB

Generated by 🚫 dangerJS against 1ccdb00

@gnoff gnoff force-pushed the float-styles branch 2 times, most recently from 950ef9c to 94ba0cb Compare September 21, 2022 00:14
@gnoff gnoff changed the title [WIP] [Fizz/Float] Float for stylesheet resources [Fizz/Float] Float for stylesheet resources Sep 26, 2022
@gnoff gnoff marked this pull request as ready for review September 26, 2022 15:41
@gnoff
Copy link
Collaborator Author

gnoff commented Sep 26, 2022

I'm going to look at build size. the stable channel shouldn't have such a large increase and it looks like some float functions are getting included that shouldn't be

@facebook facebook deleted a comment from ahmadmirjalili Sep 28, 2022
@gnoff gnoff force-pushed the float-styles branch 3 times, most recently from 3a9ab9c to 59185b1 Compare September 28, 2022 18:30
resourceProps,
);
}
acquireResource(resource);
Copy link
Collaborator

Choose a reason for hiding this comment

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

I wonder if we actually want to immediately acquire these or if we want to first preload them and then inject them at the next time some other styles are updated so that they get batched.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Interesting. So on next commit phase? in the same place we acquire today (layout but moving to before snapshop soon)?

Copy link
Collaborator

Choose a reason for hiding this comment

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

The same time we'd remove any styles if we did. Like when there's recalc anyway.

Maybe we don't do this yet since we're changing these phases anyway. But the reason I thought of it is because we need to inject either a preload or the style here so that we've marked this after adding it to the resource set. The code structure right now makes this a little tricky to guarantee.

Basically every querySelector needs to be followed by a synchronous insertion if it's missing, so that another run from Fizz, another root or something can find it.

resource.loaded = true;
resource.error = false;
for (const event in listeners) {
instance.removeEventListener(event, listeners[event], listenerOptions);
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't know if we need to bother removing these. We can instead just add a closure and clean up any heavy references within the closure.

Copy link
Collaborator

Choose a reason for hiding this comment

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

We don't clean up the _p thing anyway.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Not sure I follow. I can just leave the listeners in place but what references are heavy?

export const supportsResources = true;

export {isHostResourceType};
export function isHostResourceInstance(
Copy link
Collaborator

Choose a reason for hiding this comment

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

Where is this exported to? Seems like it's only called in this file?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

must have been leftover after a refactor. i'll pull it

[string]: mixed,
};

// This function is called in complete work and we should always have a currentDocument set
Copy link
Collaborator

Choose a reason for hiding this comment

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

Nit: This is called in beginWork.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

hard to keep these comments straight ;)

Copy link
Collaborator

@sebmarkbage sebmarkbage left a comment

Choose a reason for hiding this comment

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

Alright. I think this is landable. We'll do more follows up later.

@gnoff gnoff merged commit 7b25b96 into facebook:main Sep 30, 2022
@gnoff gnoff deleted the float-styles branch September 30, 2022 23:14
facebook-github-bot pushed a commit to facebook/react-native that referenced this pull request Oct 17, 2022
Summary:
- **[9fb581c7c](facebook/react@9fb581c7c )**: Refactor: merge duplicate imports ([#25489](facebook/react#25489)) //<c0dedance>//
- **[bc358362a](facebook/react@bc358362a )**: [Flight] Improve Error Messages when Invalid Object is Passed to Client/Host Components ([#25492](facebook/react#25492)) //<Sebastian Markbåge>//
- **[780eacd40](facebook/react@780eacd40 )**: Flow upgrade to 0.190 ([#25483](facebook/react#25483)) //<Jan Kassens>//
- **[54f0e0f73](facebook/react@54f0e0f73 )**: Scaffolding for react-dom/unstable_external-server-runtime ([#25482](facebook/react#25482)) //<Andrew Clark>//
- **[0eaca3756](facebook/react@0eaca3756 )**: Add script to generate inline Fizz runtime ([#25481](facebook/react#25481)) //<Andrew Clark>//
- **[69c7246d9](facebook/react@69c7246d9 )**: Initialize useMemoCache with sentinel values ([#25465](facebook/react#25465)) //<Joseph Savona>//
- **[3b814327e](facebook/react@3b814327e )**: Allow Async Functions to be used in Server Components ([#25479](facebook/react#25479)) //<Sebastian Markbåge>//
- **[a6bf46689](facebook/react@a6bf46689 )**: Extract Fizz instruction set to build macro ([#25457](facebook/react#25457)) //<Andrew Clark>//
- **[ea5bc6bac](facebook/react@ea5bc6bac )**: [React Native FB] dynamic feature flag for ref access warning ([#25471](facebook/react#25471)) //<Jan Kassens>//
- **[08d035bc8](facebook/react@08d035bc8 )**: Remove Shallow Renderer Tests ([#25475](facebook/react#25475)) //<Sebastian Markbåge>//
- **[a8c16a004](facebook/react@a8c16a004 )**: Split Cache into its own Dispatcher ([#25474](facebook/react#25474)) //<Sebastian Markbåge>//
- **[2cf4352e1](facebook/react@2cf4352e1 )**: Implement HostSingleton Fiber type ([#25426](facebook/react#25426)) //<Josh Story>//
- **[aa9988e5e](facebook/react@aa9988e5e )**: Server render fork for react-dom ([#25436](facebook/react#25436)) //<Josh Story>//
- **[513417d69](facebook/react@513417d69 )**: Return lastNonHostInstance in getInspectorDataForInstance for devtools ([#25441](facebook/react#25441)) //<Tianyu Yao>//
- **[5d60a0b84](facebook/react@5d60a0b84 )**: Bugfix: LegacyHidden shouldn't defer effects ([#25442](facebook/react#25442)) //<Andrew Clark>//
- **[618388bc3](facebook/react@618388bc3 )**: [Float] Support script preloads ([#25432](facebook/react#25432)) //<Josh Story>//
- **[2872a26e1](facebook/react@2872a26e1 )**: track resources in different roots separately ([#25388](facebook/react#25388)) //<Josh Story>//
- **[ea04a486a](facebook/react@ea04a486a )**: Flow: remove unused suppressions ([#25424](facebook/react#25424)) //<Jan Kassens>//
- **[9813edef2](facebook/react@9813edef2 )**: Flow upgrade to 0.188 //<Jan Kassens>//
- **[3b6826ed9](facebook/react@3b6826ed9 )**: Flow: inference_mode=constrain_writes //<Jan Kassens>//
- **[aed33a49c](facebook/react@aed33a49c )**: Flow upgrade to 0.185 //<Jan Kassens>//
- **[f02a5f5c7](facebook/react@f02a5f5c7 )**: Flow upgrade to 0.182 //<Jan Kassens>//
- **[72593f008](facebook/react@72593f008 )**: Flow upgrade to 0.176 //<Jan Kassens>//
- **[46d40f306](facebook/react@46d40f306 )**: Flow upgrade to 0.175 //<Jan Kassens>//
- **[1089faf0d](facebook/react@1089faf0d )**: Flow: run codemod to remove existential type //<Jan Kassens>//
- **[3fd9bd8e7](facebook/react@3fd9bd8e7 )**: Add RulesOfHooks support for `use` //<Lauren Tan>//
- **[338e6a967](facebook/react@338e6a967 )**: Flow upgrade to 0.155 //<Jan Kassens>//
- **[8bc95bb3c](facebook/react@8bc95bb3c )**: Flow upgrade to 0.154 //<Jan Kassens>//
- **[9f8a98a39](facebook/react@9f8a98a39 )**: Flow upgrade to 0.153 //<Jan Kassens>//
- **[64fe791be](facebook/react@64fe791be )**: Flow upgrade to 0.146 //<Jan Kassens>//
- **[d3c6c16a0](facebook/react@d3c6c16a0 )**: Flow upgrade to 0.145 //<Jan Kassens>//
- **[00a2f8150](facebook/react@00a2f8150 )**: Flow upgrade to 0.143 //<Jan Kassens>//
- **[0a3072278](facebook/react@0a3072278 )**: Flow: complete types first migration ([#25389](facebook/react#25389)) //<Jan Kassens>//
- **[bcc05671f](facebook/react@bcc05671f )**: Flow: types first in shared ([#25343](facebook/react#25343)) //<Jan Kassens>//
- **[b1f34aa30](facebook/react@b1f34aa30 )**: Flow: types first in react-native-renderer ([#25363](facebook/react#25363)) //<Jan Kassens>//
- **[9143864ae](facebook/react@9143864ae )**: Flow: well formed exports for smaller packages ([#25361](facebook/react#25361)) //<Jan Kassens>//
- **[21a851e03](facebook/react@21a851e03 )**: Fix devtools typos and grammar ([#24587](facebook/react#24587)) //<Alexandru Tasica>//
- **[cfafeb685](facebook/react@cfafeb685 )**: Remove extra space in Wedge.js ([#24611](facebook/react#24611)) //<Kerim Büyükakyüz>//
- **[9c3de25e1](facebook/react@9c3de25e1 )**: Flow: types first in reconciler ([#25362](facebook/react#25362)) //<Jan Kassens>//
- **[7b25b961d](facebook/react@7b25b961d )**: [Fizz/Float] Float for stylesheet resources ([#25243](facebook/react#25243)) //<Josh Story>//
- **[4c016e7aa](facebook/react@4c016e7aa )**: Refactor: use  property shorthand ([#25366](facebook/react#25366)) //<zhangrenyang>//
- **[06066c1a5](facebook/react@06066c1a5 )**: Make RulesOfHooks-test more consistent with ExhaustiveDeps-test //<Lauren Tan>//
- **[49ae0fad8](facebook/react@49ae0fad8 )**: Fix RulesOfHooks test case indentation //<Lauren Tan>//
- **[abbbdf4ce](facebook/react@abbbdf4ce )**: Put modern StrictMode behind a feature flag ([#25365](facebook/react#25365)) //<Samuel Susla>//
- **[434110390](facebook/react@434110390 )**: ReactHooks.js - delete emptyObject ([#25031](facebook/react#25031)) //<Igor Berlenko>//
- **[31400ce29](facebook/react@31400ce29 )**: Refactor: merge duplicate imports ([#25364](facebook/react#25364)) //<jerry-lllman>//
- **[3517bd9f7](facebook/react@3517bd9f7 )**: Refactor useEvent ([#25336](facebook/react#25336)) //<Lauren Tan>//
- **[6cf06a929](facebook/react@6cf06a929 )**: Remove outdated comments. ([#24464](facebook/react#24464)) //<zhangenming>//
- **[20a257c25](facebook/react@20a257c25 )**: Refactor: more word doubles removed ([#25352](facebook/react#25352)) //<Vic Graf>//
- **[8cadcffd5](facebook/react@8cadcffd5 )**: Fix typo: reconcilation -> reconciliation ([#25355](facebook/react#25355)) //<zhangrenyang>//
- **[ebbe599a2](facebook/react@ebbe599a2 )**: Fix EventListener fork ([#25347](facebook/react#25347)) //<Sebastian Markbåge>//
- **[97d75c9c8](facebook/react@97d75c9c8 )**: Move react-dom implementation files to react-dom-bindings ([#25345](facebook/react#25345)) //<Sebastian Markbåge>//
- **[3de926449](facebook/react@3de926449 )**: [Fizz] experimental_useEvent ([#25325](facebook/react#25325)) //<dan>//
- **[5b59dd640](facebook/react@5b59dd640 )**: Fix duplicate words tests ([#25333](facebook/react#25333)) //<Vic Graf>//
- **[cb5084d1c](facebook/react@cb5084d1c )**: [ESLint] Check useEvent references instead ([#25319](facebook/react#25319)) //<Lauren Tan>//
- **[c89a83695](facebook/react@c89a83695 )**: Update RulesOfHooks with useEvent rules ([#25285](facebook/react#25285)) //<Lauren Tan>//
- **[efc6a08e9](facebook/react@efc6a08e9 )**: [Flight] Implement error digests for Flight runtime and expose errorInfo in getDerivedStateFromError ([#25302](facebook/react#25302)) //<Josh Story>//
- **[c1d414d75](facebook/react@c1d414d75 )**: Add ref to Offscreen component ([#25254](facebook/react#25254)) //<Samuel Susla>//
- **[135e33c95](facebook/react@135e33c95 )**: Flow: typing of Scheduler ([#25317](facebook/react#25317)) //<Jan Kassens>//
- **[cc8cb145f](facebook/react@cc8cb145f )**: Flow: add some missing types in react-reconciler ([#25316](facebook/react#25316)) //<Jan Kassens>//
- **[112d0498c](facebook/react@112d0498c )**: [Fizz] Move digest from errorInfo to Error instance ([#25313](facebook/react#25313)) //<Josh Story>//
- **[d1bb1c586](facebook/react@d1bb1c586 )**: Fix memory leak after repeated setState bailouts ([#25309](facebook/react#25309)) //<Andrew Clark>//

Changelog:
[General][Changed] - React Native sync for revisions 0cac4d5...9fb581c

jest_e2e[run_all_tests]

Reviewed By: yungsters

Differential Revision: D40383219

fbshipit-source-id: dc2a44bd05df041e0c7f2e1060640b1d2c372187
mondaychen added a commit that referenced this pull request Nov 7, 2022
## Summary

This is to support two new reconciler work tags `HostSingleton` and
`HostResource` introduced in PRs #25243 #25426. The behavior is
described below.
I also renamed an option in components settings from an internal concept
"host" to more understood "dom nodes"

## How did you test this change?

Tested on the latest Vercel playground app
https://github.com/vercel/app-playground/

Before the change, devtools cannot show correct display name for these
new elements. Also, some unnecessary internal details are exposed to
users.
<img width="1395" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578181-c4e4ea74-baa1-4507-83d0-91a62ad7de5f.png">

After the change, the display names are correctly shown and the "state"
would always be hidden in the detail view.
<img width="1417" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578442-adc1951d-7d5b-4b84-ad64-85bcf7a8ebcc.png">

These elements will also be hidden just like other native dom elements
(e.g. `<div>`)
<img width="836" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578598-2dfacf64-ddc9-42b5-a246-dd0b09f629af.png">
mofeiZ pushed a commit to mofeiZ/react that referenced this pull request Nov 17, 2022
## Summary

This is to support two new reconciler work tags `HostSingleton` and
`HostResource` introduced in PRs facebook#25243 facebook#25426. The behavior is
described below.
I also renamed an option in components settings from an internal concept
"host" to more understood "dom nodes"

## How did you test this change?

Tested on the latest Vercel playground app
https://github.com/vercel/app-playground/

Before the change, devtools cannot show correct display name for these
new elements. Also, some unnecessary internal details are exposed to
users.
<img width="1395" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578181-c4e4ea74-baa1-4507-83d0-91a62ad7de5f.png">

After the change, the display names are correctly shown and the "state"
would always be hidden in the detail view.
<img width="1417" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578442-adc1951d-7d5b-4b84-ad64-85bcf7a8ebcc.png">

These elements will also be hidden just like other native dom elements
(e.g. `<div>`)
<img width="836" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578598-2dfacf64-ddc9-42b5-a246-dd0b09f629af.png">
rickhanlonii pushed a commit that referenced this pull request Dec 3, 2022
## Summary

This is to support two new reconciler work tags `HostSingleton` and
`HostResource` introduced in PRs #25243 #25426. The behavior is
described below.
I also renamed an option in components settings from an internal concept
"host" to more understood "dom nodes"

## How did you test this change?

Tested on the latest Vercel playground app
https://github.com/vercel/app-playground/

Before the change, devtools cannot show correct display name for these
new elements. Also, some unnecessary internal details are exposed to
users.
<img width="1395" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578181-c4e4ea74-baa1-4507-83d0-91a62ad7de5f.png">

After the change, the display names are correctly shown and the "state"
would always be hidden in the detail view.
<img width="1417" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578442-adc1951d-7d5b-4b84-ad64-85bcf7a8ebcc.png">

These elements will also be hidden just like other native dom elements
(e.g. `<div>`)
<img width="836" alt="image"
src="https://user-images.githubusercontent.com/1001890/199578598-2dfacf64-ddc9-42b5-a246-dd0b09f629af.png">
OlimpiaZurek pushed a commit to OlimpiaZurek/react-native that referenced this pull request May 22, 2023
Summary:
- **[9fb581c7c](facebook/react@9fb581c7c )**: Refactor: merge duplicate imports ([facebook#25489](facebook/react#25489)) //<c0dedance>//
- **[bc358362a](facebook/react@bc358362a )**: [Flight] Improve Error Messages when Invalid Object is Passed to Client/Host Components ([facebook#25492](facebook/react#25492)) //<Sebastian Markbåge>//
- **[780eacd40](facebook/react@780eacd40 )**: Flow upgrade to 0.190 ([facebook#25483](facebook/react#25483)) //<Jan Kassens>//
- **[54f0e0f73](facebook/react@54f0e0f73 )**: Scaffolding for react-dom/unstable_external-server-runtime ([facebook#25482](facebook/react#25482)) //<Andrew Clark>//
- **[0eaca3756](facebook/react@0eaca3756 )**: Add script to generate inline Fizz runtime ([facebook#25481](facebook/react#25481)) //<Andrew Clark>//
- **[69c7246d9](facebook/react@69c7246d9 )**: Initialize useMemoCache with sentinel values ([facebook#25465](facebook/react#25465)) //<Joseph Savona>//
- **[3b814327e](facebook/react@3b814327e )**: Allow Async Functions to be used in Server Components ([facebook#25479](facebook/react#25479)) //<Sebastian Markbåge>//
- **[a6bf46689](facebook/react@a6bf46689 )**: Extract Fizz instruction set to build macro ([facebook#25457](facebook/react#25457)) //<Andrew Clark>//
- **[ea5bc6bac](facebook/react@ea5bc6bac )**: [React Native FB] dynamic feature flag for ref access warning ([facebook#25471](facebook/react#25471)) //<Jan Kassens>//
- **[08d035bc8](facebook/react@08d035bc8 )**: Remove Shallow Renderer Tests ([facebook#25475](facebook/react#25475)) //<Sebastian Markbåge>//
- **[a8c16a004](facebook/react@a8c16a004 )**: Split Cache into its own Dispatcher ([facebook#25474](facebook/react#25474)) //<Sebastian Markbåge>//
- **[2cf4352e1](facebook/react@2cf4352e1 )**: Implement HostSingleton Fiber type ([facebook#25426](facebook/react#25426)) //<Josh Story>//
- **[aa9988e5e](facebook/react@aa9988e5e )**: Server render fork for react-dom ([facebook#25436](facebook/react#25436)) //<Josh Story>//
- **[513417d69](facebook/react@513417d69 )**: Return lastNonHostInstance in getInspectorDataForInstance for devtools ([facebook#25441](facebook/react#25441)) //<Tianyu Yao>//
- **[5d60a0b84](facebook/react@5d60a0b84 )**: Bugfix: LegacyHidden shouldn't defer effects ([facebook#25442](facebook/react#25442)) //<Andrew Clark>//
- **[618388bc3](facebook/react@618388bc3 )**: [Float] Support script preloads ([facebook#25432](facebook/react#25432)) //<Josh Story>//
- **[2872a26e1](facebook/react@2872a26e1 )**: track resources in different roots separately ([facebook#25388](facebook/react#25388)) //<Josh Story>//
- **[ea04a486a](facebook/react@ea04a486a )**: Flow: remove unused suppressions ([facebook#25424](facebook/react#25424)) //<Jan Kassens>//
- **[9813edef2](facebook/react@9813edef2 )**: Flow upgrade to 0.188 //<Jan Kassens>//
- **[3b6826ed9](facebook/react@3b6826ed9 )**: Flow: inference_mode=constrain_writes //<Jan Kassens>//
- **[aed33a49c](facebook/react@aed33a49c )**: Flow upgrade to 0.185 //<Jan Kassens>//
- **[f02a5f5c7](facebook/react@f02a5f5c7 )**: Flow upgrade to 0.182 //<Jan Kassens>//
- **[72593f008](facebook/react@72593f008 )**: Flow upgrade to 0.176 //<Jan Kassens>//
- **[46d40f306](facebook/react@46d40f306 )**: Flow upgrade to 0.175 //<Jan Kassens>//
- **[1089faf0d](facebook/react@1089faf0d )**: Flow: run codemod to remove existential type //<Jan Kassens>//
- **[3fd9bd8e7](facebook/react@3fd9bd8e7 )**: Add RulesOfHooks support for `use` //<Lauren Tan>//
- **[338e6a967](facebook/react@338e6a967 )**: Flow upgrade to 0.155 //<Jan Kassens>//
- **[8bc95bb3c](facebook/react@8bc95bb3c )**: Flow upgrade to 0.154 //<Jan Kassens>//
- **[9f8a98a39](facebook/react@9f8a98a39 )**: Flow upgrade to 0.153 //<Jan Kassens>//
- **[64fe791be](facebook/react@64fe791be )**: Flow upgrade to 0.146 //<Jan Kassens>//
- **[d3c6c16a0](facebook/react@d3c6c16a0 )**: Flow upgrade to 0.145 //<Jan Kassens>//
- **[00a2f8150](facebook/react@00a2f8150 )**: Flow upgrade to 0.143 //<Jan Kassens>//
- **[0a3072278](facebook/react@0a3072278 )**: Flow: complete types first migration ([facebook#25389](facebook/react#25389)) //<Jan Kassens>//
- **[bcc05671f](facebook/react@bcc05671f )**: Flow: types first in shared ([facebook#25343](facebook/react#25343)) //<Jan Kassens>//
- **[b1f34aa30](facebook/react@b1f34aa30 )**: Flow: types first in react-native-renderer ([facebook#25363](facebook/react#25363)) //<Jan Kassens>//
- **[9143864ae](facebook/react@9143864ae )**: Flow: well formed exports for smaller packages ([facebook#25361](facebook/react#25361)) //<Jan Kassens>//
- **[21a851e03](facebook/react@21a851e03 )**: Fix devtools typos and grammar ([facebook#24587](facebook/react#24587)) //<Alexandru Tasica>//
- **[cfafeb685](facebook/react@cfafeb685 )**: Remove extra space in Wedge.js ([facebook#24611](facebook/react#24611)) //<Kerim Büyükakyüz>//
- **[9c3de25e1](facebook/react@9c3de25e1 )**: Flow: types first in reconciler ([facebook#25362](facebook/react#25362)) //<Jan Kassens>//
- **[7b25b961d](facebook/react@7b25b961d )**: [Fizz/Float] Float for stylesheet resources ([facebook#25243](facebook/react#25243)) //<Josh Story>//
- **[4c016e7aa](facebook/react@4c016e7aa )**: Refactor: use  property shorthand ([facebook#25366](facebook/react#25366)) //<zhangrenyang>//
- **[06066c1a5](facebook/react@06066c1a5 )**: Make RulesOfHooks-test more consistent with ExhaustiveDeps-test //<Lauren Tan>//
- **[49ae0fad8](facebook/react@49ae0fad8 )**: Fix RulesOfHooks test case indentation //<Lauren Tan>//
- **[abbbdf4ce](facebook/react@abbbdf4ce )**: Put modern StrictMode behind a feature flag ([facebook#25365](facebook/react#25365)) //<Samuel Susla>//
- **[434110390](facebook/react@434110390 )**: ReactHooks.js - delete emptyObject ([facebook#25031](facebook/react#25031)) //<Igor Berlenko>//
- **[31400ce29](facebook/react@31400ce29 )**: Refactor: merge duplicate imports ([facebook#25364](facebook/react#25364)) //<jerry-lllman>//
- **[3517bd9f7](facebook/react@3517bd9f7 )**: Refactor useEvent ([facebook#25336](facebook/react#25336)) //<Lauren Tan>//
- **[6cf06a929](facebook/react@6cf06a929 )**: Remove outdated comments. ([facebook#24464](facebook/react#24464)) //<zhangenming>//
- **[20a257c25](facebook/react@20a257c25 )**: Refactor: more word doubles removed ([facebook#25352](facebook/react#25352)) //<Vic Graf>//
- **[8cadcffd5](facebook/react@8cadcffd5 )**: Fix typo: reconcilation -> reconciliation ([facebook#25355](facebook/react#25355)) //<zhangrenyang>//
- **[ebbe599a2](facebook/react@ebbe599a2 )**: Fix EventListener fork ([facebook#25347](facebook/react#25347)) //<Sebastian Markbåge>//
- **[97d75c9c8](facebook/react@97d75c9c8 )**: Move react-dom implementation files to react-dom-bindings ([facebook#25345](facebook/react#25345)) //<Sebastian Markbåge>//
- **[3de926449](facebook/react@3de926449 )**: [Fizz] experimental_useEvent ([facebook#25325](facebook/react#25325)) //<dan>//
- **[5b59dd640](facebook/react@5b59dd640 )**: Fix duplicate words tests ([facebook#25333](facebook/react#25333)) //<Vic Graf>//
- **[cb5084d1c](facebook/react@cb5084d1c )**: [ESLint] Check useEvent references instead ([facebook#25319](facebook/react#25319)) //<Lauren Tan>//
- **[c89a83695](facebook/react@c89a83695 )**: Update RulesOfHooks with useEvent rules ([facebook#25285](facebook/react#25285)) //<Lauren Tan>//
- **[efc6a08e9](facebook/react@efc6a08e9 )**: [Flight] Implement error digests for Flight runtime and expose errorInfo in getDerivedStateFromError ([facebook#25302](facebook/react#25302)) //<Josh Story>//
- **[c1d414d75](facebook/react@c1d414d75 )**: Add ref to Offscreen component ([facebook#25254](facebook/react#25254)) //<Samuel Susla>//
- **[135e33c95](facebook/react@135e33c95 )**: Flow: typing of Scheduler ([facebook#25317](facebook/react#25317)) //<Jan Kassens>//
- **[cc8cb145f](facebook/react@cc8cb145f )**: Flow: add some missing types in react-reconciler ([facebook#25316](facebook/react#25316)) //<Jan Kassens>//
- **[112d0498c](facebook/react@112d0498c )**: [Fizz] Move digest from errorInfo to Error instance ([facebook#25313](facebook/react#25313)) //<Josh Story>//
- **[d1bb1c586](facebook/react@d1bb1c586 )**: Fix memory leak after repeated setState bailouts ([facebook#25309](facebook/react#25309)) //<Andrew Clark>//

Changelog:
[General][Changed] - React Native sync for revisions 0cac4d5...9fb581c

jest_e2e[run_all_tests]

Reviewed By: yungsters

Differential Revision: D40383219

fbshipit-source-id: dc2a44bd05df041e0c7f2e1060640b1d2c372187
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants