react icon indicating copy to clipboard operation
react copied to clipboard

[Flight] Track the function name that was called for I/O entries

Open sebmarkbage opened this issue 6 months ago • 1 comments

Stacked on #33390.

The stack trace doesn't include the thing you called when calling into ignore listed content. We consider the ignore listed content conceptually the abstraction that you called that's interesting.

This extracts the name of the first ignore listed function that was called from user space. For example "fetch". So we can know what kind of request this is.

This could be enhanced and tweaked with heuristics in the future. For example, when you create a Promise yourself and call I/O inside of it like my delay examples, then we use that Promise as the I/O node but its stack doesn't have the actual I/O performed. It might be better to use the inner I/O node in that case. E.g. setTimeout. Currently I pick the name from the first party code instead - in my example delay.

Another case that could be improved is the case where your whole component is third-party. In that case we still log the I/O but it has no context about what kind of I/O since the whole stack is ignored it just gets the component name for example. We could for example look at the first name that is in a different package than the package name of the ignored listed component. So if node_modules/my-component-library/index.js calls into node_modules/mysql/connection.js then we could use the name from the inner.

sebmarkbage avatar May 31 '25 22:05 sebmarkbage

Comparing: 3fb17d16a4838e132d0d6dbb08f91b7e7da691eb...fed17d5e625eb467e668f4b39c7f1e3d5b46d1db

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.js = 6.68 kB 6.68 kB = 1.83 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 529.82 kB 529.82 kB = 93.51 kB 93.51 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB = 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 650.91 kB 650.91 kB = 114.63 kB 114.63 kB
facebook-www/ReactDOM-prod.classic.js = 675.86 kB 675.86 kB = 118.91 kB 118.91 kB
facebook-www/ReactDOM-prod.modern.js = 666.14 kB 666.14 kB = 117.30 kB 117.30 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-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.82% 162.93 kB 164.27 kB +1.01% 30.35 kB 30.66 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.82% 162.96 kB 164.30 kB +0.99% 30.36 kB 30.66 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.79% 169.63 kB 170.97 kB +0.93% 31.46 kB 31.75 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.79% 170.76 kB 172.11 kB +0.93% 31.75 kB 32.04 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.78% 170.83 kB 172.17 kB +0.92% 31.76 kB 32.05 kB

Generated by :no_entry_sign: dangerJS against fed17d5e625eb467e668f4b39c7f1e3d5b46d1db

react-sizebot avatar May 31 '25 22:05 react-sizebot