Skip to content

chore: merge web-infra-dev@v2.0.3 - #11

Merged
cellison-figma merged 507 commits into
mainfrom
ce/merge-v2.0.3
May 19, 2026
Merged

cellison-figma merged 507 commits into
mainfrom
ce/merge-v2.0.3

Conversation

@cellison-figma

@cellison-figma cellison-figma commented May 19, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

FEP is updating web to build with rspack v2.0.3. This merges in changes from the v2.0.3 tag in web-infra-dev/rspack. After this is merged, I'll cherry-pick the hash determinism fix onto a new branch (similar to v1.7.5-deterministic)

Done via

git fetch fork --tags v2.0.3
git merge --no-ff refs/tags/v2.0.3

stormslowly and others added 30 commits April 9, 2026 18:16
…ta loss (web-infra-dev#13542)

* chore: split rust bench

* chore: fix pnpm install

* chore: split build & task in top-level

* chore: fix

* chore: try again

* fix(ci): use unique job IDs in bench workflows to avoid CodSpeed data loss

CodSpeed uses GITHUB_JOB to build run_part_id for grouping uploads.
Both bench-binding.yml and bench-rust.yml had their job ID set to
"bench", causing identical run_part_id values under the same
GITHUB_RUN_ID. This made CodSpeed treat them as the same run part,
resulting in one overwriting the other (JS binding benchmarks skipped).

---------

Co-authored-by: hardfist <yangjianzju@gmail.com>
* docs: update swc-loader examples to use detectSyntax

* docs: align swc-loader example test patterns

* docs: fix

* docs: fix

* docs: restore swc-loader wording in tech guides
…nfra-dev#13491)

* fix(hash): include content hash in fullhash calculation

* fix(hash): improve source type ordering in fullhash calculation

Use numeric sort key instead of string comparison for source types,
and include source_type in hash calculation for more stable ordering.

Refs: web-infra-dev#12866

* fix(hash): limit full hash content mixing to css

Co-Authored-By: Aiden

* fix(hash): keep fullhash synced with css-only changes

Include all chunk content source types in fullhash aggregation and extend hash case coverage to css-extract.

Adjust lint-staged JS lint routing to avoid passing tests/rspack-test files to rslint project-scoped lint.

Refs web-infra-dev#12866
Co-Authored-By: Aiden

* test(stats): update snapshots for fullhash changes

Align stats API/output snapshots with new hash behavior in fix/issue-12866.

Co-Authored-By: Aiden

* chore(hash): remove unrelated lint-staged changes

* test(hash): format fullhash css-only config

* refactor(hash): sort content hashes by SourceType
…dev#13668)

* perf(javascript): reuse side effects evaluation state

* perf(javascript): avoid cloning side effects state artifact

* fix(javascript): remove needless borrow in side effects flag plugin

* perf(javascript): share side effects evaluation states
…#13676)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…13683)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore: add debugger

* chore: parallel run wasm ci

* chore: remove debugger

* Revert "chore: remove debugger"

This reverts commit 9cf41c2.

* chore: max workers

* Reapply "chore: remove debugger"

This reverts commit 4b2b18a.

* chore: wasi sdk

* chore: remote custom wasi

* chore: try increase increase memory

* chore: try decrease memory

* chore: limit memory to 2G

* chore: adjust 2gb

* chore: udpate comment

* chore: update

---------

Co-authored-by: CPunisher <1343316114@qq.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ra-dev#13679)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* docs: document package.json imports resolution

* docs: fix
…3663)

* fix: support module external type in array externals

When using array-style externals like `["module fs", "promises"]` with the
"module" external type, two issues caused incorrect output:

1. In the non-concatenation-scope code path, the property access for the
   rest elements was missing. The generated code was
   `module.exports = __rspack_external_fs;` instead of
   `module.exports = __rspack_external_fs.promises;`.

2. In the concatenation-scope code path, when the request had additional
   specifiers, the safe-to-optimize branch would incorrectly use individual
   named imports instead of forcing a namespace import. This matches
   webpack's behavior of `if (moduleAndSpecifiers.length > 1) imported = true`.

Tests are ported from webpack:
- `library/module-external-array-request` (from webpack)
- `library/module-array-external-request` (ESM library + array externals)
- `library/module-array-external-request-concat` (ESM library + array externals + concatenation)
- Extended `externals/async-externals` with `module-import` array case

* test: add esmOutputCases snapshot for array-type module externals

Adds a snapshot test under esmOutputCases/externals/array-request-module
that exercises array-type module externals with property access in the
modern-module library output path.

* fix: revert force_namespace for UsedNamespace(false) case

The UsedNamespace(false) branch means exports are completely unused,
so we should keep the original side-effect-only import behavior
regardless of whether the request has rest specifiers.
…infra-dev#13677)

* feat: enforce macro-generated implemented_hooks in debug builds

* fix
…13680)

* chore(deps): update dependency @rslint/core to v0.4.1

* fix

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: neverland <chenjiahan.jait@bytedance.com>
…in a worker (web-infra-dev#13687)

* Add browser e2e worker test for @rspack/browser

* chore: remove test-results

* Remove @rspack/browser tests from e2e suite

* chore: update lock

* chore: format js

* chore: fix e2e browser

* chore: upgrade rsbuild

* chore: remove resolve.alias
* docs: clarify externals configuration

* docs: fix
* docs: clarify config option types

* fix(config): correct stats filter signatures
hardfist and others added 27 commits May 9, 2026 15:37
* test: split benchmark case entrypoints

* test: address benchmark case review comments
* feat(externals): add modern-module externals type

* fix(externals): align rust modern-module externals default
* docs: update NestJS guide

* docs: clarify NestJS production HMR entry

* docs: tighten NestJS production HMR warning

* docs: align NestJS build entry example

* docs: correct NestJS HMR build mode wording

* docs: address NestJS guide review feedback

* docs: sync NestJS example build updates

* docs: clarify NestJS HMR production build warning

* docs: simplify NestJS HMR warning

* docs: update NestJS dev plugin condition
* base64 encoding with base64 crate

Use the base64 crate for standard and URL-safe base64 encoding instead of custom implementations. This improves maintainability and reduces potential bugs in the encoding logic.

* fix(hash): fix hash salt not working

* test(hash): add base64 hash tests

* fix: use base64-simd for hash digests

* test(hash): move hash tests to integration target
…ob (web-infra-dev#13953)

* refactor(copy-plugin) + perf: unify glob implementation with fast-glob

* refactor(core): replace custom directory traversal with walk_dir utility

- Add new `walk_dir` utility function in glob_utils for reusable directory traversal
- Replace custom recursive directory traversal in context_module_factory and glob_utils with walk_dir
- Add fast-glob dependency to support the implementation
- Simplify code by removing async_recursion dependency

* fix: satisfy clippy

* fix(core): restore glob edge cases in fast-glob helpers
* chore: bump swc from 65.0.1 to 65.0.4

* chore: codegen
…ra-dev#13863)

* fix: drop inactive branch dependencies for inlined booleans

* fix: guard dynamic import branch dependencies

* test: fix inline branch fixture typo

* test: assert inline branch dependency pruning
…dev#13968)

* perf: optimize code splitter prepare

* fix: recompute skipped connection state

* perf: reduce depth assignment allocations

* perf: avoid indexmap in code splitter prepare

* perf: reduce code splitter prepare allocations

* perf: avoid prepared connection slice allocation

* perf: streamline prepared connection finalization

* perf: preallocate dynamic import chunk naming

* perf: streamline chunk group merging

* perf: reduce depth preparation lookups

* fix: address code splitter review feedback

* perf: reduce code splitter preparation overhead

* perf: streamline chunk group connection queue

* perf: reduce outdated chunk group processing allocations
* chore(ci): print fd usage for browser e2e

* fix(ci): raise nofile limit for browser e2e

* chore(ci): remove browser e2e fd debug logs

* fix(ci): avoid browser e2e watcher
* docs: add node app guide

* Update website/docs/en/guide/tech/nestjs.mdx

Co-authored-by: neverland <chenjiahan.jait@bytedance.com>

* docs: recommend esm node externals

* Update website/docs/zh/guide/tech/nestjs.mdx

Co-authored-by: neverland <chenjiahan.jait@bytedance.com>

* Update website/docs/zh/guide/tech/nestjs.mdx

Co-authored-by: neverland <chenjiahan.jait@bytedance.com>

* Update website/docs/en/guide/tech/nestjs.mdx

Co-authored-by: neverland <chenjiahan.jait@bytedance.com>

* docs: use auto swc syntax in node guide

* docs: refine node swc rule

* docs: clarify esm node output

* docs: move node esm config to note

* docs: clarify node esm guidance

* docs: highlight esm output for node apps

* docs: simplify node esm note

* docs: simplify esm node output config

---------

Co-authored-by: neverland <chenjiahan.jait@bytedance.com>
…fra-dev#13997)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): tighten pnpm install safeguards

* fix
…dev#14003)

* refactor(core): remove unused exports final name metadata

* test: update wasm hash snapshots

* test: update stats api hash snapshot
…ublishing (web-infra-dev#14011)

The previous publish flow wrote a static `_authToken` from the
`NPM_TOKEN` secret into `~/.npmrc` before invoking `pnpm publish`. On
pnpm < 11.0.7 a configured `_authToken` takes precedence over OIDC
trusted publishing, so even though all `@rspack/*` packages have a
trusted publisher binding configured on npmjs.com, releases were still
authenticating with a long-lived token. The static-credential surface
is exactly what enables the TanStack 2026-05-11-style attack: anything
that runs in the `npm`/`npm-canary` environment can exfiltrate
`process.env.NPM_TOKEN` and publish arbitrary versions.

Deleting the `.npmrc` write makes OIDC the only auth path. `pnpm
publish` now mints a per-run token via the workflow's `id-token: write`
permission and authenticates against the trusted publisher binding
configured on npmjs.com.

Provenance (`--provenance` flag) is unaffected; it was already using
OIDC for signing and is independent of publish auth.

After merge, the `NPM_TOKEN` secret in the `npm` and `npm-canary`
GitHub environments has no remaining consumer and should be removed
from environment secrets to fully retire the credential.
…eb-infra-dev#14001)

security(ci): pin actions/{download,upload}-artifact to immutable SHAs

Replace floating tag references (download-artifact@v4.1.7, upload-artifact@v4)
with commit SHAs plus version comments, closing the supply-chain vector
exploited in the tj-actions/changed-files 2025 incident, where a tag
rewrite by a compromised maintainer propagates to every downstream
workflow that still resolves the tag at run time.

- actions/download-artifact -> 65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
- actions/upload-artifact   -> ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2

Both SHAs verified against upstream:
  gh api repos/actions/download-artifact/git/ref/tags/v4.1.7
  gh api repos/actions/upload-artifact/git/ref/tags/v4.6.2

This is Phase 1 of a broader supply-chain hardening initiative motivated
by the TanStack 2026-05-11 npm compromise; remaining phases (npm OIDC
trusted publishing, optionalDependencies whitelist lint, ecosystem-
benchmark PR isolation, etc.) land in follow-up PRs.
… with fast-glob" (web-infra-dev#14010)

Revert "perf: reduce binary size by unifying glob implementation with fast-gl…"

This reverts commit 8c45475.
rspack@0.100.3
rspack_allocator@0.100.3
rspack_binding_api@0.100.3
rspack_binding_build@0.100.3
rspack_binding_builder@0.100.3
rspack_binding_builder_macros@0.100.3
rspack_browserslist@0.100.3
rspack_cacheable@0.100.3
rspack_cacheable_macros@0.100.3
rspack_collections@0.100.3
rspack_core@0.100.3
rspack_error@0.100.3
rspack_fs@0.100.3
rspack_hash@0.100.3
rspack_hook@0.100.3
rspack_ids@0.100.3
rspack_javascript_compiler@0.100.3
rspack_loader_lightningcss@0.100.3
rspack_loader_preact_refresh@0.100.3
rspack_loader_react_refresh@0.100.3
rspack_loader_runner@0.100.3
rspack_loader_swc@0.100.3
rspack_loader_testing@0.100.3
rspack_location@0.100.3
rspack_macros@0.100.3
rspack_napi@0.100.3
rspack_napi_macros@0.100.3
rspack_parallel@0.100.3
rspack_paths@0.100.3
rspack_plugin_asset@0.100.3
rspack_plugin_banner@0.100.3
rspack_plugin_case_sensitive@0.100.3
rspack_plugin_circular_dependencies@0.100.3
rspack_plugin_copy@0.100.3
rspack_plugin_css@0.100.3
rspack_plugin_css_chunking@0.100.3
rspack_plugin_devtool@0.100.3
rspack_plugin_dll@0.100.3
rspack_plugin_dynamic_entry@0.100.3
rspack_plugin_ensure_chunk_conditions@0.100.3
rspack_plugin_entry@0.100.3
rspack_plugin_esm_library@0.100.3
rspack_plugin_externals@0.100.3
rspack_plugin_extract_css@0.100.3
rspack_plugin_hmr@0.100.3
rspack_plugin_html@0.100.3
rspack_plugin_ignore@0.100.3
rspack_plugin_javascript@0.100.3
rspack_plugin_json@0.100.3
rspack_plugin_lazy_compilation@0.100.3
rspack_plugin_library@0.100.3
rspack_plugin_lightning_css_minimizer@0.100.3
rspack_plugin_limit_chunk_count@0.100.3
rspack_plugin_merge_duplicate_chunks@0.100.3
rspack_plugin_mf@0.100.3
rspack_plugin_module_info_header@0.100.3
rspack_plugin_module_replacement@0.100.3
rspack_plugin_no_emit_on_errors@0.100.3
rspack_plugin_progress@0.100.3
rspack_plugin_real_content_hash@0.100.3
rspack_plugin_remove_duplicate_modules@0.100.3
rspack_plugin_remove_empty_chunks@0.100.3
rspack_plugin_rsc@0.100.3
rspack_plugin_rsdoctor@0.100.3
rspack_plugin_rslib@0.100.3
rspack_plugin_rstest@0.100.3
rspack_plugin_runtime@0.100.3
rspack_plugin_runtime_chunk@0.100.3
rspack_plugin_schemes@0.100.3
rspack_plugin_size_limits@0.100.3
rspack_plugin_split_chunks@0.100.3
rspack_plugin_sri@0.100.3
rspack_plugin_swc_js_minimizer@0.100.3
rspack_plugin_wasm@0.100.3
rspack_plugin_worker@0.100.3
rspack_regex@0.100.3
rspack_storage@0.100.3
rspack_swc_plugin_import@0.100.3
rspack_swc_plugin_ts_collector@0.100.3
rspack_tasks@0.100.3
rspack_tracing@0.100.3
rspack_tracing_perfetto@0.100.3
rspack_util@0.100.3
rspack_watcher@0.100.3
rspack_workspace@0.100.3

Generated by cargo-workspaces
@github-actions

Copy link
Copy Markdown

Rsdoctor Bundle Diff Analysis

Found 6 projects in monorepo, 6 projects with changes.

📊 Quick Summary
Project Total Size Change
popular-libs 1.7 MB -
react-10k 5.7 MB -
react-1k 826.3 KB -
react-5k 2.7 MB -
rome 1.6 MB -
ui-components 4.8 MB -
📋 Detailed Reports (Click to expand)

📁 popular-libs

Path: ../build-tools-performance/cases/popular-libs/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 1.7 MB - -
📄 JavaScript 1.7 MB - -
🎨 CSS 0 B - -
🌐 HTML 289.0 B - -
📁 Other Assets 0 B - -

📁 react-10k

Path: ../build-tools-performance/cases/react-10k/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 5.7 MB - -
📄 JavaScript 5.7 MB - -
🎨 CSS 21.0 B - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

📁 react-1k

Path: ../build-tools-performance/cases/react-1k/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 826.3 KB - -
📄 JavaScript 826.0 KB - -
🎨 CSS 0 B - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

📁 react-5k

Path: ../build-tools-performance/cases/react-5k/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 2.7 MB - -
📄 JavaScript 2.7 MB - -
🎨 CSS 21.0 B - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

📁 rome

Path: ../build-tools-performance/cases/rome/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 1.6 MB - -
📄 JavaScript 1.6 MB - -
🎨 CSS 0 B - -
🌐 HTML 0 B - -
📁 Other Assets 0 B - -

📁 ui-components

Path: ../build-tools-performance/cases/ui-components/dist/rsdoctor-data.json

⚠️ No baseline data found - Unable to perform comparison analysis

Metric Current Baseline Change
📊 Total Size 4.8 MB - -
📄 JavaScript 4.7 MB - -
🎨 CSS 107.0 KB - -
🌐 HTML 328.0 B - -
📁 Other Assets 0 B - -

Generated by Rsdoctor GitHub Action

@cellison-figma
cellison-figma merged commit a818e02 into main May 19, 2026
11 of 13 checks passed
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.