Skip to content

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

Merged
Sherry-hue merged 1 commit intolynx-family:mainfrom
Sherry-hue:fix/page-p-id
Dec 2, 2025
Merged

fix(web): the l-p-comp-uid of page should be '1'#1970
Sherry-hue merged 1 commit intolynx-family:mainfrom
Sherry-hue:fix/page-p-id

Conversation

@Sherry-hue
Copy link
Collaborator

@Sherry-hue Sherry-hue commented Nov 28, 2025

Summary by CodeRabbit

  • Bug Fixes

    • Page element initialization corrected to ensure proper parent-component linkage and more reliable event routing.
  • Tests

    • Added test validating page-level event handling and UI state transition in response to user interaction.
  • Chores

    • Included a patch changeset to record the release note for this fix.

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

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).

@Sherry-hue Sherry-hue self-assigned this Nov 28, 2025
@Sherry-hue Sherry-hue added the bug Something isn't working label Nov 28, 2025
@changeset-bot
Copy link

changeset-bot bot commented Nov 28, 2025

🦋 Changeset detected

Latest commit: fd09a1c

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

This PR includes changesets to release 10 packages
Name Type
@lynx-js/web-mainthread-apis Patch
@lynx-js/web-core-server Patch
@lynx-js/web-core Patch
@lynx-js/web-worker-runtime Patch
upgrade-rspeedy Patch
@lynx-js/web-rsbuild-server-middleware Patch
@lynx-js/web-constants Patch
@lynx-js/web-worker-rpc Patch
@lynx-js/rspeedy Patch
create-rspeedy Patch

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
Contributor

coderabbitai bot commented Nov 28, 2025

📝 Walkthrough

Walkthrough

Updates page initialization to set the page element's parentComponentUniqueIdAttribute to '1', adds a patch changeset for @lynx-js/web-mainthread-apis, and introduces a test and component verifying a page tap changes color from pink to green.

Changes

Cohort / File(s) Summary
Changeset Entry
\.changeset/tender-areas-begin.md
Adds a patch changeset for @lynx-js/web-mainthread-apis describing the fix to the page l-p-comp-uid.
Core logic
packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts
Changes page element initialization to set parentComponentUniqueIdAttribute to '1' instead of '0'.
Tests
packages/web-platform/web-tests/tests/react.spec.ts, packages/web-platform/web-tests/tests/react/basic-page-event/index.jsx
Adds basic-page-event test and a React-like App component that toggles a target's background from pink to green on tap.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review the semantics and callers of parentComponentUniqueIdAttribute in createMainThreadGlobalThis.ts to ensure '1' is correct for page parent linkage.
  • Verify the new test's selectors, event binding, and timing are reliable across environments.

Possibly related PRs

Suggested reviewers

  • hzy
  • PupilTong

Poem

🐇 I hop where pages wake to sun,
A tiny change — the ID is one.
Pink turns green with gentle tap,
The rabbit cheers, then sips a tap. 🌿

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title directly matches the changeset message and accurately describes the main code change: updating the page element's parentComponentUniqueIdAttribute from '0' to '1'.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 37d981e and fd09a1c.

⛔ Files ignored due to path filters (1)
  • packages/web-platform/web-tests/tests/__snapshots__/server.vitest.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (4)
  • .changeset/tender-areas-begin.md (1 hunks)
  • packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts (1 hunks)
  • packages/web-platform/web-tests/tests/react.spec.ts (1 hunks)
  • packages/web-platform/web-tests/tests/react/basic-page-event/index.jsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/web-platform/web-tests/tests/react.spec.ts
  • packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts
🧰 Additional context used
📓 Path-based instructions (1)
.changeset/*.md

📄 CodeRabbit inference engine (AGENTS.md)

For contributions, generate and commit a Changeset describing your changes

Files:

  • .changeset/tender-areas-begin.md
🧠 Learnings (10)
📚 Learning: 2025-09-12T09:43:04.847Z
Learnt from: gaoachao
Repo: lynx-family/lynx-stack PR: 1736
File: .changeset/spotty-experts-smoke.md:1-3
Timestamp: 2025-09-12T09:43:04.847Z
Learning: In the lynx-family/lynx-stack repository, empty changeset files (containing only `---\n\n---`) are used for internal changes that modify src/** files but don't require meaningful release notes, such as private package changes or testing-only modifications. This satisfies CI requirements without generating user-facing release notes.

Applied to files:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-07-22T09:23:07.797Z
Learnt from: colinaaa
Repo: lynx-family/lynx-stack PR: 1330
File: .changeset/olive-animals-attend.md:1-3
Timestamp: 2025-07-22T09:23:07.797Z
Learning: In the lynx-family/lynx-stack repository, changesets are only required for meaningful changes to end-users such as bugfixes and features. Internal/development changes like chores, refactoring, or removing debug info do not need changeset entries.

Applied to files:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-09-12T09:43:04.847Z
Learnt from: gaoachao
Repo: lynx-family/lynx-stack PR: 1736
File: .changeset/spotty-experts-smoke.md:1-3
Timestamp: 2025-09-12T09:43:04.847Z
Learning: In the lynx-family/lynx-stack repository, private packages (marked with "private": true in package.json) like lynx-js/react-transform don't require meaningful changeset entries even when their public APIs change, since they are not published externally and only affect internal development.

Applied to files:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-07-22T09:26:16.722Z
Learnt from: colinaaa
Repo: lynx-family/lynx-stack PR: 1330
File: .changeset/olive-animals-attend.md:1-3
Timestamp: 2025-07-22T09:26:16.722Z
Learning: In the lynx-family/lynx-stack repository, CI checks require changesets when files matching the pattern "src/**" are modified (as configured in .changeset/config.json). For internal changes that don't need meaningful changesets, an empty changeset file is used to satisfy the CI requirement while not generating any release notes.

Applied to files:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-08-07T04:00:59.645Z
Learnt from: colinaaa
Repo: lynx-family/lynx-stack PR: 1454
File: pnpm-workspace.yaml:46-46
Timestamp: 2025-08-07T04:00:59.645Z
Learning: In the lynx-family/lynx-stack repository, the webpack patch (patches/webpack5.101.0.patch) was created to fix issues with webpack5.99.9 but only takes effect on webpack5.100.0 and later versions. The patchedDependencies entry should use "webpack@^5.100.0" to ensure the patch applies to the correct version range.

Applied to files:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-08-19T11:25:36.127Z
Learnt from: colinaaa
Repo: lynx-family/lynx-stack PR: 1558
File: .changeset/solid-squids-fall.md:2-2
Timestamp: 2025-08-19T11:25:36.127Z
Learning: In the lynx-family/lynx-stack repository, changesets should use the exact package name from package.json#name, not generic or unscoped names. Each package has its own specific scoped name (e.g., "lynx-js/react-transform" for packages/react/transform).

Applied to files:

  • .changeset/tender-areas-begin.md
📚 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:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-10-10T08:22:12.051Z
Learnt from: Sherry-hue
Repo: lynx-family/lynx-stack PR: 1837
File: packages/web-platform/web-mainthread-apis/src/prepareMainThreadAPIs.ts:266-266
Timestamp: 2025-10-10T08:22:12.051Z
Learning: In packages/web-platform/web-mainthread-apis, the handleUpdatedData function returned from prepareMainThreadAPIs is internal-only, used to serve web-core. It does not require public documentation, type exports, or SSR support.

Applied to files:

  • .changeset/tender-areas-begin.md
📚 Learning: 2025-10-11T06:16:12.517Z
Learnt from: Sherry-hue
Repo: lynx-family/lynx-stack PR: 1820
File: packages/web-platform/web-tests/tests/react.spec.ts:834-856
Timestamp: 2025-10-11T06:16:12.517Z
Learning: In packages/web-platform/web-tests/tests/react.spec.ts, the tests `basic-bindmouse` and `basic-mts-bindtouchstart` are NOT duplicates despite having similar test structures. They test different event types: `basic-bindmouse` validates mouse events (mousedown, mouseup, mousemove) with mouse-specific properties (button, buttons, x, y, pageX, pageY, clientX, clientY), while `basic-mts-bindtouchstart` validates touch events (touchstart) with touch arrays (touches, targetTouches, changedTouches). The similar test structure is coincidental and follows testing conventions.

Applied to files:

  • packages/web-platform/web-tests/tests/react/basic-page-event/index.jsx
📚 Learning: 2025-11-11T08:05:14.163Z
Learnt from: Sherry-hue
Repo: lynx-family/lynx-stack PR: 1932
File: packages/web-platform/web-tests/tests/react/basic-element-x-input-ng-bindinput/index.jsx:10-26
Timestamp: 2025-11-11T08:05:14.163Z
Learning: In packages/web-platform/web-tests/tests/react/basic-element-x-input-ng-bindinput/index.jsx, the test intentionally uses selectionStart twice in the result string (instead of selectionStart and selectionEnd) because it prioritizes testing whether x-input-ng works functionally, rather than validating the correctness of selection values.

Applied to files:

  • packages/web-platform/web-tests/tests/react/basic-page-event/index.jsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build / Build (Windows)
  • GitHub Check: build / Build (Ubuntu)
  • GitHub Check: test-rust / Test (Ubuntu)
🔇 Additional comments (4)
.changeset/tender-areas-begin.md (1)

1-5: LGTM! Changeset correctly documents the bugfix.

The changeset format is correct, uses the appropriate patch level for a bugfix, and clearly describes the fix to the l-p-comp-uid attribute.

packages/web-platform/web-tests/tests/react/basic-page-event/index.jsx (3)

1-4: LGTM! Imports are correct.

The license header and imports follow the standard pattern for this codebase.


5-22: LGTM! Component logic is correct.

The App component correctly uses React hooks and event handlers to demonstrate a page-level tap event that changes the background color from pink to green.


23-25: LGTM! Rendering call follows the expected pattern.

The root.render() call correctly mounts the App component.


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.

PupilTong
PupilTong previously approved these changes Nov 28, 2025
@Sherry-hue Sherry-hue enabled auto-merge (squash) November 28, 2025 08:17
@codecov
Copy link

codecov bot commented Nov 28, 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

codspeed-hq bot commented Nov 28, 2025

CodSpeed Performance Report

Merging #1970 will degrade performances by 6.7%

Comparing Sherry-hue:fix/page-p-id (fd09a1c) with main (64e02bf)

Summary

⚡ 1 improvement
❌ 1 regression
✅ 61 untouched
⏩ 3 skipped1

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

Benchmarks breakdown

Benchmark BASE HEAD Change
basic-performance-div-100 6.5 ms 6 ms +7.38%
basic-performance-small-css 6.9 ms 7.4 ms -6.7%

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

relativeci bot commented Nov 28, 2025

Web Explorer

#6450 Bundle Size — 377.48KiB (0%).

fd09a1c(current) vs 8b19aff main#6448(baseline)

Bundle metrics  Change 2 changes
                 Current
#6450
     Baseline
#6448
No change  Initial JS 146.31KiB 146.31KiB
No change  Initial CSS 32.38KiB 32.38KiB
No change  Cache Invalidation 0% 0%
No change  Chunks 8 8
No change  Assets 8 8
Change  Modules 229(-0.43%) 230
No change  Duplicate Modules 16 16
Change  Duplicate Code 2.96%(+0.34%) 2.95%
No change  Packages 4 4
No change  Duplicate Packages 0 0
Bundle size by type  no changes
                 Current
#6450
     Baseline
#6448
No change  JS 243.15KiB 243.15KiB
No change  Other 101.94KiB 101.94KiB
No change  CSS 32.38KiB 32.38KiB

Bundle analysis reportBranch Sherry-hue:fix/page-p-idProject dashboard


Generated by RelativeCIDocumentationReport issue

@relativeci
Copy link

relativeci bot commented Nov 28, 2025

React Example

#6290 Bundle Size — 236.09KiB (-0.1%).

fd09a1c(current) vs 8b19aff main#6288(baseline)

Bundle metrics  Change 1 change
                 Current
#6290
     Baseline
#6288
No change  Initial JS 0B 0B
No change  Initial CSS 0B 0B
Change  Cache Invalidation 38.32% 0%
No change  Chunks 0 0
No change  Assets 4 4
No change  Modules 162 162
No change  Duplicate Modules 65 65
No change  Duplicate Code 46.71% 46.71%
No change  Packages 2 2
No change  Duplicate Packages 0 0
Bundle size by type  Change 1 change Improvement 1 improvement
                 Current
#6290
     Baseline
#6288
No change  IMG 145.76KiB 145.76KiB
Improvement  Other 90.33KiB (-0.27%) 90.57KiB

Bundle analysis reportBranch Sherry-hue:fix/page-p-idProject dashboard


Generated by RelativeCIDocumentationReport issue

@Sherry-hue Sherry-hue merged commit 46bd5ee into lynx-family:main Dec 2, 2025
144 of 152 checks passed
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
<!--
  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

* **Bug Fixes**
* Fixed page element initialization to ensure proper parent component
linkage, improving accuracy of component association and event routing
within page hierarchies.

* **Tests**
* Added new test coverage for page-level event handling, validating
proper component interaction and response to user actions.

<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).
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

Labels

bug Something isn't working platform:Web

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants