Conversation
🦋 Changeset detectedLatest commit: 7dcfb80 The changes in this PR will be included in the next version bump. This PR includes changesets to release 12 packages
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 |
📝 WalkthroughWalkthroughIntroduces a Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
CodSpeed Performance ReportMerging #1979 will improve performances by 9%Comparing Summary
Benchmarks breakdown
Footnotes
|
React Example#6357 Bundle Size — 236.9KiB (0%).7dcfb80(current) vs c475c1e main#6351(baseline) Bundle metrics
|
| Current #6357 |
Baseline #6351 |
|
|---|---|---|
0B |
0B |
|
0B |
0B |
|
0% |
0% |
|
0 |
0 |
|
4 |
4 |
|
162 |
162 |
|
65 |
65 |
|
46.75% |
46.75% |
|
2 |
2 |
|
0 |
0 |
Bundle size by type no changes
| Current #6357 |
Baseline #6351 |
|
|---|---|---|
145.76KiB |
145.76KiB |
|
91.14KiB |
91.14KiB |
Bundle analysis report Branch PupilTong:p/hw/new-flex Project dashboard
Generated by RelativeCI Documentation Report issue
Web Explorer#6517 Bundle Size — 372.73KiB (-1.31%).7dcfb80(current) vs c475c1e main#6511(baseline) Bundle metrics
Bundle size by type
Bundle analysis report Branch PupilTong:p/hw/new-flex Project dashboard Generated by RelativeCI Documentation Report issue |
692dc60 to
fd5b249
Compare
fd5b249 to
c2762c4
Compare
c24db2d to
7dcfb80
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
packages/web-platform/web-mainthread-apis/src/style/transformer/transform.rs (2)
1-1: Import change toparse_inline_stylemodule looks correctUsing the wildcard import here is consistent with the later use of both
Transformerandparse_inline_style, and keeps the dependency localized to that submodule. If you want stricter visibility in future, you could switch to explicit imports for just those two items.
266-326: Flex tests correctly reflect the newflex -> --flexrename behaviorThese expectations align with the new rule that rewrites
flexinto the--flexcustom property while preserving the original value and surrounding text; theflex_1_extracase also validates offset handling around other declarations. You might optionally add aflex:… !importanttest to mirror the existing color-important cases and lock in!importantpropagation behavior.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/web-platform/web-mainthread-apis/src/style/transformer/transform.rs(2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: Sherry-hue
Repo: lynx-family/lynx-stack PR: 1770
File: packages/web-platform/web-mainthread-apis/src/utils/processStyleInfo.ts:316-318
Timestamp: 2025-09-18T08:12:56.802Z
Learning: In packages/web-platform/web-mainthread-apis/src/utils/processStyleInfo.ts, the current implementation uses cardStyleElement.textContent += for lazy component styles. While this could theoretically invalidate rule indices by reparsing the stylesheet, Sherry-hue indicated that UIDs don't repeat for the same element, making this approach acceptable for now. A future optimization to use separate style elements per entry was discussed but deferred to a separate PR to keep the current lazy bundle PR focused.
📚 Learning: 2025-09-18T08:12:56.802Z
Learnt from: Sherry-hue
Repo: lynx-family/lynx-stack PR: 1770
File: packages/web-platform/web-mainthread-apis/src/utils/processStyleInfo.ts:316-318
Timestamp: 2025-09-18T08:12:56.802Z
Learning: In packages/web-platform/web-mainthread-apis/src/utils/processStyleInfo.ts, the current implementation uses cardStyleElement.textContent += for lazy component styles. While this could theoretically invalidate rule indices by reparsing the stylesheet, Sherry-hue indicated that UIDs don't repeat for the same element, making this approach acceptable for now. A future optimization to use separate style elements per entry was discussed but deferred to a separate PR to keep the current lazy bundle PR focused.
Applied to files:
packages/web-platform/web-mainthread-apis/src/style/transformer/transform.rs
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>
<!-- Thank you for submitting a pull request! We appreciate the time and effort you have invested in making these changes. Please ensure that you provide enough information to allow others to review your pull request. Upon submission, your pull request will be automatically assigned with reviewers. If you want to learn more about contributing to this project, please visit: https://github.com/lynx-family/lynx-stack/blob/main/CONTRIBUTING.md. --> <!-- The AI summary below will be auto-generated - feel free to replace it with your own. --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Adds a unified flex handling and a new CSS custom property to simplify and standardize flexible layout behavior across components. * **Chores** * Bumps minor versions of web platform packages and updates styling/transform logic to support the new flex approach. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> ## 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).
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>
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.
Checklist