Skip to content

feat(web): supports rsbuild plugin for Web projects in Lynx Web Platform#606

Merged
Sherry-hue merged 1 commit intolynx-family:mainfrom
Sherry-hue:feat/web-platform-rsbuild
Apr 28, 2025
Merged

feat(web): supports rsbuild plugin for Web projects in Lynx Web Platform#606
Sherry-hue merged 1 commit intolynx-family:mainfrom
Sherry-hue:feat/web-platform-rsbuild

Conversation

@Sherry-hue
Copy link
Copy Markdown
Collaborator

@Sherry-hue Sherry-hue commented Apr 22, 2025

Summary

feat: Provides Rsbuild plugin for Web projects in Lynx Web Platform, currently supports polyfill about lynx.

#546

Checklist

  • Tests updated (or not required).
  • Documentation updated (or not required).

@Sherry-hue Sherry-hue requested a review from PupilTong as a code owner April 22, 2025 11:58
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Apr 22, 2025

🦋 Changeset detected

Latest commit: fd2fe67

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/web-platform-rsbuild-plugin Minor

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

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

@Sherry-hue Sherry-hue self-assigned this Apr 22, 2025
@Sherry-hue Sherry-hue added platform:Web enhancement New feature or request labels Apr 22, 2025
@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch 2 times, most recently from bad76ad to 668cab0 Compare April 23, 2025 03:26
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Apr 23, 2025

CodSpeed Performance Report

Merging #606 will not alter performance

Comparing Sherry-hue:feat/web-platform-rsbuild (fd2fe67) with main (5ff7cd8)

Summary

✅ 1 untouched benchmarks

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 23, 2025

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
2062 1 2061 67
View the top 1 failed test(s) by shortest run time
web-core.test.ts web core testscreateJSObjectDestructionObserver
Stack Traces | 151s run time
web-core.test.ts:204:3 createJSObjectDestructionObserver

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch from 668cab0 to 0c755aa Compare April 23, 2025 03:43
@PupilTong
Copy link
Copy Markdown
Collaborator

Could you please enable this plugin for @lynx-js/web-explorer?

@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch 6 times, most recently from 4df34aa to 1055c0d Compare April 24, 2025 02:45
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 24, 2025

Bundle Report

Changes will decrease total bundle size by 3.94kB (-0.61%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
@lynx-js/web-explorer-web-array-push 321.18kB -3.94kB (-1.21%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: @lynx-js/web-explorer-web-array-push

Assets Changed:

Asset Name Size Change Total Size Change (%)
static/js/index.js 2 bytes 155.15kB 0.0%
static/js/async/45.js (New) 57.89kB 57.89kB 100.0% 🚀
static/js/async/605.js 12 bytes 44.11kB 0.03%
static/css/index.css -4.05kB 33.94kB -10.66%
static/js/async/579.js (New) 30.09kB 30.09kB 100.0% 🚀
static/js/async/61.js (Deleted) -57.8kB 0 bytes -100.0% 🗑️
static/js/async/346.js (Deleted) -30.08kB 0 bytes -100.0% 🗑️

Files in static/js/index.js:

  • ./index.ts → Total Size: 2.66kB

Files in static/css/index.css:

  • ./index.ts → Total Size: 2.66kB

@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch 8 times, most recently from 1a8c88e to 8e2f237 Compare April 24, 2025 10:54
@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch 2 times, most recently from 25f0179 to 70352e2 Compare April 25, 2025 03:58
PupilTong
PupilTong previously approved these changes Apr 25, 2025
@Sherry-hue Sherry-hue added this pull request to the merge queue Apr 25, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Apr 25, 2025
@Sherry-hue Sherry-hue added this pull request to the merge queue Apr 25, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Apr 25, 2025
@Sherry-hue Sherry-hue added this pull request to the merge queue Apr 25, 2025
@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch from 70352e2 to efd0797 Compare April 25, 2025 09:14
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Apr 25, 2025
@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch from efd0797 to e3e1342 Compare April 25, 2025 09:43
PupilTong
PupilTong previously approved these changes Apr 25, 2025
@Sherry-hue Sherry-hue added this pull request to the merge queue Apr 27, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Apr 27, 2025
@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch 2 times, most recently from 4f5e729 to 615dc33 Compare April 27, 2025 06:04
@Sherry-hue Sherry-hue force-pushed the feat/web-platform-rsbuild branch from 615dc33 to fd2fe67 Compare April 28, 2025 07:12
@Sherry-hue Sherry-hue added this pull request to the merge queue Apr 28, 2025
Merged via the queue into lynx-family:main with commit 8f993bb Apr 28, 2025
30 checks passed
@Sherry-hue Sherry-hue deleted the feat/web-platform-rsbuild branch April 28, 2025 09:44
colinaaa pushed a commit that referenced this pull request May 9, 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.108.0

### Minor Changes

- Reverts #239: "batch multiple patches for main thread communication"
([#649](#649))

This reverts the change that batched updates sent to the main thread in
a single render pass.

### Patch Changes

- Add support for batch rendering in `<list>` with async resolution of
sub-tree properties and element trees.
([#624](#624))

    Use the `experimental-batch-render-strategy` attribute of `<list>`:

    ```tsx
    <list
      /**
       * Batch render strategy:
       * 0: (Default) Disabled - No batch rendering
       * 1: Basic - Only batch rendering enabled
* 2: Property Resolution - Batch render with async property resolution
for list item subtree
* 3: Full Resolution - Batch render with async property and element tree
resolution for list item subtree
       */
      experimental-batch-render-strategy={3}
    ></list>
    ```

- rename @lynx-js/test-environment to @lynx-js/testing-environment
([#704](#704))

- Auto import `@lynx-js/react/experimental/lazy/import` when using
`import(url)`
([#667](#667))

- Auto import `@lynx-js/react/experimental/lazy/import` when using
`<component is={url} />`
([#666](#666))

- Fixed a race condition when updating states and GlobalProps
simultaneously.
([#707](#707))

This fix prevents the "Attempt to render more than one `<page />`" error
from occurring during normal application usage.

- Fix error like `Unterminated string constant` when using multi-line
JSX StringLiteral.
([#654](#654))

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

### Minor Changes

- Switch to ESM package format by setting `"type": "module"`.
([#703](#703))

### Patch Changes

- rename @lynx-js/test-environment to @lynx-js/testing-environment
([#704](#704))

## @lynx-js/web-platform-rsbuild-plugin@0.1.0

### Minor Changes

- feat: add new parameter `nativeModulesPath` to
`pluginWebPlatform({})`.
([#668](#668))

After this commit, you can use `nativeModulesPath` to package custom
nativeModules directly into the worker, and no longer need to pass
`nativeModulesMap` to lynx-view.

    Here is an example:

    -   `native-modules.ts`:

    ```ts
    // index.native-modules.ts
    export default {
      CustomModule: function (NativeModules, NativeModulesCall) {
        return {
          async getColor(data, callback) {
            const color = await NativeModulesCall("getColor", data);
            callback(color);
          },
        };
      },
    };
    ```

    -   plugin config:

    ```ts
    // rsbuild.config.ts
import { pluginWebPlatform } from
"@lynx-js/web-platform-rsbuild-plugin";
    import { defineConfig } from "@rsbuild/core";

    export default defineConfig({
      plugins: [
        pluginWebPlatform({
          // replace with your actual native-modules file path
nativeModulesPath: path.resolve(__dirname, "./index.native-modules.ts"),
        }),
      ],
    });
    ```

- feat: Provides Rsbuild plugin for Web projects in Lynx Web Platform,
currently supports polyfill about lynx.
([#606](#606))

## @lynx-js/rspeedy@0.9.4

### Patch Changes

- Bump Rsbuild v1.3.17 with Rspack v1.3.9.
([#708](#708))

- Support `performance.profile`.
([#691](#691))

- Support CLI flag `--mode` to specify the build mode.
([#723](#723))

- Enable native Rsdoctor plugin by default.
([#688](#688))

Set `tools.rsdoctor.experiments.enableNativePlugin` to `false` to use
the old JS plugin.

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

    export default defineConfig({
      tools: {
        rsdoctor: {
          experiments: {
            enableNativePlugin: false,
          },
        },
      },
    });
    ```

See [Rsdoctor -
1.0](https://rsdoctor.dev/blog/release/release-note-1_0#-faster-analysis)
for more details.

- Bump Rsbuild v1.3.14 with Rspack v1.3.8.
([#630](#630))

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

### Patch Changes

- Fix runtime error: "SyntaxError: Identifier 'i' has already been
declared". ([#651](#651))

- Enable runtime profiling when `performance.profile` is set to true.
([#722](#722))

- fix: resolve page crash on development mode when enabling
`experimental_isLazyBundle: true`
([#653](#653))

- Support `@lynx-js/react` v0.108.0.
([#649](#649))

- Updated dependencies
\[[`ea4da1a`](ea4da1a),
[`ca15dda`](ca15dda),
[`f8d369d`](f8d369d),
[`ea4da1a`](ea4da1a)]:
    -   @lynx-js/react-webpack-plugin@0.6.13
    -   @lynx-js/runtime-wrapper-webpack-plugin@0.0.10
    -   @lynx-js/react-alias-rsbuild-plugin@0.9.9
    -   @lynx-js/react-refresh-webpack-plugin@0.3.2

## @lynx-js/tailwind-preset@0.0.3

### Patch Changes

- Support `hidden`, `no-underline` and `line-through` utilities.
([#745](#745))

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

### Patch Changes

- feat: support touch events
([#641](#641))

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

### Patch Changes

- feat: support touch events for MTS
([#641](#641))

    now we support

    -   main-thread:bindtouchstart
    -   main-thread:bindtouchend
    -   main-thread:bindtouchmove
    -   main-thread:bindtouchcancel

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

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

### Patch Changes

- fix: some inline style properties cause crash
([#647](#647))

    add support for the following css properties

    -   mask
    -   mask-repeat
    -   mask-position
    -   mask-clip
    -   mask-origin
    -   mask-size
    -   gap
    -   column-gap
    -   row-gap
    -   image-rendering
    -   hyphens
    -   offset-path
    -   offset-distance

- feat: support touch events for MTS
([#641](#641))

    now we support

    -   main-thread:bindtouchstart
    -   main-thread:bindtouchend
    -   main-thread:bindtouchmove
    -   main-thread:bindtouchcancel

- feat: add SystemInfo.screenWidth and SystemInfo.screenHeight
([#641](#641))

- Updated dependencies
\[[`c9ccad6`](c9ccad6),
[`9ad394e`](9ad394e),
[`f4cfb70`](f4cfb70),
[`c9ccad6`](c9ccad6),
[`839d61c`](839d61c)]:
    -   @lynx-js/offscreen-document@0.0.2
    -   @lynx-js/web-mainthread-apis@0.13.1
    -   @lynx-js/web-worker-runtime@0.13.1
    -   @lynx-js/web-constants@0.13.1
    -   @lynx-js/web-worker-rpc@0.13.1

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

### Patch Changes

- fix(web): x-swiper-item threshold updated to 20
([#639](#639))

- fix: In React19, setter and getter functions are treated as
properties, making it impossible to retrieve the current value via
attributes. ([#639](#639))

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

### Patch Changes

- feat: use nativeModulesPath instead of nativeModulesMap to lynx-view.
([#668](#668))

- fix: fork @vant/touch-emulator and make it work with shadowroot
([#662](#662))

- fix: loading errors caused by script import order
([#665](#665))

- chore: update homepage
([#645](#645))

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

### Patch Changes

- fix: some inline style properties cause crash
([#647](#647))

    add support for the following css properties

    -   mask
    -   mask-repeat
    -   mask-position
    -   mask-clip
    -   mask-origin
    -   mask-size
    -   gap
    -   column-gap
    -   row-gap
    -   image-rendering
    -   hyphens
    -   offset-path
    -   offset-distance

- feat: support touch events for MTS
([#641](#641))

    now we support

    -   main-thread:bindtouchstart
    -   main-thread:bindtouchend
    -   main-thread:bindtouchmove
    -   main-thread:bindtouchcancel

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

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

### Patch Changes

- feat: support for using `lynx.queueMicrotask`.
([#702](#702))

- feat: support touch events for MTS
([#641](#641))

    now we support

    -   main-thread:bindtouchstart
    -   main-thread:bindtouchend
    -   main-thread:bindtouchmove
    -   main-thread:bindtouchcancel

- feat: provide comments for `@lynx-js/web-platform-rsbuild-plugin`.
([#668](#668))

- Updated dependencies
\[[`c9ccad6`](c9ccad6),
[`9ad394e`](9ad394e),
[`c9ccad6`](c9ccad6)]:
    -   @lynx-js/offscreen-document@0.0.2
    -   @lynx-js/web-mainthread-apis@0.13.1
    -   @lynx-js/web-constants@0.13.1
    -   @lynx-js/web-worker-rpc@0.13.1

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

### Patch Changes

- feat: add `experimental_isLazyBundle` option, it will disable snapshot
HMR for standalone lazy bundle
([#653](#653))

- Add the `profile` option to control whether `__PROFILE__` is enabled.
([#722](#722))

- Support `@lynx-js/react` v0.108.0.
([#649](#649))

## @lynx-js/runtime-wrapper-webpack-plugin@0.0.10

### Patch Changes

- feat: add `experimental_isLazyBundle` option, it will disable
lynxChunkEntries for standalone lazy bundle
([#653](#653))

## create-rspeedy@0.9.4



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



## upgrade-rspeedy@0.9.4



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

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

enhancement New feature or request platform:Web

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants