Skip to content

Comments

feat: reapply "feat(webpack): add StartupChunkDependenciesRuntimeModule to fix chunk splitting"#798

Merged
colinaaa merged 12 commits intomainfrom
feat/add-startup-chunk-deps-runtime
May 19, 2025
Merged

feat: reapply "feat(webpack): add StartupChunkDependenciesRuntimeModule to fix chunk splitting"#798
colinaaa merged 12 commits intomainfrom
feat/add-startup-chunk-deps-runtime

Conversation

@gaoachao
Copy link
Collaborator

@gaoachao gaoachao requested a review from colinaaa as a code owner May 13, 2025 15:39
@changeset-bot
Copy link

changeset-bot bot commented May 13, 2025

🦋 Changeset detected

Latest commit: d975e37

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

This PR includes changesets to release 4 packages
Name Type
@lynx-js/chunk-loading-webpack-plugin Patch
@lynx-js/rspeedy Patch
create-rspeedy Patch
upgrade-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

@codecov
Copy link

codecov bot commented May 13, 2025

Codecov Report

Attention: Patch coverage is 36.09467% with 108 lines in your changes missing coverage. Please review.

✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...lugin/src/StartupChunkDependenciesRuntimeModule.ts 10.00% 54 Missing ⚠️
...bpack-plugin/src/StartupEntrypointRuntimeModule.ts 15.90% 37 Missing ⚠️
...bpack-plugin/src/StartupChunkDependenciesPlugin.ts 71.66% 17 Missing ⚠️

📢 Thoughts on this report? Let us know!

@codspeed-hq
Copy link

codspeed-hq bot commented May 13, 2025

CodSpeed Performance Report

Merging #798 will not alter performance

Comparing feat/add-startup-chunk-deps-runtime (d975e37) with main (770ec15)

Summary

✅ 6 untouched benchmarks

@gaoachao
Copy link
Collaborator Author

In this commit e0e00e0, I removed the test first because with the check of chunkGraph.hasChunkEntryDependentChunks(chunk), StartupChunkDependenciesRuntimeModule won't be injected by default, so the test needs to be modified.

Since the test might involve splitChunk cases which would be a bit complex, I suggest we merge this PR first, and I will rewrite the tests in a subsequent PR. cc @colinaaa

@gaoachao gaoachao requested a review from colinaaa May 19, 2025 08:57
@colinaaa colinaaa added this pull request to the merge queue May 19, 2025
Merged via the queue into main with commit 5b67bde May 19, 2025
39 of 40 checks passed
@colinaaa colinaaa deleted the feat/add-startup-chunk-deps-runtime branch May 19, 2025 09:57
colinaaa pushed a commit that referenced this pull request May 24, 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.109.0

### Minor Changes

- Support MTS functions running on the first screen.
([#840](#840))

### Patch Changes

- Fix type error when using `Suspense` with `"jsx": "react-jsx"`.
([#854](#854))

- Support lazy bundle in ReactLynx testing library.
([#869](#869))

- Fix a bug in HMR that snapshots are always updated because the same
unique ID check is not performed correctly.
([#869](#869))

- Fix missing types of `key` on components when using `"jsx":
"react-jsx"`.
([#872](#872))

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

### Minor Changes

- **BREAKING CHANGE**: Remove the unused `jsx` option.
([#903](#903))

### Patch Changes

- Support `output.inlineScripts`, which controls whether to inline
scripts into Lynx bundle (`.lynx.bundle`).
([#874](#874))

Only background thread scripts can remain non-inlined, whereas the main
thread script is always inlined.

    example:

    ```js
    import { defineConfig } from "@lynx-js/rspeedy";

    export default defineConfig({
      output: {
        inlineScripts: false,
      },
    });
    ```

- Support `@lynx-js/react` v0.109.0.
([#840](#840))

- Use `WebEncodePlugin` instead of `WebWebpackPlugin`.
([#904](#904))

- Updated dependencies
\[[`7beb35e`](7beb35e),
[`b6e27da`](b6e27da),
[`5ddec12`](5ddec12),
[`77524bc`](77524bc),
[`fdab5dc`](fdab5dc),
[`ff63b58`](ff63b58),
[`fdab5dc`](fdab5dc),
[`2b83934`](2b83934),
[`3520031`](3520031)]:
    -   @lynx-js/template-webpack-plugin@0.7.0
    -   @lynx-js/css-extract-webpack-plugin@0.5.4
    -   @lynx-js/react-refresh-webpack-plugin@0.3.3
    -   @lynx-js/react-webpack-plugin@0.6.14
    -   @lynx-js/react-alias-rsbuild-plugin@0.10.0

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

### Minor Changes

- Rename `lepus` to `mainThreadAssets` in `beforeEmit` hook.
([#901](#901))

- Remove the unused `encodeBinary` option of `LynxEncodePlugin`.
([#880](#880))

### Patch Changes

- Support `output.inlineScripts`, which controls whether to inline
scripts into Lynx bundle (`.lynx.bundle`).
([#874](#874))

Only background thread scripts can remain non-inlined, whereas the main
thread script is always inlined.

    example:

    ```js
    import { defineConfig } from "@lynx-js/rspeedy";

    export default defineConfig({
      output: {
        inlineScripts: false,
      },
    });
    ```

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- Add `WebEncodePlugin`.
([#904](#904))

This is previously known as `WebWebpackPlugin` from
`@lynx-js/web-webpack-plugin`.

- Fix a bug that the `lepus` arg of `beforeEmit` hook does not contains
the `root` main chunk of the main thread.
([#898](#898))

## @lynx-js/rspeedy@0.9.6

### Patch Changes

- Support `output.inlineScripts`, which controls whether to inline
scripts into Lynx bundle (`.lynx.bundle`).
([#874](#874))

Only background thread scripts can remain non-inlined, whereas the main
thread script is always inlined.

    example:

    ```js
    import { defineConfig } from "@lynx-js/rspeedy";

    export default defineConfig({
      output: {
        inlineScripts: false,
      },
    });
    ```

- Bump Rsbuild v1.3.21 with Rspack v1.3.11.
([#863](#863))

- Updated dependencies
\[[`5b67bde`](5b67bde)]:
    -   @lynx-js/chunk-loading-webpack-plugin@0.2.1

## @lynx-js/offscreen-document@0.0.4

### Patch Changes

- fix: remove all children after the innerHTML setter is called
([#850](#850))

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

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

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

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

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

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

- fix: worker not released when backgroundWorkerContextCount != 1
([#845](#845))

- Updated dependencies
\[[`bb1f9d8`](bb1f9d8),
[`b6e27da`](b6e27da),
[`3d716d7`](3d716d7)]:
    -   @lynx-js/offscreen-document@0.0.4
    -   @lynx-js/web-mainthread-apis@0.13.3
    -   @lynx-js/web-worker-runtime@0.13.3
    -   @lynx-js/web-constants@0.13.3
    -   @lynx-js/web-worker-rpc@0.13.3

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

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- feat: support to dump ssrEncode string
([#876](#876))

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

- feat: dump dehydrate string with shadow root template
([#838](#838))

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

### Patch Changes

- refactor: allow elements to be rendered before :defined
([#855](#855))

Before this commit, we don't allow developers to render these elements
before they're defined.

    In this commit, we will remove these restrictions.

- fix: remove the style `contain: content` of x-foldview-ng, otherwise
it will cause the `position: fixed` elements to be positioned
incorrectly after scrolling.
([#878](#878))

- fix: x-list should observe property list-type change.
([#862](#862))

    Before this commit, list-type only works when it was first assigned.

use `requestAnimationFrame` instead of `queueMicrotask` to
layoutListItem, this is because it may cause crashes in webkit.

- fix: list-item should support linear layout.
([#859](#859))

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

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

### Patch Changes

- chore: update dependencies:
([#868](#868))

    -   @lynx-js/web-elements@0.7.2
    -   @lynx-js/web-core@0.13.2

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

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- perf: improve dom operation performance
([#881](#881))

    -   code clean for offscreen-document, cut down inheritance levels
- add `appendChild` method for OffscreenElement, improve performance for
append one node
    -   bypass some JS getter for dumping SSR string

- Updated dependencies
\[[`b6e27da`](b6e27da)]:
    -   @lynx-js/web-constants@0.13.3

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

### Patch Changes

- refactor: code clean
([#897](#897))

    rename many internal apis to make logic be clear:

multi-thread: startMainWorker -> prepareMainThreadAPIs ->
startMainThread -> createMainThreadContext(new MainThreadRuntime)
all-on-ui: prepareMainThreadAPIs -> startMainThread ->
createMainThreadContext(new MainThreadRuntime)

- Updated dependencies
\[[`bb1f9d8`](bb1f9d8),
[`b6e27da`](b6e27da),
[`3d716d7`](3d716d7)]:
    -   @lynx-js/offscreen-document@0.0.4
    -   @lynx-js/web-mainthread-apis@0.13.3
    -   @lynx-js/web-constants@0.13.3
    -   @lynx-js/web-worker-rpc@0.13.3

## @lynx-js/chunk-loading-webpack-plugin@0.2.1

### Patch Changes

- Add `StartupChunkDependenciesRuntimeModule` to fix
`RuntimeGlobals.ensureChunkHandler` not found when using chunk splitting
([#798](#798))

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

### Patch Changes

- Support `@lynx-js/template-webpack-plugin` v0.7.0.
([#880](#880))

- Support Rspack v1.3.11.
([#866](#866))

## @lynx-js/react-refresh-webpack-plugin@0.3.3

### Patch Changes

- Support `@lynx-js/template-webpack-plugin` v0.7.0.
([#880](#880))

## @lynx-js/react-webpack-plugin@0.6.14

### Patch Changes

- Support `@lynx-js/template-webpack-plugin` v0.7.0.
([#880](#880))

- Support `@lynx-js/react` v0.109.0.
([#840](#840))

## create-rspeedy@0.9.6



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



## upgrade-rspeedy@0.9.6



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



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

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request May 26, 2025
…s @rspack/core (#921)

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

## Summary

<!-- Can you explain the reasoning behind implementing this change? What
problem or issue does this pull request resolve? -->

<!-- It would be helpful if you could provide any relevant context, such
as GitHub issues or related discussions. -->
Fixx a regression of #798

PeerDependencies @rspack/core should be v1.3.10.

## Checklist

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

- [x] Tests updated (or not required).
- [x] Documentation updated (or not required).
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.

2 participants