Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

acdlite
Copy link
Collaborator

@acdlite acdlite commented Feb 13, 2024

Depends on:


There's a ton of overlap between the createElement implementation and the JSX implementation, so I combined them into a single module.

In the actual build output, the shared code between JSX and createElement will get duplicated anyway, because react/jsx-runtime and react (where createElement lives) are separate, flat build artifacts.

So this is more about code organization — with a few key exceptions, the implementations of createElement and jsx are highly coupled.

@facebook-github-bot facebook-github-bot added CLA Signed React Core Team Opened by a member of the React Core Team labels Feb 13, 2024
@react-sizebot
Copy link

react-sizebot commented Feb 13, 2024

Comparing: ec160f3...4e55cd4

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 = 176.85 kB 176.85 kB = 55.14 kB 55.14 kB
oss-experimental/react-dom/cjs/react-dom.production.min.js = 178.85 kB 178.85 kB = 55.72 kB 55.71 kB
facebook-www/ReactDOM-prod.classic.js = 591.91 kB 591.91 kB = 104.47 kB 104.47 kB
facebook-www/ReactDOM-prod.modern.js = 575.20 kB 575.20 kB = 101.47 kB 101.47 kB
facebook-www/React-dev.classic.js = 143.04 kB 128.66 kB = 34.68 kB 30.39 kB
facebook-www/React-dev.modern.js = 141.81 kB 127.08 kB = 34.42 kB 29.95 kB
facebook-react-native/react/cjs/React-dev.js = 128.73 kB 114.36 kB = 31.09 kB 26.93 kB
facebook-www/ReactServer-dev.modern.js = 111.52 kB 96.79 kB = 27.00 kB 22.63 kB
test_utils/ReactAllWarnings.js Deleted 66.90 kB 0.00 kB Deleted 16.40 kB 0.00 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable-semver/react/cjs/react.react-server.production.min.js +0.63% 7.51 kB 7.55 kB +0.13% 3.13 kB 3.13 kB
oss-stable/react/cjs/react.react-server.production.min.js +0.62% 7.53 kB 7.58 kB +0.13% 3.15 kB 3.15 kB
oss-experimental/react/cjs/react.react-server.production.min.js +0.47% 9.56 kB 9.60 kB +0.10% 3.83 kB 3.83 kB
oss-stable-semver/react/cjs/react.production.min.js +0.47% 8.58 kB 8.62 kB +0.09% 3.25 kB 3.25 kB
oss-stable/react/cjs/react.production.min.js +0.46% 8.61 kB 8.65 kB +0.09% 3.27 kB 3.28 kB
oss-experimental/react/cjs/react.production.min.js +0.42% 9.54 kB 9.58 kB +0.11% 3.56 kB 3.56 kB
oss-stable-semver/react/cjs/react.react-server.production.js +0.31% 32.49 kB 32.59 kB +0.15% 9.52 kB 9.54 kB
oss-stable/react/cjs/react.react-server.production.js +0.31% 32.52 kB 32.62 kB +0.15% 9.55 kB 9.56 kB
oss-stable-semver/react/umd/react.profiling.min.js +0.29% 12.38 kB 12.42 kB +0.25% 4.77 kB 4.78 kB
oss-stable-semver/react/umd/react.production.min.js +0.29% 12.38 kB 12.42 kB +0.21% 4.77 kB 4.78 kB
oss-stable/react/umd/react.profiling.min.js +0.29% 12.41 kB 12.44 kB +0.23% 4.80 kB 4.81 kB
oss-stable/react/umd/react.production.min.js +0.29% 12.41 kB 12.44 kB +0.23% 4.80 kB 4.81 kB
oss-experimental/react/umd/react.profiling.min.js +0.27% 13.28 kB 13.31 kB +0.26% 5.07 kB 5.08 kB
oss-experimental/react/umd/react.production.min.js +0.27% 13.28 kB 13.31 kB +0.24% 5.07 kB 5.08 kB
oss-experimental/react/cjs/react.react-server.production.js +0.26% 38.61 kB 38.71 kB +0.16% 11.20 kB 11.22 kB
oss-stable-semver/react/cjs/react.development.js +0.22% 102.72 kB 102.95 kB = 27.41 kB 27.38 kB
oss-stable/react/cjs/react.development.js +0.22% 102.75 kB 102.97 kB = 27.44 kB 27.41 kB
oss-experimental/react/cjs/react.development.js +0.21% 105.29 kB 105.51 kB = 28.09 kB 28.05 kB
facebook-www/React-dev.classic.js = 143.04 kB 128.66 kB = 34.68 kB 30.39 kB
facebook-www/React-dev.modern.js = 141.81 kB 127.08 kB = 34.42 kB 29.95 kB
facebook-react-native/react/cjs/React-dev.js = 128.73 kB 114.36 kB = 31.09 kB 26.93 kB
facebook-www/ReactServer-dev.modern.js = 111.52 kB 96.79 kB = 27.00 kB 22.63 kB
test_utils/ReactAllWarnings.js Deleted 66.90 kB 0.00 kB Deleted 16.40 kB 0.00 kB

Generated by 🚫 dangerJS against 4e55cd4

@acdlite acdlite force-pushed the combine-createelement-and-jsx-modules branch 3 times, most recently from eb5e13b to b71f399 Compare February 13, 2024 20:04
@acdlite acdlite marked this pull request as ready for review February 13, 2024 23:48
There's a ton of overlap between the createElement implementation and
the JSX implementation, so I combined them into a single module.

In the actual build output, the shared code between JSX and
createElement will get duplicated anyway, because react/jsx-runtime and
react (where createElement livs) are separate, flat build artifacts.

So this is more about code organization — with a few key exceptions,
the implementations of createElement and jsx are highly coupled.
@acdlite acdlite force-pushed the combine-createelement-and-jsx-modules branch from b71f399 to 4e55cd4 Compare February 20, 2024 03:15
@acdlite acdlite merged commit 5fb2c93 into facebook:main Feb 20, 2024
github-actions bot pushed a commit that referenced this pull request Feb 20, 2024
Depends on:

- #28317

---

There's a ton of overlap between the createElement implementation and
the JSX implementation, so I combined them into a single module.

In the actual build output, the shared code between JSX and
createElement will get duplicated anyway, because react/jsx-runtime and
react (where createElement lives) are separate, flat build artifacts.

So this is more about code organization — with a few key exceptions, the
implementations of createElement and jsx are highly coupled.

DiffTrain build for [5fb2c93](5fb2c93)
acdlite added a commit that referenced this pull request Feb 20, 2024
Depends on:

- #28317 
- #28320 

---

Changes the behavior of the JSX runtime to pass through `ref` as a
normal prop, rather than plucking it from the props object and storing
on the element.

This is a breaking change since it changes the type of the receiving
component. However, most code is unaffected since it's unlikely that a
component would have attempted to access a `ref` prop, since it was not
possible to get a reference to one.

`forwardRef` _will_ still pluck `ref` from the props object, though,
since it's extremely common for users to spread the props object onto
the inner component and pass `ref` as a differently named prop. This is
for maximum compatibility with existing code — the real impact of this
change is that `forwardRef` is no longer required.

Currently, refs are resolved during child reconciliation and stored on
the fiber. As a result of this change, we can move ref resolution to
happen only much later, and only for components that actually use them.
Then we can remove the `ref` field from the Fiber type. I have not yet
done that in this step, though.
github-actions bot pushed a commit that referenced this pull request Feb 20, 2024
Depends on:

- #28317
- #28320

---

Changes the behavior of the JSX runtime to pass through `ref` as a
normal prop, rather than plucking it from the props object and storing
on the element.

This is a breaking change since it changes the type of the receiving
component. However, most code is unaffected since it's unlikely that a
component would have attempted to access a `ref` prop, since it was not
possible to get a reference to one.

`forwardRef` _will_ still pluck `ref` from the props object, though,
since it's extremely common for users to spread the props object onto
the inner component and pass `ref` as a differently named prop. This is
for maximum compatibility with existing code — the real impact of this
change is that `forwardRef` is no longer required.

Currently, refs are resolved during child reconciliation and stored on
the fiber. As a result of this change, we can move ref resolution to
happen only much later, and only for components that actually use them.
Then we can remove the `ref` field from the Fiber type. I have not yet
done that in this step, though.

DiffTrain build for [fa2f82a](fa2f82a)
hoxyq added a commit that referenced this pull request Feb 22, 2024
Full list of changes (not a public CHANGELOG):

* feature[REMOVED][devtools]: turn off / hide location based component
filters ([hoxyq](https://github.com/hoxyq) in
[#28417](#28417))
* Add useSyncExternalStore and useTransition to getPrimitiveStackCache
([jamesbvaughan](https://github.com/jamesbvaughan) in
[#28399](#28399))
* chore[devtools]: use react-window from npm and bump
react-virtualized-auto-sizer to ^1.0.23
([hoxyq](https://github.com/hoxyq) in
[#28408](#28408))
* Pass ref as normal prop ([acdlite](https://github.com/acdlite) in
[#28348](#28348))
* Combine createElement and JSX modules
([acdlite](https://github.com/acdlite) in
[#28320](#28320))
* [Debug Tools] Always use includeHooksSource option
([sebmarkbage](https://github.com/sebmarkbage) in
[#28309](#28309))
* Revert "[Tests] Reset modules by default"
([acdlite](https://github.com/acdlite) in
[#28318](#28318))
* Switch <Context> to mean <Context.Provider>
([gaearon](https://github.com/gaearon) in
[#28226](#28226))
* [Debug Tools] Introspect Promises in use()
([sebmarkbage](https://github.com/sebmarkbage) in
[#28297](#28297))
* fix[devtools/useModalDismissSignal]: use getRootNode for shadow root
case support ([hoxyq](https://github.com/hoxyq) in
[#28145](#28145))
* fix: define IS_ACT_ENVIRONMENT global for tests with concurrent mode
and synchronous act ([hoxyq](https://github.com/hoxyq) in
[#28296](#28296))
* chore: gate legacy apis for react-devtools-shell
([hoxyq](https://github.com/hoxyq) in
[#28273](#28273))
* DevTools: Add support for use(Context)
([eps1lon](https://github.com/eps1lon) in
[#28233](#28233))
* Remove __self and __source location from elements
([sebmarkbage](https://github.com/sebmarkbage) in
[#28265](#28265))
* chore: use versioned render in inspectedElement test
([hoxyq](https://github.com/hoxyq) in
[#28246](#28246))
* chore: use versioned render in TimelineProfiler test and gate some for
legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28218](#28218))
* [Tests] Reset modules by default
([rickhanlonii](https://github.com/rickhanlonii) in
[#28254](#28254))
* chore: use versioned render in preprocessData test and gate some for …
([hoxyq](https://github.com/hoxyq) in
[#28219](#28219))
* chore: use versioned render in storeStressSync test and gate them for
legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28216](#28216))
* Patch devtools before running useMemo function in strict mode
([gsathya](https://github.com/gsathya) in
[#28249](#28249))
* chore: use versioned render in storeComponentFilters test
([hoxyq](https://github.com/hoxyq) in
[#28241](#28241))
* chore: use versioned render in profilerContext test
([hoxyq](https://github.com/hoxyq) in
[#28243](#28243))
* chore: use versioned render in profilingCommitTreeBuilder test and
gate some for legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28236](#28236))
* chore: use versioned render in profilingHostRoot test and gate some
for legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28237](#28237))
* chore: use versioned render in profilingCache test
([hoxyq](https://github.com/hoxyq) in
[#28242](#28242))
* chore: use versioned render in ownersListContext test
([hoxyq](https://github.com/hoxyq) in
[#28240](#28240))
* chore: use versioned render in editing test
([hoxyq](https://github.com/hoxyq) in
[#28239](#28239))
* chore: use versioned render in treeContext test
([hoxyq](https://github.com/hoxyq) in
[#28245](#28245))
* chore: use versioned render in store test
([hoxyq](https://github.com/hoxyq) in
[#28244](#28244))
* chore: use versioned render in profilerStore test
([hoxyq](https://github.com/hoxyq) in
[#28238](#28238))
* chore: use versioned render in profilingCharts test
([hoxyq](https://github.com/hoxyq) in
[#28235](#28235))
* chore: use versioned render in profilerChangeDescriptions test
([hoxyq](https://github.com/hoxyq) in
[#28221](#28221))
* chore: use versioned render in storeOwners test
([hoxyq](https://github.com/hoxyq) in
[#28215](#28215))
* chore: use versioned render in componentStacks test
([hoxyq](https://github.com/hoxyq) in
[#28214](#28214))
* chore: use versioned render in console test
([hoxyq](https://github.com/hoxyq) in
[#28213](#28213))
* chore: use versioned render in useEditableValue test
([hoxyq](https://github.com/hoxyq) in
[#28212](#28212))
* chore: use versioned render in FastRefreshDevToolsIntegration test
([hoxyq](https://github.com/hoxyq) in
[#28211](#28211))
* chore: add versioned render implementation for DevTools tests
([hoxyq](https://github.com/hoxyq) in
[#28210](#28210))
* chore: add single versioned implementation of act for DevTools tests
([hoxyq](https://github.com/hoxyq) in
[#28186](#28186))
* DevTools: Add support for useFormState
([eps1lon](https://github.com/eps1lon) in
[#28232](#28232))
* DevTools: Add support for useOptimistic Hook
([eps1lon](https://github.com/eps1lon) in
[#27982](#27982))
* Add stable React.act export ([acdlite](https://github.com/acdlite) in
[#28160](#28160))
* [flow] upgrade to 0.225.1 ([kassens](https://github.com/kassens) in
[#27871](#27871))
* fix[devtools/e2e]: add fallback for act in integration tests
([hoxyq](https://github.com/hoxyq) in
[#27842](#27842))
* Add stable concurrent option to react-test-renderer
([jackpope](https://github.com/jackpope) in
[#27804](#27804))
* Update act references in tests ([gnoff](https://github.com/gnoff) in
[#27805](#27805))
* Flow: make more objects exact ([kassens](https://github.com/kassens)
in [#27790](#27790))
huozhi added a commit to vercel/next.js that referenced this pull request Feb 23, 2024
### React upstream changes

- facebook/react#28333
- facebook/react#28334
- facebook/react#28378
- facebook/react#28377
- facebook/react#28376
- facebook/react#28338
- facebook/react#28331
- facebook/react#28336
- facebook/react#28320
- facebook/react#28317
- facebook/react#28375
- facebook/react#28367
- facebook/react#28380
- facebook/react#28368
- facebook/react#28343
- facebook/react#28355
- facebook/react#28374
- facebook/react#28362
- facebook/react#28344
- facebook/react#28339
- facebook/react#28353
- facebook/react#28346
- facebook/react#25790
- facebook/react#28352
- facebook/react#28326
- facebook/react#27688
- facebook/react#28329
- facebook/react#28332
- facebook/react#28340
- facebook/react#28327
- facebook/react#28325
- facebook/react#28324
- facebook/react#28309
- facebook/react#28310
- facebook/react#28307
- facebook/react#28306
- facebook/react#28315
- facebook/react#28318
- facebook/react#28226
- facebook/react#28308
- facebook/react#27563
- facebook/react#28297
- facebook/react#28286
- facebook/react#28284
- facebook/react#28275
- facebook/react#28145
- facebook/react#28301
- facebook/react#28224
- facebook/react#28152
- facebook/react#28296
- facebook/react#28294
- facebook/react#28279
- facebook/react#28273
- facebook/react#28269
- facebook/react#28376
- facebook/react#28338
- facebook/react#28331
- facebook/react#28336
- facebook/react#28320
- facebook/react#28317
- facebook/react#28375
- facebook/react#28367
- facebook/react#28380
- facebook/react#28368
- facebook/react#28343
- facebook/react#28355
- facebook/react#28374
- facebook/react#28362
- facebook/react#28344
- facebook/react#28339
- facebook/react#28353
- facebook/react#28346
- facebook/react#25790
- facebook/react#28352
- facebook/react#28326
- facebook/react#27688
- facebook/react#28329
- facebook/react#28332
- facebook/react#28340
- facebook/react#28327
- facebook/react#28325
- facebook/react#28324
- facebook/react#28309
- facebook/react#28310
- facebook/react#28307
- facebook/react#28306
- facebook/react#28315
- facebook/react#28318
- facebook/react#28226
- facebook/react#28308
- facebook/react#27563
- facebook/react#28297
- facebook/react#28286
- facebook/react#28284
- facebook/react#28275
- facebook/react#28145
- facebook/react#28301
- facebook/react#28224
- facebook/react#28152
- facebook/react#28296
- facebook/react#28294
- facebook/react#28279
- facebook/react#28273
- facebook/react#28269

Closes NEXT-2542


Disable ppr test for strict mode for now, @acdlite will check it and
we'll sync again
EdisonVan pushed a commit to EdisonVan/react that referenced this pull request Apr 15, 2024
Depends on:

- facebook#28317 

---

There's a ton of overlap between the createElement implementation and
the JSX implementation, so I combined them into a single module.

In the actual build output, the shared code between JSX and
createElement will get duplicated anyway, because react/jsx-runtime and
react (where createElement lives) are separate, flat build artifacts.

So this is more about code organization — with a few key exceptions, the
implementations of createElement and jsx are highly coupled.
EdisonVan pushed a commit to EdisonVan/react that referenced this pull request Apr 15, 2024
Depends on:

- facebook#28317 
- facebook#28320 

---

Changes the behavior of the JSX runtime to pass through `ref` as a
normal prop, rather than plucking it from the props object and storing
on the element.

This is a breaking change since it changes the type of the receiving
component. However, most code is unaffected since it's unlikely that a
component would have attempted to access a `ref` prop, since it was not
possible to get a reference to one.

`forwardRef` _will_ still pluck `ref` from the props object, though,
since it's extremely common for users to spread the props object onto
the inner component and pass `ref` as a differently named prop. This is
for maximum compatibility with existing code — the real impact of this
change is that `forwardRef` is no longer required.

Currently, refs are resolved during child reconciliation and stored on
the fiber. As a result of this change, we can move ref resolution to
happen only much later, and only for components that actually use them.
Then we can remove the `ref` field from the Fiber type. I have not yet
done that in this step, though.
EdisonVan pushed a commit to EdisonVan/react that referenced this pull request Apr 15, 2024
Full list of changes (not a public CHANGELOG):

* feature[REMOVED][devtools]: turn off / hide location based component
filters ([hoxyq](https://github.com/hoxyq) in
[facebook#28417](facebook#28417))
* Add useSyncExternalStore and useTransition to getPrimitiveStackCache
([jamesbvaughan](https://github.com/jamesbvaughan) in
[facebook#28399](facebook#28399))
* chore[devtools]: use react-window from npm and bump
react-virtualized-auto-sizer to ^1.0.23
([hoxyq](https://github.com/hoxyq) in
[facebook#28408](facebook#28408))
* Pass ref as normal prop ([acdlite](https://github.com/acdlite) in
[facebook#28348](facebook#28348))
* Combine createElement and JSX modules
([acdlite](https://github.com/acdlite) in
[facebook#28320](facebook#28320))
* [Debug Tools] Always use includeHooksSource option
([sebmarkbage](https://github.com/sebmarkbage) in
[facebook#28309](facebook#28309))
* Revert "[Tests] Reset modules by default"
([acdlite](https://github.com/acdlite) in
[facebook#28318](facebook#28318))
* Switch <Context> to mean <Context.Provider>
([gaearon](https://github.com/gaearon) in
[facebook#28226](facebook#28226))
* [Debug Tools] Introspect Promises in use()
([sebmarkbage](https://github.com/sebmarkbage) in
[facebook#28297](facebook#28297))
* fix[devtools/useModalDismissSignal]: use getRootNode for shadow root
case support ([hoxyq](https://github.com/hoxyq) in
[facebook#28145](facebook#28145))
* fix: define IS_ACT_ENVIRONMENT global for tests with concurrent mode
and synchronous act ([hoxyq](https://github.com/hoxyq) in
[facebook#28296](facebook#28296))
* chore: gate legacy apis for react-devtools-shell
([hoxyq](https://github.com/hoxyq) in
[facebook#28273](facebook#28273))
* DevTools: Add support for use(Context)
([eps1lon](https://github.com/eps1lon) in
[facebook#28233](facebook#28233))
* Remove __self and __source location from elements
([sebmarkbage](https://github.com/sebmarkbage) in
[facebook#28265](facebook#28265))
* chore: use versioned render in inspectedElement test
([hoxyq](https://github.com/hoxyq) in
[facebook#28246](facebook#28246))
* chore: use versioned render in TimelineProfiler test and gate some for
legacy rendering ([hoxyq](https://github.com/hoxyq) in
[facebook#28218](facebook#28218))
* [Tests] Reset modules by default
([rickhanlonii](https://github.com/rickhanlonii) in
[facebook#28254](facebook#28254))
* chore: use versioned render in preprocessData test and gate some for …
([hoxyq](https://github.com/hoxyq) in
[facebook#28219](facebook#28219))
* chore: use versioned render in storeStressSync test and gate them for
legacy rendering ([hoxyq](https://github.com/hoxyq) in
[facebook#28216](facebook#28216))
* Patch devtools before running useMemo function in strict mode
([gsathya](https://github.com/gsathya) in
[facebook#28249](facebook#28249))
* chore: use versioned render in storeComponentFilters test
([hoxyq](https://github.com/hoxyq) in
[facebook#28241](facebook#28241))
* chore: use versioned render in profilerContext test
([hoxyq](https://github.com/hoxyq) in
[facebook#28243](facebook#28243))
* chore: use versioned render in profilingCommitTreeBuilder test and
gate some for legacy rendering ([hoxyq](https://github.com/hoxyq) in
[facebook#28236](facebook#28236))
* chore: use versioned render in profilingHostRoot test and gate some
for legacy rendering ([hoxyq](https://github.com/hoxyq) in
[facebook#28237](facebook#28237))
* chore: use versioned render in profilingCache test
([hoxyq](https://github.com/hoxyq) in
[facebook#28242](facebook#28242))
* chore: use versioned render in ownersListContext test
([hoxyq](https://github.com/hoxyq) in
[facebook#28240](facebook#28240))
* chore: use versioned render in editing test
([hoxyq](https://github.com/hoxyq) in
[facebook#28239](facebook#28239))
* chore: use versioned render in treeContext test
([hoxyq](https://github.com/hoxyq) in
[facebook#28245](facebook#28245))
* chore: use versioned render in store test
([hoxyq](https://github.com/hoxyq) in
[facebook#28244](facebook#28244))
* chore: use versioned render in profilerStore test
([hoxyq](https://github.com/hoxyq) in
[facebook#28238](facebook#28238))
* chore: use versioned render in profilingCharts test
([hoxyq](https://github.com/hoxyq) in
[facebook#28235](facebook#28235))
* chore: use versioned render in profilerChangeDescriptions test
([hoxyq](https://github.com/hoxyq) in
[facebook#28221](facebook#28221))
* chore: use versioned render in storeOwners test
([hoxyq](https://github.com/hoxyq) in
[facebook#28215](facebook#28215))
* chore: use versioned render in componentStacks test
([hoxyq](https://github.com/hoxyq) in
[facebook#28214](facebook#28214))
* chore: use versioned render in console test
([hoxyq](https://github.com/hoxyq) in
[facebook#28213](facebook#28213))
* chore: use versioned render in useEditableValue test
([hoxyq](https://github.com/hoxyq) in
[facebook#28212](facebook#28212))
* chore: use versioned render in FastRefreshDevToolsIntegration test
([hoxyq](https://github.com/hoxyq) in
[facebook#28211](facebook#28211))
* chore: add versioned render implementation for DevTools tests
([hoxyq](https://github.com/hoxyq) in
[facebook#28210](facebook#28210))
* chore: add single versioned implementation of act for DevTools tests
([hoxyq](https://github.com/hoxyq) in
[facebook#28186](facebook#28186))
* DevTools: Add support for useFormState
([eps1lon](https://github.com/eps1lon) in
[facebook#28232](facebook#28232))
* DevTools: Add support for useOptimistic Hook
([eps1lon](https://github.com/eps1lon) in
[facebook#27982](facebook#27982))
* Add stable React.act export ([acdlite](https://github.com/acdlite) in
[facebook#28160](facebook#28160))
* [flow] upgrade to 0.225.1 ([kassens](https://github.com/kassens) in
[facebook#27871](facebook#27871))
* fix[devtools/e2e]: add fallback for act in integration tests
([hoxyq](https://github.com/hoxyq) in
[facebook#27842](facebook#27842))
* Add stable concurrent option to react-test-renderer
([jackpope](https://github.com/jackpope) in
[facebook#27804](facebook#27804))
* Update act references in tests ([gnoff](https://github.com/gnoff) in
[facebook#27805](facebook#27805))
* Flow: make more objects exact ([kassens](https://github.com/kassens)
in [facebook#27790](facebook#27790))
bigfootjon pushed a commit that referenced this pull request Apr 18, 2024
Depends on:

- #28317

---

There's a ton of overlap between the createElement implementation and
the JSX implementation, so I combined them into a single module.

In the actual build output, the shared code between JSX and
createElement will get duplicated anyway, because react/jsx-runtime and
react (where createElement lives) are separate, flat build artifacts.

So this is more about code organization — with a few key exceptions, the
implementations of createElement and jsx are highly coupled.

DiffTrain build for commit 5fb2c93.
bigfootjon pushed a commit that referenced this pull request Apr 18, 2024
Depends on:

- #28317
- #28320

---

Changes the behavior of the JSX runtime to pass through `ref` as a
normal prop, rather than plucking it from the props object and storing
on the element.

This is a breaking change since it changes the type of the receiving
component. However, most code is unaffected since it's unlikely that a
component would have attempted to access a `ref` prop, since it was not
possible to get a reference to one.

`forwardRef` _will_ still pluck `ref` from the props object, though,
since it's extremely common for users to spread the props object onto
the inner component and pass `ref` as a differently named prop. This is
for maximum compatibility with existing code — the real impact of this
change is that `forwardRef` is no longer required.

Currently, refs are resolved during child reconciliation and stored on
the fiber. As a result of this change, we can move ref resolution to
happen only much later, and only for components that actually use them.
Then we can remove the `ref` field from the Fiber type. I have not yet
done that in this step, though.

DiffTrain build for commit fa2f82a.
Akshato07 pushed a commit to Akshato07/-Luffy that referenced this pull request Feb 20, 2025
Full list of changes (not a public CHANGELOG):

* feature[REMOVED][devtools]: turn off / hide location based component
filters ([hoxyq](https://github.com/hoxyq) in
[#28417](facebook/react#28417))
* Add useSyncExternalStore and useTransition to getPrimitiveStackCache
([jamesbvaughan](https://github.com/jamesbvaughan) in
[#28399](facebook/react#28399))
* chore[devtools]: use react-window from npm and bump
react-virtualized-auto-sizer to ^1.0.23
([hoxyq](https://github.com/hoxyq) in
[#28408](facebook/react#28408))
* Pass ref as normal prop ([acdlite](https://github.com/acdlite) in
[#28348](facebook/react#28348))
* Combine createElement and JSX modules
([acdlite](https://github.com/acdlite) in
[#28320](facebook/react#28320))
* [Debug Tools] Always use includeHooksSource option
([sebmarkbage](https://github.com/sebmarkbage) in
[#28309](facebook/react#28309))
* Revert "[Tests] Reset modules by default"
([acdlite](https://github.com/acdlite) in
[#28318](facebook/react#28318))
* Switch <Context> to mean <Context.Provider>
([gaearon](https://github.com/gaearon) in
[#28226](facebook/react#28226))
* [Debug Tools] Introspect Promises in use()
([sebmarkbage](https://github.com/sebmarkbage) in
[#28297](facebook/react#28297))
* fix[devtools/useModalDismissSignal]: use getRootNode for shadow root
case support ([hoxyq](https://github.com/hoxyq) in
[#28145](facebook/react#28145))
* fix: define IS_ACT_ENVIRONMENT global for tests with concurrent mode
and synchronous act ([hoxyq](https://github.com/hoxyq) in
[#28296](facebook/react#28296))
* chore: gate legacy apis for react-devtools-shell
([hoxyq](https://github.com/hoxyq) in
[#28273](facebook/react#28273))
* DevTools: Add support for use(Context)
([eps1lon](https://github.com/eps1lon) in
[#28233](facebook/react#28233))
* Remove __self and __source location from elements
([sebmarkbage](https://github.com/sebmarkbage) in
[#28265](facebook/react#28265))
* chore: use versioned render in inspectedElement test
([hoxyq](https://github.com/hoxyq) in
[#28246](facebook/react#28246))
* chore: use versioned render in TimelineProfiler test and gate some for
legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28218](facebook/react#28218))
* [Tests] Reset modules by default
([rickhanlonii](https://github.com/rickhanlonii) in
[#28254](facebook/react#28254))
* chore: use versioned render in preprocessData test and gate some for …
([hoxyq](https://github.com/hoxyq) in
[#28219](facebook/react#28219))
* chore: use versioned render in storeStressSync test and gate them for
legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28216](facebook/react#28216))
* Patch devtools before running useMemo function in strict mode
([gsathya](https://github.com/gsathya) in
[#28249](facebook/react#28249))
* chore: use versioned render in storeComponentFilters test
([hoxyq](https://github.com/hoxyq) in
[#28241](facebook/react#28241))
* chore: use versioned render in profilerContext test
([hoxyq](https://github.com/hoxyq) in
[#28243](facebook/react#28243))
* chore: use versioned render in profilingCommitTreeBuilder test and
gate some for legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28236](facebook/react#28236))
* chore: use versioned render in profilingHostRoot test and gate some
for legacy rendering ([hoxyq](https://github.com/hoxyq) in
[#28237](facebook/react#28237))
* chore: use versioned render in profilingCache test
([hoxyq](https://github.com/hoxyq) in
[#28242](facebook/react#28242))
* chore: use versioned render in ownersListContext test
([hoxyq](https://github.com/hoxyq) in
[#28240](facebook/react#28240))
* chore: use versioned render in editing test
([hoxyq](https://github.com/hoxyq) in
[#28239](facebook/react#28239))
* chore: use versioned render in treeContext test
([hoxyq](https://github.com/hoxyq) in
[#28245](facebook/react#28245))
* chore: use versioned render in store test
([hoxyq](https://github.com/hoxyq) in
[#28244](facebook/react#28244))
* chore: use versioned render in profilerStore test
([hoxyq](https://github.com/hoxyq) in
[#28238](facebook/react#28238))
* chore: use versioned render in profilingCharts test
([hoxyq](https://github.com/hoxyq) in
[#28235](facebook/react#28235))
* chore: use versioned render in profilerChangeDescriptions test
([hoxyq](https://github.com/hoxyq) in
[#28221](facebook/react#28221))
* chore: use versioned render in storeOwners test
([hoxyq](https://github.com/hoxyq) in
[#28215](facebook/react#28215))
* chore: use versioned render in componentStacks test
([hoxyq](https://github.com/hoxyq) in
[#28214](facebook/react#28214))
* chore: use versioned render in console test
([hoxyq](https://github.com/hoxyq) in
[#28213](facebook/react#28213))
* chore: use versioned render in useEditableValue test
([hoxyq](https://github.com/hoxyq) in
[#28212](facebook/react#28212))
* chore: use versioned render in FastRefreshDevToolsIntegration test
([hoxyq](https://github.com/hoxyq) in
[#28211](facebook/react#28211))
* chore: add versioned render implementation for DevTools tests
([hoxyq](https://github.com/hoxyq) in
[#28210](facebook/react#28210))
* chore: add single versioned implementation of act for DevTools tests
([hoxyq](https://github.com/hoxyq) in
[#28186](facebook/react#28186))
* DevTools: Add support for useFormState
([eps1lon](https://github.com/eps1lon) in
[#28232](facebook/react#28232))
* DevTools: Add support for useOptimistic Hook
([eps1lon](https://github.com/eps1lon) in
[#27982](facebook/react#27982))
* Add stable React.act export ([acdlite](https://github.com/acdlite) in
[#28160](facebook/react#28160))
* [flow] upgrade to 0.225.1 ([kassens](https://github.com/kassens) in
[#27871](facebook/react#27871))
* fix[devtools/e2e]: add fallback for act in integration tests
([hoxyq](https://github.com/hoxyq) in
[#27842](facebook/react#27842))
* Add stable concurrent option to react-test-renderer
([jackpope](https://github.com/jackpope) in
[#27804](facebook/react#27804))
* Update act references in tests ([gnoff](https://github.com/gnoff) in
[#27805](facebook/react#27805))
* Flow: make more objects exact ([kassens](https://github.com/kassens)
in [#27790](facebook/react#27790))

DiffTrain build for commit facebook/react@288cf74.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed React Core Team Opened by a member of the React Core Team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants