An element is a description. Nothing has run.
The common read: A JSX tag is a call, so <Greeting name="Taylor" /> has already run Greeting's body by the time that line finishes, and what I am holding is its output.
Writing the tag runs none of your component's code. It builds one plain object, a description of what you want React to do later: no DOM node, no rendered output, and not a single line of Greeting executed.
Takeaway: A work order is not a building, and nobody has broken ground.
The object is also cheap enough that optimizing its creation is wasted work: memoizing a tag to save the allocation buys nothing and costs a dependency array. The one thing a memoized element does buy is a stable object identity, which is a later lesson's material.
Patch a prop after the element is built and a production build
React freezes the element and its props shallowly in development, so an assignment like el.props.name = "Morgan" throws there. That arrives as "works on staging, red in CI", filed against whoever last touched the test runner. Treat every element you did not create as opaque: read it if you must, render it, never write to it.
