Skip to content

fix(rspeedy/react)!: remove experiments.layers#1951

Merged
colinaaa merged 1 commit intolynx-family:mainfrom
colinaaa:colin/1124/layers
Nov 27, 2025
Merged

fix(rspeedy/react)!: remove experiments.layers#1951
colinaaa merged 1 commit intolynx-family:mainfrom
colinaaa:colin/1124/layers

Conversation

@colinaaa
Copy link
Copy Markdown
Collaborator

@colinaaa colinaaa commented Nov 24, 2025

Summary by CodeRabbit

  • Breaking Changes
    • This release requires @lynx-js/rspeedy version 0.12.0 or higher
    • Rsbuild experiments configuration is no longer automatically managed by the React plugin

✏️ Tip: You can customize this high-level summary in your review settings.

Resolve the deprecated warning of Rspack 1.6:

(node:48125) DeprecationWarning: `experiments.layers` config has been deprecated and will be removed in Rspack v2.0. Feature layers will be always enabled. Please remove this option from your Rspack configuration.

Checklist

  • Tests updated (or not required).
  • Documentation updated (or not required).
  • Changeset added, and when a BREAKING CHANGE occurs, it needs to be clearly marked (or not required).

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Nov 24, 2025

🦋 Changeset detected

Latest commit: 3f77ef1

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@lynx-js/react-rsbuild-plugin Minor
@lynx-js/react-alias-rsbuild-plugin Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Nov 24, 2025

📝 Walkthrough

Walkthrough

A changeset marks a minor version bump for @lynx-js/react-rsbuild-plugin requiring @lynx-js/rspeedy 0.12.0 or higher. The React loader configuration was modified to remove automatic forcing of Rsbuild experiments layers through the chain setup.

Changes

Cohort / File(s) Summary
Release metadata
\.changeset/sharp-plants-repair\.md
Added changeset file for minor version release with BREAKING CHANGE note requiring @lynx-js/rspeedy ≥ 0.12.0
Loader configuration
packages/rspeedy/plugin-react/src/loaders\.ts
Removed retrieval and forced merging of Rsbuild chain experiments configuration (layers: true)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • The removal of experiments chain configuration warrants verification that downstream behavior is intentional and properly handled elsewhere
  • Ensure the BREAKING CHANGE requirement in the changeset aligns with when this feature removal takes effect

Suggested labels

framework:React

Suggested reviewers

  • upupming
  • gaoachao
  • luhc228

Poem

🐰 A layer removed with thoughtful care,
No forcing chains through autumn air,
Simpler paths for React to go,
Let Rsbuild experiments flow! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'fix(rspeedy/react)!: remove experiments.layers' directly and accurately summarizes the main change in the pull request—removing the deprecated experiments.layers configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread .changeset/sharp-plants-repair.md
@codecov
Copy link
Copy Markdown

codecov bot commented Nov 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Nov 24, 2025

CodSpeed Performance Report

Merging #1951 will degrade performances by 10.02%

Comparing colinaaa:colin/1124/layers (3f77ef1) with main (4695100)

Summary

❌ 1 regression
✅ 62 untouched
⏩ 3 skipped1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark BASE HEAD Change
basic-performance-small-css 6.9 ms 7.6 ms -10.02%

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@relativeci
Copy link
Copy Markdown

relativeci bot commented Nov 24, 2025

Web Explorer

#6292 Bundle Size — 377.49KiB (0%).

3f77ef1(current) vs 4695100 main#6283(baseline)

Bundle metrics  no changes
                 Current
#6292
     Baseline
#6283
No change  Initial JS 146.32KiB 146.32KiB
No change  Initial CSS 32.37KiB 32.37KiB
No change  Cache Invalidation 0% 0%
No change  Chunks 8 8
No change  Assets 8 8
No change  Modules 230 230
No change  Duplicate Modules 16 16
No change  Duplicate Code 2.95% 2.95%
No change  Packages 4 4
No change  Duplicate Packages 0 0
Bundle size by type  no changes
                 Current
#6292
     Baseline
#6283
No change  JS 243.18KiB 243.18KiB
No change  Other 101.94KiB 101.94KiB
No change  CSS 32.37KiB 32.37KiB

Bundle analysis reportBranch colinaaa:colin/1124/layersProject dashboard


Generated by RelativeCIDocumentationReport issue

@colinaaa colinaaa requested review from HuJean and upupming November 24, 2025 06:54
@colinaaa colinaaa requested a review from luhc228 November 26, 2025 00:51
gaoachao pushed a commit that referenced this pull request Nov 26, 2025
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Removed automatic inlineScripts configuration override; now relies on
existing defaults
  * Cleaned up configuration comments

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Since we are bumping the required `@lynx-js/rspeedy` version in #1951,
we can resolve some `TODO`s to simplify the plugin.

## Checklist

<!--- Check and mark with an "x" -->

- [ ] Tests updated (or not required).
- [ ] Documentation updated (or not required).
- [ ] Changeset added, and when a BREAKING CHANGE occurs, it needs to be
clearly marked (or not required).
@colinaaa colinaaa merged commit 530f63a into lynx-family:main Nov 27, 2025
207 of 219 checks passed
@colinaaa colinaaa deleted the colin/1124/layers branch November 27, 2025 02:29
colinaaa pushed a commit that referenced this pull request Dec 7, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @lynx-js/react@0.115.0

### Minor Changes

- **BREAKING CHANGE**: Delay the `createSnapshot` operation to
`Snapshot` constructor to speed up IFR.
([#1899](#1899))

    This change refactors how snapshots are created and registered:

    -   Removed the `entryUniqID` function
- Snapshots are now lazily created via `snapshotCreatorMap` instead of
eagerly at bundle load time
- Snapshot IDs are generated at compile time and only prefixed with
`${globDynamicComponentEntry}:` for standalone lazy bundles

    **⚠️ Lazy Bundle Compatibility:**

- **Backward compatibility (new runtime → old lazy bundles)**: ✅
**Supported**. Old lazy bundles will work with the new runtime.

- **Forward compatibility (old runtime → new lazy bundles)**: ❌ **NOT
Supported**. Lower version consumers **will not be able to load lazy
bundles produced by this version** due to the changed snapshot creation
mechanism.

    **Migration guidance**:
If you are using lazy bundles, ensure all consumers are upgraded to this
version or later **before** deploying lazy bundles built with this
version. For monorepo setups, coordinate the upgrade across all
consuming applications.

### Patch Changes

- Preserve assignments to webpack runtime variables like
`__webpack_public_path__`, `__webpack_require__.p`, etc.
([#1958](#1958))

- Fixed blank screen issues with nested lists. Lazily created nested
lists were being flushed but not properly recorded, causing rendering
failures. ([#1963](#1963))

- fix: export `createRef` and `useRef` from
`@lynx-js/react/legacy-react-runtime`
([#1953](#1953))

## @lynx-js/react-rsbuild-plugin@0.12.0

### Minor Changes

- **BREAKING CHANGE**: Require `@lynx-js/rspeedy` 0.12.0.
([#1951](#1951))

### Patch Changes

- Support Yarn Plug'n'Play.
([#1964](#1964))

- Updated dependencies
\[[`738d44d`](738d44d),
[`5bbb439`](5bbb439),
[`3692a16`](3692a16),
[`d2e290b`](d2e290b),
[`738d44d`](738d44d)]:
    -   @lynx-js/react-alias-rsbuild-plugin@0.12.0
    -   @lynx-js/css-extract-webpack-plugin@0.6.5
    -   @lynx-js/template-webpack-plugin@0.9.2
    -   @lynx-js/use-sync-external-store@1.5.0
    -   @lynx-js/react-refresh-webpack-plugin@0.3.4
    -   @lynx-js/react-webpack-plugin@0.7.2

## @lynx-js/react-alias-rsbuild-plugin@0.12.0

### Minor Changes

- **BREAKING CHANGE**: Use resolver from Rspack.
([#1964](#1964))

    The `createLazyResolver` now requires an `rspack` parameter:

    ```diff
- function createLazyResolver(directory: string, conditionNames:
string[]): (request: string) => Promise<string>;
+ function createLazyResolver(rspack: rspack, directory: string,
conditionNames: string[]): (request: string) => Promise<string>;
    ```

### Patch Changes

- Support Yarn Plug'n'Play.
([#1964](#1964))

## @lynx-js/web-core@0.19.0

### Minor Changes

- feat: new flex:val impl
([#1979](#1979))

### Patch Changes

- Updated dependencies
\[[`40c3a1a`](40c3a1a),
[`46bd5ee`](46bd5ee)]:
    -   @lynx-js/web-mainthread-apis@0.19.0
    -   @lynx-js/web-worker-runtime@0.19.0
    -   @lynx-js/web-constants@0.19.0
    -   @lynx-js/web-worker-rpc@0.19.0

## @lynx-js/web-elements@0.9.0

### Minor Changes

- feat: new flex:val impl
([#1979](#1979))

### Patch Changes

- fix: x-input display should add !important to avoid override
([#1960](#1960))

-   Updated dependencies \[]:
    -   @lynx-js/web-elements-template@0.9.0

## @lynx-js/rspeedy@0.12.1

### Patch Changes

- Bump Rsbuild v1.6.9 with Rspack v1.6.5.
([#1967](#1967))

-   Updated dependencies \[]:
    -   @lynx-js/web-rsbuild-server-middleware@0.19.0

## create-rspeedy@0.12.1

### Patch Changes

- Bump `@rsbuild/plugin-type-check` v1.3.1.
([#1964](#1964))

## @lynx-js/lynx-bundle-rslib-config@0.0.1

### Patch Changes

- Add `@lynx-js/lynx-bundle-rslib-config` for bundling Lynx bundle with
[Rslib](https://rslib.rs/):
([#1943](#1943))

    ```js
    // rslib.config.js
import { defineExternalBundleRslibConfig } from
"@lynx-js/lynx-bundle-rslib-config";

    export default defineExternalBundleRslibConfig({
      id: "utils-lib",
      source: {
        entry: {
          utils: "./src/utils.ts",
        },
      },
    });
    ```

## @lynx-js/web-constants@0.19.0

### Patch Changes

-   Updated dependencies \[]:
    -   @lynx-js/web-worker-rpc@0.19.0

## @lynx-js/web-explorer@0.0.14

### Patch Changes

- chore: update web-elements version of web-explorer
([#1962](#1962))

## @lynx-js/web-mainthread-apis@0.19.0

### Patch Changes

- fix: capture and bind event listener should be trigger correctly
([#1972](#1972))

- fix: the l-p-comp-uid of page should be '1'
([#1970](#1970))

-   Updated dependencies \[]:
    -   @lynx-js/web-constants@0.19.0

## @lynx-js/web-worker-runtime@0.19.0

### Patch Changes

- Updated dependencies
\[[`40c3a1a`](40c3a1a),
[`46bd5ee`](46bd5ee)]:
    -   @lynx-js/web-mainthread-apis@0.19.0
    -   @lynx-js/web-constants@0.19.0
    -   @lynx-js/web-worker-rpc@0.19.0

## @lynx-js/css-extract-webpack-plugin@0.6.5

### Patch Changes

- Set main thread JS basename to `lepusCode.filename` in tasm encode
data. It will ensure a filename is reported on MTS error without
devtools enabled.
([#1949](#1949))

## @lynx-js/template-webpack-plugin@0.9.2

### Patch Changes

- Set main thread JS basename to `lepusCode.filename` in tasm encode
data. It will ensure a filename is reported on MTS error without
devtools enabled.
([#1949](#1949))

- Upgrade `@lynx-js/tasm` to `0.0.20`.
([#1943](#1943))

- refactor: move web style info generation to the encode phase
([#1975](#1975))

## upgrade-rspeedy@0.12.1



## @lynx-js/web-core-server@0.19.0



## @lynx-js/web-elements-template@0.9.0



## @lynx-js/web-rsbuild-server-middleware@0.19.0



## @lynx-js/web-worker-rpc@0.19.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
f0rdream pushed a commit to f0rdream/lynx-stack that referenced this pull request Dec 18, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @lynx-js/react@0.115.0

### Minor Changes

- **BREAKING CHANGE**: Delay the `createSnapshot` operation to
`Snapshot` constructor to speed up IFR.
([lynx-family#1899](lynx-family#1899))

    This change refactors how snapshots are created and registered:

    -   Removed the `entryUniqID` function
- Snapshots are now lazily created via `snapshotCreatorMap` instead of
eagerly at bundle load time
- Snapshot IDs are generated at compile time and only prefixed with
`${globDynamicComponentEntry}:` for standalone lazy bundles

    **⚠️ Lazy Bundle Compatibility:**

- **Backward compatibility (new runtime → old lazy bundles)**: ✅
**Supported**. Old lazy bundles will work with the new runtime.

- **Forward compatibility (old runtime → new lazy bundles)**: ❌ **NOT
Supported**. Lower version consumers **will not be able to load lazy
bundles produced by this version** due to the changed snapshot creation
mechanism.

    **Migration guidance**:
If you are using lazy bundles, ensure all consumers are upgraded to this
version or later **before** deploying lazy bundles built with this
version. For monorepo setups, coordinate the upgrade across all
consuming applications.

### Patch Changes

- Preserve assignments to webpack runtime variables like
`__webpack_public_path__`, `__webpack_require__.p`, etc.
([lynx-family#1958](lynx-family#1958))

- Fixed blank screen issues with nested lists. Lazily created nested
lists were being flushed but not properly recorded, causing rendering
failures. ([lynx-family#1963](lynx-family#1963))

- fix: export `createRef` and `useRef` from
`@lynx-js/react/legacy-react-runtime`
([lynx-family#1953](lynx-family#1953))

## @lynx-js/react-rsbuild-plugin@0.12.0

### Minor Changes

- **BREAKING CHANGE**: Require `@lynx-js/rspeedy` 0.12.0.
([lynx-family#1951](lynx-family#1951))

### Patch Changes

- Support Yarn Plug'n'Play.
([lynx-family#1964](lynx-family#1964))

- Updated dependencies
\[[`738d44d`](lynx-family@738d44d),
[`5bbb439`](lynx-family@5bbb439),
[`3692a16`](lynx-family@3692a16),
[`d2e290b`](lynx-family@d2e290b),
[`738d44d`](lynx-family@738d44d)]:
    -   @lynx-js/react-alias-rsbuild-plugin@0.12.0
    -   @lynx-js/css-extract-webpack-plugin@0.6.5
    -   @lynx-js/template-webpack-plugin@0.9.2
    -   @lynx-js/use-sync-external-store@1.5.0
    -   @lynx-js/react-refresh-webpack-plugin@0.3.4
    -   @lynx-js/react-webpack-plugin@0.7.2

## @lynx-js/react-alias-rsbuild-plugin@0.12.0

### Minor Changes

- **BREAKING CHANGE**: Use resolver from Rspack.
([lynx-family#1964](lynx-family#1964))

    The `createLazyResolver` now requires an `rspack` parameter:

    ```diff
- function createLazyResolver(directory: string, conditionNames:
string[]): (request: string) => Promise<string>;
+ function createLazyResolver(rspack: rspack, directory: string,
conditionNames: string[]): (request: string) => Promise<string>;
    ```

### Patch Changes

- Support Yarn Plug'n'Play.
([lynx-family#1964](lynx-family#1964))

## @lynx-js/web-core@0.19.0

### Minor Changes

- feat: new flex:val impl
([lynx-family#1979](lynx-family#1979))

### Patch Changes

- Updated dependencies
\[[`40c3a1a`](lynx-family@40c3a1a),
[`46bd5ee`](lynx-family@46bd5ee)]:
    -   @lynx-js/web-mainthread-apis@0.19.0
    -   @lynx-js/web-worker-runtime@0.19.0
    -   @lynx-js/web-constants@0.19.0
    -   @lynx-js/web-worker-rpc@0.19.0

## @lynx-js/web-elements@0.9.0

### Minor Changes

- feat: new flex:val impl
([lynx-family#1979](lynx-family#1979))

### Patch Changes

- fix: x-input display should add !important to avoid override
([lynx-family#1960](lynx-family#1960))

-   Updated dependencies \[]:
    -   @lynx-js/web-elements-template@0.9.0

## @lynx-js/rspeedy@0.12.1

### Patch Changes

- Bump Rsbuild v1.6.9 with Rspack v1.6.5.
([lynx-family#1967](lynx-family#1967))

-   Updated dependencies \[]:
    -   @lynx-js/web-rsbuild-server-middleware@0.19.0

## create-rspeedy@0.12.1

### Patch Changes

- Bump `@rsbuild/plugin-type-check` v1.3.1.
([lynx-family#1964](lynx-family#1964))

## @lynx-js/lynx-bundle-rslib-config@0.0.1

### Patch Changes

- Add `@lynx-js/lynx-bundle-rslib-config` for bundling Lynx bundle with
[Rslib](https://rslib.rs/):
([lynx-family#1943](lynx-family#1943))

    ```js
    // rslib.config.js
import { defineExternalBundleRslibConfig } from
"@lynx-js/lynx-bundle-rslib-config";

    export default defineExternalBundleRslibConfig({
      id: "utils-lib",
      source: {
        entry: {
          utils: "./src/utils.ts",
        },
      },
    });
    ```

## @lynx-js/web-constants@0.19.0

### Patch Changes

-   Updated dependencies \[]:
    -   @lynx-js/web-worker-rpc@0.19.0

## @lynx-js/web-explorer@0.0.14

### Patch Changes

- chore: update web-elements version of web-explorer
([lynx-family#1962](lynx-family#1962))

## @lynx-js/web-mainthread-apis@0.19.0

### Patch Changes

- fix: capture and bind event listener should be trigger correctly
([lynx-family#1972](lynx-family#1972))

- fix: the l-p-comp-uid of page should be '1'
([lynx-family#1970](lynx-family#1970))

-   Updated dependencies \[]:
    -   @lynx-js/web-constants@0.19.0

## @lynx-js/web-worker-runtime@0.19.0

### Patch Changes

- Updated dependencies
\[[`40c3a1a`](lynx-family@40c3a1a),
[`46bd5ee`](lynx-family@46bd5ee)]:
    -   @lynx-js/web-mainthread-apis@0.19.0
    -   @lynx-js/web-constants@0.19.0
    -   @lynx-js/web-worker-rpc@0.19.0

## @lynx-js/css-extract-webpack-plugin@0.6.5

### Patch Changes

- Set main thread JS basename to `lepusCode.filename` in tasm encode
data. It will ensure a filename is reported on MTS error without
devtools enabled.
([lynx-family#1949](lynx-family#1949))

## @lynx-js/template-webpack-plugin@0.9.2

### Patch Changes

- Set main thread JS basename to `lepusCode.filename` in tasm encode
data. It will ensure a filename is reported on MTS error without
devtools enabled.
([lynx-family#1949](lynx-family#1949))

- Upgrade `@lynx-js/tasm` to `0.0.20`.
([lynx-family#1943](lynx-family#1943))

- refactor: move web style info generation to the encode phase
([lynx-family#1975](lynx-family#1975))

## upgrade-rspeedy@0.12.1



## @lynx-js/web-core-server@0.19.0



## @lynx-js/web-elements-template@0.9.0



## @lynx-js/web-rsbuild-server-middleware@0.19.0



## @lynx-js/web-worker-rpc@0.19.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants