Skip to content

feat: allow passing jsdom to new LynxTestingEnv#1422

Merged
upupming merged 6 commits intolynx-family:mainfrom
upupming:feat/testing-env-jsdom
Aug 15, 2025
Merged

feat: allow passing jsdom to new LynxTestingEnv#1422
upupming merged 6 commits intolynx-family:mainfrom
upupming:feat/testing-env-jsdom

Conversation

@upupming
Copy link
Copy Markdown
Collaborator

@upupming upupming commented Aug 4, 2025

Summary by CodeRabbit

  • Bug Fixes

    • Testing environment now initializes correctly when required globals are absent.
  • Documentation

    • Examples clarify providing a JSDOM instance when creating the testing environment.
  • Refactor

    • Made the JSDOM dependency explicit and injectable for clearer, more flexible setup.
  • Chores

    • Package now includes CHANGELOG.md in published files.

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 Aug 4, 2025

🦋 Changeset detected

Latest commit: e72ee8d

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

This PR includes changesets to release 1 package
Name Type
@lynx-js/testing-environment 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
Copy Markdown
Contributor

coderabbitai Bot commented Aug 4, 2025

📝 Walkthrough

Walkthrough

LynxTestingEnv now accepts an optional JSDOM instance via its constructor; code and docs were updated to pass a JSDOM instance explicitly, a generated API report file was removed, and the vitest setup now injects the JSDOM instance instead of setting global.jsdom.

Changes

Cohort / File(s) Change Summary
Constructor & Core
packages/testing-library/testing-environment/src/index.ts
LynxTestingEnv constructor changed to constructor(jsdom?: JSDOM); jsdom property made instance-held and is assigned from the provided jsdom or global.jsdom; DOM shims now sourced from this.jsdom.
Vitest Environment
packages/testing-library/testing-environment/src/env/vitest/index.ts
Removed assignment of fakeGlobal.jsdom to global.jsdom; import JSDOM and pass fakeGlobal.jsdom into new LynxTestingEnv(...). Teardown still deletes global.lynxTestingEnv and global.jsdom.
Documentation / Examples
packages/testing-library/testing-environment/README.md
README examples updated to import JSDOM and instantiate LynxTestingEnv with new JSDOM() (explicit injection).
API Reports
packages/testing-library/testing-environment/etc/test-environment.api.md, packages/testing-library/testing-environment/etc/testing-environment.api.md
Removed full API report file; remaining API report updated to reflect constructor signature change (now accepts optional JSDOM).
Package Files
.changeset/rare-mice-leave.md, packages/testing-library/testing-environment/package.json
Added changeset describing initialization fix; package.json "files" updated to include CHANGELOG.md in published files.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Suggested reviewers

  • Yradex
  • Sherry-hue
  • colinaaa
  • gaoachao

Poem

🐇
I hopped through code where globals once grew,
I carried a JSDOM, fresh as morning dew.
No stray objects left in the lawn,
Docs updated, the path is drawn.
A nibble of clarity — quick and true.

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • 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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 71eabbc and 73a6b70.

📒 Files selected for processing (6)
  • .changeset/rare-mice-leave.md (1 hunks)
  • packages/testing-library/testing-environment/README.md (1 hunks)
  • packages/testing-library/testing-environment/etc/test-environment.api.md (0 hunks)
  • packages/testing-library/testing-environment/etc/testing-environment.api.md (1 hunks)
  • packages/testing-library/testing-environment/src/env/vitest/index.ts (2 hunks)
  • packages/testing-library/testing-environment/src/index.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/testing-library/testing-environment/etc/test-environment.api.md
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: colinaaa
PR: lynx-family/lynx-stack#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.
Learnt from: colinaaa
PR: lynx-family/lynx-stack#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.
📚 Learning: in the lynx-family/lynx-stack repository, changesets are only required for meaningful changes to end...
Learnt from: colinaaa
PR: lynx-family/lynx-stack#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/rare-mice-leave.md
  • packages/testing-library/testing-environment/src/index.ts
📚 Learning: in the lynx-family/lynx-stack repository, ci checks require changesets when files matching the patte...
Learnt from: colinaaa
PR: lynx-family/lynx-stack#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/rare-mice-leave.md
📚 Learning: in the lynx-stack ssr implementation, each createlynxview instance is used to render once and then d...
Learnt from: PupilTong
PR: lynx-family/lynx-stack#1029
File: packages/web-platform/web-core-server/src/createLynxView.ts:0-0
Timestamp: 2025-07-16T06:26:22.230Z
Learning: In the lynx-stack SSR implementation, each createLynxView instance is used to render once and then discarded. There's no reuse of the same instance for multiple renders, so event arrays and other state don't need to be cleared between renders.

Applied to files:

  • packages/testing-library/testing-environment/src/index.ts
🔇 Additional comments (9)
.changeset/rare-mice-leave.md (1)

1-6: LGTM! Changeset properly documents the feature.

The changeset correctly identifies this as a patch-level change and accurately describes the fix for the jsdom initialization issue. The description aligns well with the code changes that make jsdom dependency explicit.

packages/testing-library/testing-environment/README.md (2)

11-11: LGTM! Import addition is correct.

The JSDOM import is properly added to support the updated usage example.


13-13: LGTM! Constructor usage updated correctly.

The example now properly demonstrates passing a JSDOM instance to the LynxTestingEnv constructor, which matches the updated API signature.

packages/testing-library/testing-environment/etc/testing-environment.api.md (1)

91-91: LGTM! API documentation correctly reflects constructor changes.

The API report properly documents the new optional jsdom parameter in the LynxTestingEnv constructor, which aligns with the implementation changes.

packages/testing-library/testing-environment/src/env/vitest/index.ts (2)

3-3: LGTM! Import addition supports explicit jsdom passing.

The JSDOM import is correctly added to enable explicit passing to the LynxTestingEnv constructor.


14-14: LGTM! Improved jsdom initialization pattern.

The explicit passing of fakeGlobal.jsdom to the LynxTestingEnv constructor is cleaner and more reliable than the previous global assignment approach. This eliminates potential initialization issues when global.jsdom is undefined.

packages/testing-library/testing-environment/src/index.ts (3)

411-411: LGTM! JSDoc example updated correctly.

The example properly demonstrates the new constructor usage with explicit JSDOM instantiation.


433-433: LGTM! JSDoc example updated correctly.

The background thread example properly shows the new constructor pattern.


449-449: LGTM! JSDoc example updated correctly.

The main thread example properly demonstrates the updated constructor usage.

Comment thread packages/testing-library/testing-environment/src/index.ts Outdated
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Aug 5, 2025

CodSpeed Performance Report

Merging #1422 will not alter performance

Comparing upupming:feat/testing-env-jsdom (e72ee8d) with main (bd73b8d)

Summary

✅ 10 untouched benchmarks

@relativeci
Copy link
Copy Markdown

relativeci Bot commented Aug 5, 2025

Web Explorer

#4254 Bundle Size — 348.12KiB (0%).

e72ee8d(current) vs 7ccf12f main#4252(baseline)

Bundle metrics  Change 2 changes
                 Current
#4254
     Baseline
#4252
No change  Initial JS 143.37KiB 143.37KiB
No change  Initial CSS 31.84KiB 31.84KiB
No change  Cache Invalidation 0% 0%
No change  Chunks 7 7
No change  Assets 7 7
Change  Modules 212(+0.47%) 211
No change  Duplicate Modules 17 17
Change  Duplicate Code 3.93%(-0.25%) 3.94%
No change  Packages 4 4
No change  Duplicate Packages 0 0
Bundle size by type  no changes
                 Current
#4254
     Baseline
#4252
No change  JS 233.32KiB 233.32KiB
No change  Other 82.95KiB 82.95KiB
No change  CSS 31.84KiB 31.84KiB

Bundle analysis reportBranch upupming:feat/testing-env-jsdomProject dashboard


Generated by RelativeCIDocumentationReport issue

@relativeci
Copy link
Copy Markdown

relativeci Bot commented Aug 5, 2025

React Example

#4261 Bundle Size — 237.04KiB (0%).

e72ee8d(current) vs 7ccf12f main#4259(baseline)

Bundle metrics  no changes
                 Current
#4261
     Baseline
#4259
No change  Initial JS 0B 0B
No change  Initial CSS 0B 0B
No change  Cache Invalidation 0% 0%
No change  Chunks 0 0
No change  Assets 4 4
No change  Modules 158 158
No change  Duplicate Modules 64 64
No change  Duplicate Code 45.86% 45.86%
No change  Packages 2 2
No change  Duplicate Packages 0 0
Bundle size by type  no changes
                 Current
#4261
     Baseline
#4259
No change  IMG 145.76KiB 145.76KiB
No change  Other 91.28KiB 91.28KiB

Bundle analysis reportBranch upupming:feat/testing-env-jsdomProject dashboard


Generated by RelativeCIDocumentationReport issue

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
packages/testing-library/testing-environment/src/index.ts (1)

458-458: Constructor param precedence over global jsdom is correct.

Thanks for flipping the precedence to prefer the explicit constructor arg over the global. This aligns with explicit DI expectations and matches prior feedback.

🧹 Nitpick comments (2)
packages/testing-library/testing-environment/src/index.ts (2)

464-471: Remove redundant console polyfill; it’s immediately overridden by injectors.

console from this.jsdom.window is assigned here but later replaced by createPreconfiguredConsole() in both injectors, making this assignment dead/possibly confusing.

Apply this diff to reduce churn and clarify intent:

-      console: this.jsdom.window['console'],
       // `Event` is required by `fireEvent` in `@testing-library/dom`
       Event: this.jsdom.window.Event,
       // `window` is required by `getDocument` in `@testing-library/dom`
       window: this.jsdom.window,
       // `document` is required by `screen` in `@testing-library/dom`
       document: this.jsdom.window.document,

Optional hardening: if your tests use dispatching of custom events, consider adding CustomEvent alongside Event:

       Event: this.jsdom.window.Event,
+      CustomEvent: this.jsdom.window.CustomEvent,

Note on rstest compatibility: keeping the injector-owned console is consistent with the prior requirement that both target and global console have methods defined after thread switching. This change preserves that behavior.


408-409: Doc examples: add JSDOM import and mention fallback.

The examples now show passing a new JSDOM(). Add the import to make them copy-pasteable, and optionally call out that global.jsdom can be used when set by the test runner.

Example tweak:

import { JSDOM } from 'jsdom';
import { LynxTestingEnv } from '@lynx-js/testing-environment';

const lynxTestingEnv = new LynxTestingEnv(new JSDOM());
// Alternatively, if your test runner sets global.jsdom: new LynxTestingEnv()

Also applies to: 430-431, 446-447

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2d5ce20 and beed60a.

📒 Files selected for processing (1)
  • packages/testing-library/testing-environment/src/index.ts (4 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: colinaaa
PR: lynx-family/lynx-stack#1453
File: vitest.config.ts:49-61
Timestamp: 2025-08-06T13:28:57.182Z
Learning: In the lynx-family/lynx-stack repository, the file `packages/react/testing-library/src/vitest.config.js` is source code for the testing library that gets exported for users, not a test configuration that should be included in the main vitest projects array.
Learnt from: upupming
PR: lynx-family/lynx-stack#1305
File: packages/testing-library/testing-environment/src/index.ts:255-258
Timestamp: 2025-08-11T05:57:18.212Z
Learning: In the ReactLynx testing environment (`packages/testing-library/testing-environment/src/index.ts`), the dual assignment pattern `target.console.method = console.method = () => {}` is required for rstest compatibility. This is because rstest provides `console` in an IIFE (Immediately Invoked Function Expression), and both the target and global console need to have these methods defined for proper test execution.
Learnt from: upupming
PR: lynx-family/lynx-stack#1305
File: packages/react/testing-library/src/plugins/vitest.ts:59-61
Timestamp: 2025-08-11T06:00:04.376Z
Learning: In the lynx-family/lynx-stack repository, the `testingLibraryPlugin` in `packages/react/testing-library/src/plugins/vitest.ts` intentionally uses `process.exit` when jsdom installation fails, maintaining consistency with the previous implementation from `packages/react/testing-library/src/vitest.config.js`. This behavior should not be changed to use `this.error` despite being a Vite plugin best practice.
📚 Learning: 2025-08-11T05:57:18.212Z
Learnt from: upupming
PR: lynx-family/lynx-stack#1305
File: packages/testing-library/testing-environment/src/index.ts:255-258
Timestamp: 2025-08-11T05:57:18.212Z
Learning: In the ReactLynx testing environment (`packages/testing-library/testing-environment/src/index.ts`), the dual assignment pattern `target.console.method = console.method = () => {}` is required for rstest compatibility. This is because rstest provides `console` in an IIFE (Immediately Invoked Function Expression), and both the target and global console need to have these methods defined for proper test execution.

Applied to files:

  • packages/testing-library/testing-environment/src/index.ts

Comment thread packages/testing-library/testing-environment/src/index.ts
@upupming upupming requested review from colinaaa and gaoachao August 13, 2025 13:05
gaoachao
gaoachao previously approved these changes Aug 13, 2025
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
packages/testing-library/testing-environment/src/index.ts (1)

38-56: Add optional jsdom to the global declaration to satisfy TypeScript

No existing global augmentation for jsdom was found. packages/testing-library/testing-environment/src/index.ts already imports JSDOM and uses global.jsdom (e.g., this.jsdom = jsdom ?? global.jsdom;), so add an optional global declaration.

Files to update:

  • packages/testing-library/testing-environment/src/index.ts — add to the existing declare global block.
  • (note) packages/testing-library/testing-environment/src/env/vitest/index.ts references fakeGlobal.jsdom and deletes global.jsdom at teardown; no change required there.

Suggested diff:

 declare global {
   var lynxTestingEnv: LynxTestingEnv;
   var elementTree: ElementTree;
   var __JS__: boolean;
   var __LEPUS__: boolean;
   var __BACKGROUND__: boolean;
   var __MAIN_THREAD__: boolean;
+  // Provided by the test runner (e.g., via a setup file). Optional.
+  var jsdom: JSDOM | undefined;

   namespace lynxCoreInject {
     var tt: any;
   }
🧹 Nitpick comments (5)
packages/testing-library/testing-environment/src/index.ts (5)

456-456: Consider making the injected JSDOM instance immutable

jsdom is a constructor-injected dependency and shouldn’t change at runtime. Marking it as readonly communicates intent and avoids accidental reassignment.

-  jsdom: JSDOM;
+  readonly jsdom: JSDOM;

459-459: Prefer globalThis over global for the fallback

Minor consistency and typing improvement: elsewhere the code already leans on globalThis. Using it here clarifies intent and aligns with the global augmentation pattern.

-    this.jsdom = jsdom ?? global.jsdom;
+    this.jsdom = jsdom ?? globalThis.jsdom;

405-412: Doc example: import JSDOM explicitly

The snippet uses new JSDOM() but doesn’t show its import, which may confuse readers. Add the import line.

  * ```ts
- * import { LynxTestingEnv } from '@lynx-js/testing-environment';
+ * import { LynxTestingEnv } from '@lynx-js/testing-environment';
+ * import { JSDOM } from 'jsdom';
  *
  * const lynxTestingEnv = new LynxTestingEnv(new JSDOM());
  *

428-436: Doc example: import JSDOM explicitly

Same as above; include the import for completeness.

  * ```ts
- * import { LynxTestingEnv } from '@lynx-js/testing-environment';
+ * import { LynxTestingEnv } from '@lynx-js/testing-environment';
+ * import { JSDOM } from 'jsdom';
  *
  * const lynxTestingEnv = new LynxTestingEnv(new JSDOM());
  *

444-452: Doc example: import JSDOM explicitly

Repeat the import addition for this snippet as well.

  * ```ts
- * import { LynxTestingEnv } from '@lynx-js/testing-environment';
+ * import { LynxTestingEnv } from '@lynx-js/testing-environment';
+ * import { JSDOM } from 'jsdom';
  *
  * const lynxTestingEnv = new LynxTestingEnv(new JSDOM());
  *
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between beed60a and e72ee8d.

📒 Files selected for processing (2)
  • packages/testing-library/testing-environment/package.json (1 hunks)
  • packages/testing-library/testing-environment/src/index.ts (4 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/testing-library/testing-environment/package.json
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-08-11T05:57:18.212Z
Learnt from: upupming
PR: lynx-family/lynx-stack#1305
File: packages/testing-library/testing-environment/src/index.ts:255-258
Timestamp: 2025-08-11T05:57:18.212Z
Learning: In the ReactLynx testing environment (`packages/testing-library/testing-environment/src/index.ts`), the dual assignment pattern `target.console.method = console.method = () => {}` is required for rstest compatibility. This is because rstest provides `console` in an IIFE (Immediately Invoked Function Expression), and both the target and global console need to have these methods defined for proper test execution.

Applied to files:

  • packages/testing-library/testing-environment/src/index.ts
📚 Learning: 2025-08-13T11:50:58.069Z
Learnt from: colinaaa
PR: lynx-family/lynx-stack#1500
File: .changeset/curvy-dragons-appear.md:1-5
Timestamp: 2025-08-13T11:50:58.069Z
Learning: In the lynx-family/lynx-stack repository, all packages under packages/react/ should use "lynx-js/react" in changesets since they are all published together under the same package name, regardless of their individual package.json names. This includes packages/react/testing-library and other sub-packages.

Applied to files:

  • packages/testing-library/testing-environment/src/index.ts
🔇 Additional comments (1)
packages/testing-library/testing-environment/src/index.ts (1)

457-465: Constructor precedence and runtime guard look correct

Explicit instance is preferred over the global fallback, and a clear error is thrown when neither is provided. This addresses the earlier precedence concern and avoids a crash on access.

@codecov
Copy link
Copy Markdown

codecov Bot commented Aug 15, 2025

Codecov Report

❌ Patch coverage is 11.11111% with 8 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...s/testing-library/testing-environment/src/index.ts 0.00% 8 Missing ⚠️

📢 Thoughts on this report? Let us know!

@upupming upupming merged commit 2d3d06f into lynx-family:main Aug 15, 2025
69 of 73 checks passed
colinaaa pushed a commit that referenced this pull request Aug 15, 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.112.3

### Patch Changes

- fix css transform error in testing library
([#1500](#1500))

- fix the type error of `wrapper` option in testing library's `render`
and `renderHook` function
([#1502](#1502))

- Introduce recursive hydration for lists to prevent double
remove/insert on moves.
([#1401](#1401))

- Handle `<frame/>` correctly.
([#1497](#1497))

## @lynx-js/rspeedy@0.10.7

### Patch Changes

- `output.inlineScripts` defaults to `false` when chunkSplit strategy is
not `'all-in-one'`
([#1504](#1504))

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

### Patch Changes

- `output.inlineScripts` defaults to `false` when chunkSplit strategy is
not `'all-in-one'`
([#1504](#1504))

- Updated dependencies
\[[`51a0b19`](51a0b19),
[`b391ef5`](b391ef5)]:
    -   @lynx-js/template-webpack-plugin@0.8.4
    -   @lynx-js/css-extract-webpack-plugin@0.6.2
    -   @lynx-js/react-alias-rsbuild-plugin@0.10.12
    -   @lynx-js/use-sync-external-store@1.5.0
    -   @lynx-js/react-refresh-webpack-plugin@0.3.4
    -   @lynx-js/react-webpack-plugin@0.6.19

## @lynx-js/testing-environment@0.1.6

### Patch Changes

- Fix that `lynxTestingEnv.jsdom` cannot be initialized correctly when
`global.jsdom` is not defined.
([#1422](#1422))

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

### Patch Changes

- fix: systeminfo in mts function
([#1537](#1537))

- feat: add MTS API: \_\_UpdateComponentInfo
([#1485](#1485))

- fix: `__ElementFromBinary` needs to correctly apply the dataset in
elementTemplate to the Element
([#1487](#1487))

- fix: all attributes except `id` and `type` under ElementTemplateData
are optional.
([#1483](#1483))

- feat: add MTS API \_\_GetAttributeByName
([#1486](#1486))

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

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

### Patch Changes

- fix: systeminfo in mts function
([#1537](#1537))

- refactor: use utf-8 string
([#1473](#1473))

- Fix mtsGlobalThis race condition in createRenderAllOnUI
([#1506](#1506))

- Updated dependencies
\[[`405a917`](405a917),
[`b8f89e2`](b8f89e2),
[`f76aae9`](f76aae9),
[`b8b060b`](b8b060b),
[`d8381a5`](d8381a5),
[`214898b`](214898b),
[`ab8cee4`](ab8cee4)]:
    -   @lynx-js/web-mainthread-apis@0.15.6
    -   @lynx-js/web-constants@0.15.6
    -   @lynx-js/web-worker-runtime@0.15.6
    -   @lynx-js/web-worker-rpc@0.15.6

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

### Patch Changes

- refactor: use utf-8 string
([#1473](#1473))

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

### Patch Changes

- fix: systeminfo in mts function
([#1537](#1537))

- refactor: use utf-8 string
([#1473](#1473))

- feat: add MTS API: \_\_UpdateComponentInfo
([#1485](#1485))

- fix: \_\_ElementFromBinary should mark all elements actively
([#1484](#1484))

- fix: `__ElementFromBinary` needs to correctly apply the dataset in
elementTemplate to the Element
([#1487](#1487))

- fix: all attributes except `id` and `type` under ElementTemplateData
are optional.
([#1483](#1483))

- feat: add MTS API \_\_GetAttributeByName
([#1486](#1486))

- Updated dependencies
\[[`405a917`](405a917),
[`b8f89e2`](b8f89e2),
[`f76aae9`](f76aae9),
[`d8381a5`](d8381a5),
[`214898b`](214898b),
[`ab8cee4`](ab8cee4)]:
    -   @lynx-js/web-constants@0.15.6
    -   @lynx-js/web-style-transformer@0.15.6

## @lynx-js/web-style-transformer@0.15.6

### Patch Changes

- refactor: use utf-8 string
([#1473](#1473))

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

### Patch Changes

- Updated dependencies
\[[`405a917`](405a917),
[`b8f89e2`](b8f89e2),
[`f76aae9`](f76aae9),
[`b8b060b`](b8b060b),
[`d8381a5`](d8381a5),
[`214898b`](214898b),
[`ab8cee4`](ab8cee4)]:
    -   @lynx-js/web-mainthread-apis@0.15.6
    -   @lynx-js/web-constants@0.15.6
    -   @lynx-js/web-worker-rpc@0.15.6

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

### Patch Changes

- Fix "emit different content to the same filename" error
([#1482](#1482))

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

### Patch Changes

- Fix invalid `module.exports=;` syntax in app-service.js.
([#1501](#1501))

## create-rspeedy@0.10.7



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



## upgrade-rspeedy@0.10.7



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

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@coderabbitai coderabbitai Bot mentioned this pull request Jan 16, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants