GithubHelp home page GithubHelp logo

Comments (6)

gaearon avatar gaearon commented on June 24, 2024

Do we actually know that it should show up? Is there an observable difference in behavior, or does Rollup correctly eliminate unused code?

from react.

markerikson avatar markerikson commented on June 24, 2024

I haven't tried to trace the usage of that code in the react-dom-webpack-server bundles.

If I look at what seems to be an equivalent section of one of the prod bundles, I see:

"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(
  function(a){new y(a,3,!1,a.toLowerCase(),null,!1,!1)
  function(a){new y(a,3,!0,a,null,!1,!1)

Which looks like it is that same code, with no assignment statement (ie, the new y() corresponds to new PropertyInfoRecord(), and that value is currently being created and thrown away).

from react.

gaearon avatar gaearon commented on June 24, 2024

Yeah but the question is whether that properties object is being used in them. If it's not being used, isn't it correct that it gets removed?

from react.

markerikson avatar markerikson commented on June 24, 2024

Here's a copy of the "fixed" dev bundle from one of my local builds:

Looking at it, the properties object is:

  • Written to by all of the properties[name] = new PropertyInfoRecord() lines
  • Read only by getPropertyInfo()

and I don't see any other references to getPropertyInfo() in that bundle file.

So, it does seem like all of the DOMProperty.js logic may actually be dead as far as this bundle is concerned. (Although in that case, you'd think that all of it would get stripped out, especially in a prod build.)

Given that, this may not actually be a true bug in terms of behavior.

Not sure what the right answer here is, then. I guess adding an extra plugin just to fix the output isn't necessary if it's not going to result in a difference in behavior, but it also seems odd to have seemingly-incorrect bundle output and leave that extra dead logic in the bundles 🤷‍♂️

from react.

gaearon avatar gaearon commented on June 24, 2024

Is the output incorrect or insufficiently optimized?

If it's not being stripped out, that's something that would be good to fix, but it's not the same as it being broken. react-server-dom-webpack-server bundle should usually be Node-only, so this shouldn't be a big problem re: code size either.

The problematic part here might be convoluted metaprogramming we do in DOMProperty but we're moving towards getting rid of it in #26433.

from react.

markerikson avatar markerikson commented on June 24, 2024

Yeah, after inspecting the bundles, I would say that it's just that they're "insufficiently optimized". It does seem like there's a Rollup bug in that it should either leave in all of DOMProperty.js or strip all of it out, and not strip out a few specific parts. But, given that the properties stuff doesn't seem to be used in those bundles, I think it's safe to leave that alone for now.

from react.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.