Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Release Fragment refs to Canary - #34720

Merged
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary
Oct 7, 2025
Merged

Release Fragment refs to Canary#34720
jackpope merged 2 commits into
react:mainfrom
eps1lon:sebbie/10-03-release_fragment_refs_to_canary

Conversation

@eps1lon

Copy link
Copy Markdown
Collaborator

Overview

This PR adds the ref prop to <Fragment> in react@canary.

This means this API is ready for final feedback and prepared for a semver stable release.

What this means

Shipping Fragment refs to canary means they have gone through extensive testing in production, we are confident in the stability of the APIs, and we are preparing to release it in a future semver stable version.

Libraries and frameworks following the Canary Workflow should begin implementing and testing these features.

Why we follow the Canary Workflow

To prepare for semver stable, libraries should test canary features like Fragment refs with react@canary to confirm compatibility and prepare for the next semver release in a myriad of environments and configurations used throughout the React ecosystem. This provides libraries with ample time to catch any issues we missed before slamming them with problems in the wider semver release.

Since these features have already gone through extensive production testing, and we are confident they are stable, frameworks following the Canary Workflow can also begin adopting canary features like Fragment refs.

This adoption is similar to how different Browsers implement new proposed browser features before they are added to the standard. If a frameworks adopts a canary feature, they are committing to stability for their users by ensuring any API changes before a semver stable release are opaque and non-breaking to their users.

Apps not using a framework are also free to adopt canary features like Fragment refs as long as they follow the Canary Workflow, but we generally recommend waiting for a semver stable release unless you have the capacity to commit to following along with the canary changes and debugging library compatibility issues.

Waiting for semver stable means you're able to benefit from libraries testing and confirming support, and use semver as signal for which version of a library you can use with support of the feature.

Docs

Check out the "React Labs: View Transitions, Activity, and more" blog post, and the new docs for Fragment refs` for more info.

@github-actionsgithub-actionsBot added the React Core Team Opened by a member of the React Core Team label Oct 3, 2025
@react-sizebot

react-sizebot commented Oct 3, 2025

Copy link
Copy Markdown

Comparing: d6eb735...ab0cf48

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable/react-dom/cjs/react-dom.production.js=6.68 kB6.68 kB+0.05%1.83 kB1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-experimental/react-dom/cjs/react-dom.production.js=6.69 kB6.69 kB=1.83 kB1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js=663.96 kB663.95 kB=117.04 kB117.03 kB
facebook-www/ReactDOM-prod.classic.js=687.83 kB687.81 kB=121.08 kB121.07 kB
facebook-www/ReactDOM-prod.modern.js=678.26 kB678.24 kB=119.44 kB119.42 kB
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name+/-BaseCurrent+/- gzipBase gzipCurrent gzip
oss-stable-semver/react-dom/cjs/react-dom-client.production.js+3.87%536.02 kB556.75 kB+3.96%94.78 kB98.53 kB
oss-stable/react-dom/cjs/react-dom-client.production.js+3.87%536.14 kB556.87 kB+3.96%94.81 kB98.56 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.63 kB628.36 kB+3.67%104.73 kB108.57 kB
oss-stable/react-dom/cjs/react-dom-profiling.profiling.js+3.41%607.76 kB628.49 kB+3.67%104.76 kB108.60 kB
react-native/implementations/ReactFabric-prod.js+2.30%360.97 kB369.26 kB+2.33%62.42 kB63.88 kB
oss-stable-semver/react-dom/cjs/react-dom-client.development.js+2.24%1,065.70 kB1,089.57 kB+2.43%176.67 kB180.97 kB
oss-stable/react-dom/cjs/react-dom-client.development.js+2.24%1,065.82 kB1,089.69 kB+2.43%176.70 kB180.99 kB
oss-stable-semver/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.08 kB1,105.95 kB+2.38%179.52 kB183.78 kB
oss-stable/react-dom/cjs/react-dom-profiling.development.js+2.21%1,082.21 kB1,106.08 kB+2.38%179.54 kB183.81 kB
react-native/implementations/ReactFabric-profiling.js+1.95%424.67 kB432.97 kB+2.11%71.25 kB72.75 kB
react-native/implementations/ReactFabric-dev.js+1.26%724.55 kB733.66 kB+1.40%115.36 kB116.97 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.production.js+1.17%407.78 kB412.54 kB+0.79%65.66 kB66.18 kB
oss-stable/react-reconciler/cjs/react-reconciler.production.js+1.17%407.80 kB412.56 kB+0.79%65.68 kB66.20 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.83 kB480.60 kB+0.75%74.48 kB75.04 kB
oss-stable/react-reconciler/cjs/react-reconciler.profiling.js+1.00%475.86 kB480.62 kB+0.75%74.50 kB75.06 kB
oss-stable-semver/react-reconciler/cjs/react-reconciler.development.js+0.64%750.27 kB755.08 kB+0.50%117.20 kB117.78 kB
oss-stable/react-reconciler/cjs/react-reconciler.development.js+0.64%750.30 kB755.11 kB+0.50%117.22 kB117.80 kB
oss-stable-semver/react-art/cjs/react-art.production.js+0.42%310.38 kB311.69 kB+0.27%52.68 kB52.83 kB
oss-stable/react-art/cjs/react-art.production.js+0.42%310.46 kB311.76 kB+0.27%52.71 kB52.85 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.89 kB324.20 kB+0.24%56.32 kB56.46 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.production.js+0.40%322.97 kB324.27 kB+0.24%56.35 kB56.48 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.production.js+0.40%323.14 kB324.45 kB+0.24%56.39 kB56.52 kB
react-native/implementations/ReactNativeRenderer-prod.js+0.35%376.32 kB377.64 kB+0.23%64.91 kB65.06 kB
react-native/implementations/ReactNativeRenderer-profiling.js+0.30%439.89 kB441.21 kB+0.23%73.88 kB74.05 kB
oss-stable-semver/react-art/cjs/react-art.development.js+0.22%656.30 kB657.78 kB+0.13%103.14 kB103.28 kB
oss-stable/react-art/cjs/react-art.development.js+0.22%656.38 kB657.85 kB+0.13%103.16 kB103.30 kB
oss-stable-semver/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.79 kB662.26 kB+0.13%104.46 kB104.60 kB
oss-experimental/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.81 kB662.29 kB+0.13%104.46 kB104.60 kB
oss-stable/react-test-renderer/cjs/react-test-renderer.development.js+0.22%660.86 kB662.34 kB+0.13%104.48 kB104.62 kB

Generated by 🚫 dangerJS against ab0cf48

@jackpope
jackpope merged commit a4eb2df into react:mainOct 7, 2025
240 of 241 checks passed
github-actionsBot pushed a commit that referenced this pull request Oct 7, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](a4eb2df)
@eps1lon
eps1lon deleted the sebbie/10-03-release_fragment_refs_to_canary branch October 7, 2025 04:33
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
github-actionsBot pushed a commit to code/lib-react that referenced this pull request Oct 11, 2025
## Overview
This PR adds the `ref` prop to `<Fragment>` in `react@canary`.
This means this API is ready for final feedback and prepared for a
semver stable release.
## What this means
Shipping Fragment refs to canary means they have gone through extensive
testing in production, we are confident in the stability of the APIs,
and we are preparing to release it in a future semver stable version.
Libraries and frameworks following the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries) should begin
implementing and testing these features.
## Why we follow the Canary Workflow
To prepare for semver stable, libraries should test canary features like
Fragment refs with `react@canary` to confirm compatibility and prepare
for the next semver release in a myriad of environments and
configurations used throughout the React ecosystem. This provides
libraries with ample time to catch any issues we missed before slamming
them with problems in the wider semver release.
Since these features have already gone through extensive production
testing, and we are confident they are stable, frameworks following the
[Canary Workflow](https://react.dev/blog/2023/05/03/react-canaries) can
also begin adopting canary features like Fragment refs.
This adoption is similar to how different Browsers implement new
proposed browser features before they are added to the standard. If a
frameworks adopts a canary feature, they are committing to stability for
their users by ensuring any API changes before a semver stable release
are opaque and non-breaking to their users.
Apps not using a framework are also free to adopt canary features like
Fragment refs as long as they follow the [Canary
Workflow](https://react.dev/blog/2023/05/03/react-canaries), but we
generally recommend waiting for a semver stable release unless you have
the capacity to commit to following along with the canary changes and
debugging library compatibility issues.
Waiting for semver stable means you're able to benefit from libraries
testing and confirming support, and use semver as signal for which
version of a library you can use with support of the feature.
## Docs
Check out the ["React Labs: View Transitions, Activity, and
more"](https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more#fragment-refs)
blog post, and [the new docs for Fragment
refs`](https://react.dev/reference/react/Fragment#fragmentinstance) for
more info.
DiffTrain build for [a4eb2df](react@a4eb2df)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedReact Core TeamOpened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eps1lon@react-sizebot@jackpope