Skip to content

Add Experimental Flight Infrastructure #16398

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

Merged
merged 6 commits into from
Oct 29, 2019
Merged

Conversation

sebmarkbage
Copy link
Collaborator

@sebmarkbage sebmarkbage commented Aug 15, 2019

This adds some plumbing for the Flight experiment.

We'll likely need this to (optionally) support a streaming protocol. This is the same as Fizz (streaming server rendering). There is quite a bit of wiring to make that work. This infra creates a build for each environment with zero overhead cost.

We have one build for Node which is the default. We currently have a separate build for a Browser environment (with browser stream support). This is useful for Service Workers or just debugging since the browser debugger is better than Node. We'll likely also have a FB specific one.

ReactServerHostConfig configures the runtime environment and has various overrides.

Additionally, we likely want to special case the encoding format for some parts of the protocol depending on what you're rendering into. E.g. a host component tree can be flattened into raw HTML. Therefore, we want one entry point for each renderer type. Not a single one for the whole project. This entry point is react-dom/unstable-flight.

ReactServerFormatConfig configures the output format configuration.

Both of these are shared between Fizz and Flight. So they each get the host config and the format config compiled in.

The second two commits show the actually relevant files.

cc @timneutkens

@sizebot
Copy link

sizebot commented Aug 15, 2019

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

Details of bundled changes.

Comparing: 6f86294...9650647

react-dom

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-dom.profiling.min.js 0.0% -0.0% 115.03 KB 115.03 KB 36.29 KB 36.28 KB NODE_PROFILING
react-dom-server.browser.development.js 0.0% -0.0% 140.04 KB 140.04 KB 36.79 KB 36.79 KB UMD_DEV
react-dom-unstable-flight-server.browser.development.js n/a n/a 0 B 5.13 KB 0 B 2 KB UMD_DEV
ReactDOM-dev.js 0.0% 0.0% 934.45 KB 934.45 KB 206.83 KB 206.83 KB FB_WWW_DEV
react-dom-server.browser.production.min.js 0.0% -0.0% 19.68 KB 19.68 KB 7.32 KB 7.32 KB UMD_PROD
react-dom-unstable-flight-server.browser.production.min.js n/a n/a 0 B 1.7 KB 0 B 971 B UMD_PROD
ReactFlightDOMServer-dev.js n/a n/a 0 B 5.05 KB 0 B 1.88 KB FB_WWW_DEV
react-dom-unstable-fizz.browser.development.js +2.3% +1.0% 3.78 KB 3.87 KB 1.53 KB 1.54 KB UMD_DEV
react-dom-unstable-flight-client.development.js n/a n/a 0 B 5.05 KB 0 B 1.98 KB UMD_DEV
react-dom-test-utils.production.min.js 0.0% 0.0% 11.2 KB 11.2 KB 4.15 KB 4.15 KB UMD_PROD
react-dom-unstable-fizz.browser.production.min.js 0.0% 🔺+0.3% 1.2 KB 1.2 KB 702 B 704 B UMD_PROD
ReactDOMFizzServer-dev.js +2.3% +1.1% 3.83 KB 3.92 KB 1.48 KB 1.5 KB FB_WWW_DEV
react-dom-unstable-flight-client.production.min.js n/a n/a 0 B 1.69 KB 0 B 966 B UMD_PROD
ReactDOMFizzServer-prod.js 🔺+1.6% 🔺+1.6% 2.16 KB 2.19 KB 874 B 888 B FB_WWW_PROD
react-dom-unstable-fizz.browser.development.js +2.4% +1.1% 3.61 KB 3.7 KB 1.48 KB 1.5 KB NODE_DEV
react-dom-unstable-flight-client.development.js n/a n/a 0 B 4.76 KB 0 B 1.87 KB NODE_DEV
react-dom-test-utils.production.min.js 0.0% 🔺+0.1% 10.98 KB 10.98 KB 4.08 KB 4.08 KB NODE_PROD
react-dom-unstable-fizz.browser.production.min.js 0.0% 🔺+0.2% 1.04 KB 1.04 KB 634 B 635 B NODE_PROD
react-dom-unstable-flight-client.production.min.js n/a n/a 0 B 1.46 KB 0 B 837 B NODE_PROD
react-dom.development.js 0.0% -0.0% 909.96 KB 909.96 KB 206.58 KB 206.57 KB UMD_DEV
react-dom.production.min.js 0.0% -0.0% 111.43 KB 111.43 KB 35.91 KB 35.91 KB UMD_PROD
ReactFlightDOMClient-dev.js n/a n/a 0 B 4.7 KB 0 B 1.83 KB FB_WWW_DEV
react-dom.profiling.min.js 0.0% -0.0% 114.83 KB 114.83 KB 36.94 KB 36.94 KB UMD_PROFILING
ReactFlightDOMClient-prod.js n/a n/a 0 B 2.86 KB 0 B 1.07 KB FB_WWW_PROD
react-dom.development.js 0.0% -0.0% 904.25 KB 904.25 KB 204.98 KB 204.98 KB NODE_DEV
react-dom-server.node.development.js 0.0% -0.0% 137.19 KB 137.19 KB 36.07 KB 36.07 KB NODE_DEV
react-dom-unstable-flight-server.node.development.js n/a n/a 0 B 5.1 KB 0 B 1.92 KB NODE_DEV
react-dom.production.min.js 0.0% -0.0% 111.4 KB 111.4 KB 35.35 KB 35.34 KB NODE_PROD
react-dom-server.node.production.min.js 0.0% -0.0% 20.01 KB 20.01 KB 7.48 KB 7.48 KB NODE_PROD
react-dom-unstable-flight-server.node.production.min.js n/a n/a 0 B 1.53 KB 0 B 867 B NODE_PROD
ReactFlightDOMServer-prod.js n/a n/a 0 B 2.94 KB 0 B 1.1 KB FB_WWW_PROD
ReactDOM-profiling.js 0.0% -0.0% 376.04 KB 376.04 KB 69.12 KB 69.12 KB FB_WWW_PROFILING
react-dom-server.browser.development.js 0.0% -0.0% 136.17 KB 136.17 KB 35.85 KB 35.84 KB NODE_DEV
react-dom-unstable-flight-server.browser.development.js n/a n/a 0 B 4.84 KB 0 B 1.89 KB NODE_DEV
react-dom-server.browser.production.min.js 0.0% -0.0% 19.6 KB 19.6 KB 7.32 KB 7.32 KB NODE_PROD
react-dom-unstable-flight-server.browser.production.min.js n/a n/a 0 B 1.46 KB 0 B 842 B NODE_PROD
react-dom-unstable-native-dependencies.production.min.js 0.0% -0.0% 10.75 KB 10.75 KB 3.68 KB 3.68 KB UMD_PROD
react-dom-unstable-fizz.node.development.js +2.2% +1.0% 3.87 KB 3.96 KB 1.51 KB 1.52 KB NODE_DEV
react-dom-unstable-fizz.node.production.min.js 🔺+0.1% 0.0% 1.1 KB 1.11 KB 668 B 668 B NODE_PROD

react-noop-renderer

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-noop-renderer.development.js 0.0% -0.0% 35.73 KB 35.73 KB 8.15 KB 8.15 KB NODE_DEV
react-noop-renderer-flight-client.development.js n/a n/a 0 B 2.05 KB 0 B 900 B NODE_DEV
react-noop-renderer-flight-client.production.min.js n/a n/a 0 B 895 B 0 B 508 B NODE_PROD
react-noop-renderer-flight-server.development.js n/a n/a 0 B 2.06 KB 0 B 908 B NODE_DEV
react-noop-renderer-flight-server.production.min.js n/a n/a 0 B 902 B 0 B 513 B NODE_PROD
react-noop-renderer-server.development.js +6.7% +1.8% 1.84 KB 1.97 KB 884 B 900 B NODE_DEV
react-noop-renderer-server.production.min.js 🔺+9.2% 🔺+2.6% 813 B 888 B 491 B 504 B NODE_PROD
react-noop-renderer-persistent.development.js 0.0% -0.0% 35.84 KB 35.84 KB 8.17 KB 8.17 KB NODE_DEV

react-server

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-server-flight.development.js n/a n/a 0 B 5.99 KB 0 B 2.15 KB NODE_DEV
react-server-flight.production.min.js n/a n/a 0 B 1.71 KB 0 B 902 B NODE_PROD
react-server.development.js n/a n/a 0 B 4.76 KB 0 B 1.76 KB NODE_DEV
react-server.production.min.js n/a n/a 0 B 1.2 KB 0 B 665 B NODE_PROD

react-flight

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-flight.development.js n/a n/a 0 B 5.38 KB 0 B 2.13 KB NODE_DEV
react-flight.production.min.js n/a n/a 0 B 1.7 KB 0 B 896 B NODE_PROD

Generated by 🚫 dangerJS

@devknoll
Copy link
Contributor

How does colocation work with this? Isn't the mentioned example of Foo.model.js by definition not colocated? Or are you imagining something akin to:

// Post.js
function Post({model}) {
  return (
    <div>
      {model.user}
      {model.text}
    </div>
  )
}
Post.getModelFromProps = async (props) => {
  const post = fetch(`/posts/${props.id}`)
  return {post, user: <User id={post.author_id}} />}
}

// User.js
function User({model}) {
  return <span>{model.name}</span>
}
User.getModelFromProps = async (props) => {
  const user = fetch(`/users/${props.id}`)
  return user;
}

(where e.g. getModelFromProps could be automatically extracted into a Post.model.js, etc)

@sebmarkbage
Copy link
Collaborator Author

Yea, collocated in the sense of two files next to each other. An entangled pair. Not in the same file. The rationale is that currently it's really hard to tell how different parts of a file might be entangled. E.g. which imports are client-only or server-only? is this value visible to the client? Collocating in completely different parts of a file isn't much easier to keep track of. It's not as if it's in the same expression. A big part of this design is just the explainability. It's easy to tell what code is server and which is client this way.

@gaearon
Copy link
Collaborator

gaearon commented Aug 15, 2019

Can you explain the API a bit? I’ve read the tests and still a bit confused how pieces are supposed to fit together and why host nodes are model output.

@sebmarkbage
Copy link
Collaborator Author

sebmarkbage commented Aug 15, 2019

@gaearon No. This is the infra PR, not a project review. :) The host nodes are only there to demonstrate that there is some connection to the "server renderer" format. Not the final implementation. This is just plumbing.

@@ -0,0 +1,144 @@
/**
Copy link
Member

Choose a reason for hiding this comment

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

just curious, why put this in react-server instead of react-flight?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Mostly because both Fizz and Flight depend on ReactServerHostConfig/ReactServerFormatConfig so it lets me avoid hoisting those concerns to a third package. It's quite likely that the two servers would be running in the same machine and interleaved. So you likely want to version them together too.

It gets awkward now that I'm adding a client API too which needs its own package or join react-reconciler.

It's not that important though since these are all not the encouraged APIs other than for custom builds. The public API is the react-dom entry points. We don't even own the react-server npm name so will likely change.

let model = {
title: 'Title',
content: {
__html: <HTML />,
Copy link
Member

@josephsavona josephsavona Aug 15, 2019

Choose a reason for hiding this comment

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

Just checking that I'm following what's happening here: "model" values can render components, which are (at least for now) effectively rendered on the server and sent down as an HTML string (this is the "E.g. a host component tree can be flattened into raw HTML." from your description, right?).

Copy link
Collaborator Author

@sebmarkbage sebmarkbage Aug 15, 2019

Choose a reason for hiding this comment

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

Yea. The HTML component is actually just a Model function. Then that model happens to contains "host" components (leaves) which are flattened into HTML. This will likely need to be much more clever to protect against XSS attacks like #3473 and to allow targeting nested nodes with client components etc.

I could also do return { __html: <div>...</div> } inside the HTML component since it's just a Model function and can return arbitrary data structures.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The nice thing about this pattern is that if you have a tree of stateless functional components, the same code can be one shot rendered like this, or client rendered.

Copy link
Contributor

Choose a reason for hiding this comment

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

since it's just a Model function and can return arbitrary data structures

Can you clarify in your current mental model: Is a Model function actually a component (i.e. can I use hooks in it), or are you using <HTML /> here for sugar?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

A Model function can not use hooks. It's not a client-side component so it cannot have effects or state. (We could potentially let it have access to useContext though.)

Copy link
Contributor

Choose a reason for hiding this comment

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

Can it suspend? If not, how can it fetch any async data?

I know this is just a plumbing PR, but it would be super helpful if you could include a small end-to-end example 😄

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

That’s one possible solution but that’s really not decided. It could be async functions, it could be something else. :)

@sebmarkbage sebmarkbage force-pushed the flight branch 6 times, most recently from 24e9362 to 9650647 Compare August 16, 2019 15:25
renderResult(json);
return;
}
json += decoder.decode(value);
Copy link
Collaborator

@sophiebits sophiebits Aug 30, 2019

Choose a reason for hiding this comment

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

I think this needs a second argument {stream: true} in order to properly handle the case that a chunk boundary splits a codepoint, and then in the if above, add

json += decoder.decode();

to finish. https://encoding.spec.whatwg.org/#example-end-of-stream

@sizebot
Copy link

sizebot commented Oct 29, 2019

Size changes (stable)

ReactDOM: size: n/a, gzip: n/a

Details of bundled changes.

Comparing: 3497ccc...e5c85fd

react-dom

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-dom-unstable-native-dependencies.production.min.js 0.0% -0.0% 10.46 KB 10.46 KB 3.57 KB 3.57 KB NODE_PROD
react-dom-unstable-flight-server.browser.production.min.js n/a n/a 0 B 1.46 KB 0 B 841 B NODE_PROD
react-dom-unstable-flight-client.development.js n/a n/a 0 B 5.05 KB 0 B 1.98 KB UMD_DEV
react-dom-unstable-flight-client.production.min.js n/a n/a 0 B 1.69 KB 0 B 965 B UMD_PROD
react-dom-unstable-flight-server.node.development.js n/a n/a 0 B 5.1 KB 0 B 1.91 KB NODE_DEV
react-dom.development.js 0.0% -0.0% 951.12 KB 951.12 KB 214.93 KB 214.92 KB UMD_DEV
react-dom-unstable-fizz.browser.development.js +2.3% +1.0% 3.78 KB 3.87 KB 1.53 KB 1.54 KB UMD_DEV
react-dom-unstable-flight-server.node.production.min.js n/a n/a 0 B 1.53 KB 0 B 865 B NODE_PROD
react-dom.profiling.min.js 0.0% -0.0% 119.69 KB 119.69 KB 38.48 KB 38.48 KB UMD_PROFILING
react-dom-unstable-fizz.browser.development.js +2.4% +1.1% 3.61 KB 3.7 KB 1.48 KB 1.5 KB NODE_DEV
react-dom.production.min.js 0.0% -0.0% 116.29 KB 116.29 KB 36.79 KB 36.79 KB NODE_PROD
react-dom-unstable-native-dependencies.development.js 0.0% -0.0% 60.13 KB 60.13 KB 15.79 KB 15.79 KB UMD_DEV
react-dom-unstable-flight-server.browser.development.js n/a n/a 0 B 5.13 KB 0 B 2 KB UMD_DEV
react-dom-unstable-flight-server.browser.production.min.js n/a n/a 0 B 1.7 KB 0 B 969 B UMD_PROD
react-dom-unstable-native-dependencies.development.js 0.0% -0.0% 59.8 KB 59.8 KB 15.66 KB 15.66 KB NODE_DEV
react-dom-unstable-flight-server.browser.development.js n/a n/a 0 B 4.84 KB 0 B 1.88 KB NODE_DEV
react-dom-unstable-flight-client.development.js n/a n/a 0 B 4.76 KB 0 B 1.87 KB NODE_DEV
react-dom-test-utils.development.js 0.0% -0.0% 56.26 KB 56.26 KB 15.58 KB 15.57 KB UMD_DEV
react-dom-unstable-flight-client.production.min.js n/a n/a 0 B 1.46 KB 0 B 836 B NODE_PROD
react-dom-test-utils.production.min.js 0.0% -0.0% 11.17 KB 11.17 KB 4.14 KB 4.14 KB UMD_PROD
react-dom-unstable-fizz.node.development.js +2.2% +1.0% 3.87 KB 3.96 KB 1.51 KB 1.52 KB NODE_DEV
react-dom-test-utils.production.min.js 0.0% -0.0% 10.94 KB 10.94 KB 4.08 KB 4.08 KB NODE_PROD
react-dom-unstable-fizz.node.production.min.js 🔺+0.1% -0.1% 1.1 KB 1.11 KB 668 B 667 B NODE_PROD

react-noop-renderer

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-noop-renderer.production.min.js 0.0% -0.0% 11.83 KB 11.83 KB 3.78 KB 3.77 KB NODE_PROD
react-noop-renderer-flight-server.development.js n/a n/a 0 B 2.06 KB 0 B 906 B NODE_DEV
react-noop-renderer-flight-server.production.min.js n/a n/a 0 B 902 B 0 B 511 B NODE_PROD
react-noop-renderer-server.development.js +6.7% +1.6% 1.84 KB 1.97 KB 884 B 898 B NODE_DEV
react-noop-renderer-server.production.min.js 🔺+9.2% 🔺+2.4% 813 B 888 B 491 B 503 B NODE_PROD
react-noop-renderer-flight-client.development.js n/a n/a 0 B 2.05 KB 0 B 898 B NODE_DEV
react-noop-renderer-flight-client.production.min.js n/a n/a 0 B 895 B 0 B 506 B NODE_PROD

react-server

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-server-flight.development.js n/a n/a 0 B 5.99 KB 0 B 2.15 KB NODE_DEV
react-server-flight.production.min.js n/a n/a 0 B 1.71 KB 0 B 900 B NODE_PROD
react-server.development.js n/a n/a 0 B 4.76 KB 0 B 1.76 KB NODE_DEV
react-server.production.min.js n/a n/a 0 B 1.2 KB 0 B 664 B NODE_PROD

react-flight

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-flight.development.js n/a n/a 0 B 5.38 KB 0 B 2.13 KB NODE_DEV
react-flight.production.min.js n/a n/a 0 B 1.7 KB 0 B 894 B NODE_PROD

Generated by 🚫 dangerJS against e5c85fd

@sizebot
Copy link

sizebot commented Oct 29, 2019

Size changes (experimental)

Details of bundled changes.

Comparing: 3497ccc...e5c85fd

react-dom

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-dom-unstable-flight-server.browser.development.js n/a n/a 0 B 5.15 KB 0 B 2.01 KB UMD_DEV
react-dom-unstable-flight-server.browser.production.min.js n/a n/a 0 B 1.71 KB 0 B 977 B UMD_PROD
react-dom-unstable-fizz.browser.development.js +2.3% +1.0% 3.8 KB 3.88 KB 1.54 KB 1.55 KB UMD_DEV
react-dom-unstable-flight-client.development.js n/a n/a 0 B 5.06 KB 0 B 1.99 KB UMD_DEV
react-dom-test-utils.production.min.js 0.0% -0.0% 11.18 KB 11.18 KB 4.15 KB 4.15 KB UMD_PROD
react-dom-unstable-fizz.browser.production.min.js 0.0% 🔺+0.1% 1.21 KB 1.21 KB 709 B 710 B UMD_PROD
react-dom-unstable-flight-client.production.min.js n/a n/a 0 B 1.71 KB 0 B 972 B UMD_PROD
ReactDOMServer-dev.js 0.0% -0.0% 139.64 KB 139.64 KB 35.41 KB 35.41 KB FB_WWW_DEV
react-dom-test-utils.development.js 0.0% -0.0% 54.54 KB 54.54 KB 15.25 KB 15.25 KB NODE_DEV
ReactDOMServer-prod.js 0.0% -0.0% 48.79 KB 48.79 KB 11.13 KB 11.13 KB FB_WWW_PROD
react-dom-unstable-fizz.browser.development.js +2.4% +1.1% 3.62 KB 3.71 KB 1.49 KB 1.5 KB NODE_DEV
react-dom-unstable-flight-client.development.js n/a n/a 0 B 4.77 KB 0 B 1.88 KB NODE_DEV
react-dom-test-utils.production.min.js 0.0% -0.0% 10.95 KB 10.95 KB 4.09 KB 4.09 KB NODE_PROD
react-dom-unstable-flight-client.production.min.js n/a n/a 0 B 1.47 KB 0 B 844 B NODE_PROD
react-dom.production.min.js 0.0% 0.0% 119.55 KB 119.55 KB 38.35 KB 38.35 KB UMD_PROD
react-dom.profiling.min.js 0.0% 0.0% 123.21 KB 123.21 KB 39.44 KB 39.44 KB UMD_PROFILING
ReactDOMFizzServer-dev.js +2.3% +1.1% 3.83 KB 3.92 KB 1.48 KB 1.5 KB FB_WWW_DEV
ReactDOMFizzServer-prod.js 🔺+1.6% 🔺+1.6% 2.16 KB 2.19 KB 874 B 888 B FB_WWW_PROD
react-dom-unstable-flight-server.node.development.js n/a n/a 0 B 5.12 KB 0 B 1.92 KB NODE_DEV
react-dom-unstable-flight-server.node.production.min.js n/a n/a 0 B 1.55 KB 0 B 874 B NODE_PROD
ReactFlightDOMClient-dev.js n/a n/a 0 B 4.7 KB 0 B 1.83 KB FB_WWW_DEV
react-dom-unstable-flight-server.browser.development.js n/a n/a 0 B 4.85 KB 0 B 1.89 KB NODE_DEV
ReactFlightDOMClient-prod.js n/a n/a 0 B 2.86 KB 0 B 1.07 KB FB_WWW_PROD
react-dom-unstable-flight-server.browser.production.min.js n/a n/a 0 B 1.48 KB 0 B 850 B NODE_PROD
react-dom-unstable-native-dependencies.development.js 0.0% -0.0% 60.14 KB 60.14 KB 15.8 KB 15.8 KB UMD_DEV
ReactFlightDOMServer-dev.js n/a n/a 0 B 5.05 KB 0 B 1.88 KB FB_WWW_DEV
react-dom-unstable-fizz.node.development.js +2.2% +1.0% 3.88 KB 3.97 KB 1.52 KB 1.53 KB NODE_DEV
ReactFlightDOMServer-prod.js n/a n/a 0 B 2.94 KB 0 B 1.1 KB FB_WWW_PROD
react-dom-unstable-fizz.node.production.min.js 🔺+0.1% 0.0% 1.12 KB 1.12 KB 676 B 676 B NODE_PROD

react-noop-renderer

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-noop-renderer-flight-client.development.js n/a n/a 0 B 2.06 KB 0 B 906 B NODE_DEV
react-noop-renderer-flight-client.production.min.js n/a n/a 0 B 908 B 0 B 515 B NODE_PROD
react-noop-renderer-flight-server.development.js n/a n/a 0 B 2.07 KB 0 B 914 B NODE_DEV
react-noop-renderer-flight-server.production.min.js n/a n/a 0 B 915 B 0 B 520 B NODE_PROD
react-noop-renderer-server.development.js +6.6% +1.7% 1.86 KB 1.98 KB 891 B 906 B NODE_DEV
react-noop-renderer-server.production.min.js 🔺+9.1% 🔺+2.4% 826 B 901 B 500 B 512 B NODE_PROD

react-server

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-server-flight.development.js n/a n/a 0 B 6.01 KB 0 B 2.16 KB NODE_DEV
react-server-flight.production.min.js n/a n/a 0 B 1.72 KB 0 B 908 B NODE_PROD
react-server.development.js n/a n/a 0 B 4.77 KB 0 B 1.76 KB NODE_DEV
react-server.production.min.js n/a n/a 0 B 1.22 KB 0 B 672 B NODE_PROD

react-flight

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-flight.development.js n/a n/a 0 B 5.4 KB 0 B 2.14 KB NODE_DEV
react-flight.production.min.js n/a n/a 0 B 1.71 KB 0 B 902 B NODE_PROD

Generated by 🚫 dangerJS against e5c85fd

@sebmarkbage sebmarkbage merged commit f4e974d into facebook:master Oct 29, 2019
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.

7 participants