
🎉 See Announcing Rspack 1.5 for more details.
What's Changed
Breaking changes 💡
- feat!: update minimum Node.js version to 18.12.0 by @chenjiahan in #11338
Performance Improvements ⚡
- perf: align number hash algorithm with webpack by @nilptr in #10643
- perf: improve bundle splitting part 2 by @LingyuCoder in #11233
- perf: improve process runtime requirements by @LingyuCoder in #11259
- perf: improve process concatenated configurations by @LingyuCoder in #11264
- perf: improve
try_to_add
of module concatenation by @LingyuCoder in #11279 - perf: improve add concatenated modules by parallelizing conneciton modifications by @LingyuCoder in #11286
- perf: parallel mangle exports by @LingyuCoder in #10877
- perf: Update swc and switch to wasmtime by @quininer in #11303
- perf: cache concatenated imports by @LingyuCoder in #11334
- perf: Replace hot regex with parser by @quininer in #11341
- perf: use new swc lexer for asi by @CPunisher in #11357
- perf: improve bundle splitting by @LingyuCoder in #11364
- perf(browser): remove tracing by @CPunisher in #11436
- perf(browser): set
fmt_debug
tonone
by @CPunisher in #11439 - perf: improve concatenated plugin by @LingyuCoder in #11434
- perf: reuse plugin hooks by @LingyuCoder in #11449
- perf: not to call module graph modules multiple times by @LingyuCoder in #11455
- perf: improve bundle splitting by @LingyuCoder in #11465
- perf: add fast path for
get_scheme
by @CPunisher in #11475 - perf: replace
Mutex<Option<T>>
withOnceLock<T>
by @CPunisher in #11480
New Features 🎉
- feat(cli): use SWC to do TS config transformamation by @hardfist in #11411
- feat: add resolver JavaScript API by @CPunisher in #11211
- feat(wasm): support
@rspack/browser
by @CPunisher in #10870 - feat: lazy make for reexport in side effects free barrel file by @ahabhgk in #11117
- feat: support persistent cache for lazy barrel by @ahabhgk in #11285
- feat: rspack cli add config path to build dependencies by @jerrykingxyz in #11288
- feat: expose
experiments.swc
in parallel loader context by @jbroma in #11300 - feat: propagate const for inline const by @ahabhgk in #11311
- feat: module chunk HMR by @stormslowly in #11160
- feat: move experiments.lazyCompilation to configuration toplevel by @GiveMe-A-Name in #11337
- feat: add VirtualModulesPlugin by @nilptr in #11021
- feat: lazy compilation with persistent cache by @JSerFeng in #11235
- feat: define plugin use value dependencies by @jerrykingxyz in #11339
- feat(rslib): do not hoist
import
externalized module to webpack modules by @fi3ework in #11358 - feat: port normal module replacement plugin to builtin plugin by @ahabhgk in #11362
- feat: support
[folder]
template string inlocalIdentName
option by @mochiya98 in #11356 - feat: provide plugin use value dependencies by @jerrykingxyz in #11380
- feat: support using declaration by @ahabhgk in #11395
- feat: should rebuild all entries if there are entry removals by @JSerFeng in #11381
- feat(rslib): intercept more APIPlugin expressions by @fi3ework in #11418
- feat(browser): add
BrowserImportEsmPlugin
by @CPunisher in #11431 - feat(loader): merge identifier to loader trait by @h-a-n-a in #11453
- feat: allow external modules placed in async chunks by @JSerFeng in #11421
- feat(browser): introduce
BrowserRequirePlugin
and removenonWebpackRequire
by @CPunisher in #11470
Bug Fixes 🐞
- fix(types): change HotUpdateStatus from enum to union type by @chenjiahan in #11238
- fix: JsResolverFactory should cache Resolver instance based on different options by @SyMind in #11245
- fix: lifetime error by @LingyuCoder in #11260
- fix: avoid render weak import dependency by @ahabhgk in #11262
- fix: buildDependencies skip resolve nodejs builtin module by @jerrykingxyz in #11256
- fix: handle unwatch errors gracefully and improve native watcher integration by @GiveMe-A-Name in #11210
- fix: get resolve in externals should return query by @SyMind in #11276
- fix: CssGetFilenameRuntime should detect runtime requirements correctly by @JSerFeng in #11271
- fix: update lazy compilation middleware order to apply devServer Middleware by @GiveMe-A-Name in #11157
- fix: not changed related source-map when rename asset by @SyMind in #11293
- fix: swc transform api output sourcemaps by @jbroma in #11299
- fix: pass actual root context to parallel loader context by @jbroma in #11301
- fix: missing code generation report by @LingyuCoder in #11308
- fix: split chunks min chunks config with enforce by @SyMind in #11294
- fix: should not render export in modern-module when iife enabled by @Timeless0911 in #11317
- fix: export the missing
PathData
type by @colinaaa in #11315 - fix: rsdoctor multi compiler data scope by @LingyuCoder in #11310
- fix: batch rename_asset with parallel optimization by @SyMind in #11325
- fix: should synchronously bind html plugin hooks in sri plugin by @LingyuCoder in #11342
- fix: add unknown_context_critical option for unknown require as expression by @PeterCardenas in #10329
- fix(incremental): LimitChunkCountPlugin panic with incremental turned on by @pgoldberg in #11360
- fix(loader): fix JS loader type detection for issue #11129 by @h-a-n-a in #11361
- fix(cli): resolve port conflicts in parallel test execution by @h-a-n-a in #11363
- fix: modify lazy compilation tests by @JSerFeng in #11349
- fix: should use specific runtime to get target url by @JSerFeng in #11372
- fix(wasm): remove cjs loader support by @CPunisher in #11283
- fix: cache concatenated module imports is not safe by @LingyuCoder in #11385
- fix: add query to avoid browser cache the link by @JSerFeng in #11394
- fix: fix identifier typo by @JSerFeng in #11403
- fix: correct export alias for json by @inottn in #11402
- fix: NormalModuleReplacementPlugin doesn't update path, query and fragment by @CPunisher in #11407
- fix(browser): fix @rspack/browser building by @CPunisher in #11417
- fix: bailout optimize if there are external modules in other concate scope by @JSerFeng in #11430
- fix: native watcher fails to work correctly with persistent cache by @GiveMe-A-Name in #11420
- fix: define plugin can rename by @ahabhgk in #11435
- fix(ci): should check package name in pre-release check by @JSerFeng in #11438
- fix: update node inspector import and remove workaround by @chenjiahan in #11444
- fix: lazy compilation with only loader module by @SyMind in #11443
- fix(create-rspack): remove ts-node from templates by @chenjiahan in #11458
- fix: check force_build_deps target module is isolated by @jerrykingxyz in #11461
- fix: update event handling to support batch processing of FsEvents by @GiveMe-A-Name in #11460
- fix: should recompile correctly when a shared entry specified in 'dependOn' is modified during watch mode by @SyMind in #11464
- fix(browser): rename and ignore requests with match resource and inline loaders by @CPunisher in #11469
- fix: unstable render dependency template by @LingyuCoder in #11473
- fix: unstable bundle splitting by @LingyuCoder in #11474
- fix: build chunk graph incremental logic when dynamic entry with depend on by @SyMind in #11481
Refactor 🔨
- refactor: remove features that are not supported in stable Rust by @h-a-n-a in #11243
- refactor: move make dir by @jerrykingxyz in #11244
- refactor: bench external getResolve & remove ResolveClosureContext by @SyMind in #11171
- refactor: move builtin loader registration to plugin by @h-a-n-a in #11258
- refactor: limit exported symbols in
rspack_binding_api
by @h-a-n-a in #11263 - refactor: remove redundant
PluginContext
andasync_trait
from traitPlugin
by @h-a-n-a in #11272 - refactor: streamline native watcher path management and API design by @GiveMe-A-Name in #11282
- refactor: remove __rust_probestack workaround by @h-a-n-a in #11326
- refactor: move builtin virtual module plugin to experiments by @stormslowly in #11353
- refactor: inline const parser plugin by @ahabhgk in #11359
- refactor: distinguish free variable and tagged variable by @ahabhgk in #11389
- refactor: rspack error remove useless code by @jerrykingxyz in #11406
- refactor: add module pre walk by @ahabhgk in #11416
- refactor: only collect destructuring assignment properties for specific expression by @ahabhgk in #11433
- refactor: clean paren ast for analyzing dependencies by @ahabhgk in #11447
- refactor: run_loaders always return loader result by @jerrykingxyz in #11463
- refactor(browser): remove
esm.sh
default domain inBrowserHttpImportEsmPlugin
by @CPunisher in #11482 - refactor: use Atom for parser variable name by @ahabhgk in #11483
Document Updates 📖
- docs: add docs for lazy barrel by @ahabhgk in #11274
- docs: add docs for custom binding crates by @h-a-n-a in #11290
- docs(rspress): upgrade to 2.0.0-beta.25 by @SoonIter in #11312
- docs: add Rslint to the list of Rstack tools by @chenjiahan in #11318
- docs: add version badges to Rstack tools table by @chenjiahan in #11321
- docs(quick-start): update runtime installation instructions by @chenjiahan in #11327
- docs(config): output.filename link fix by @vsn4ik in #11369
- docs: update examples and terminology by @chenjiahan in #11374
- docs: fix typos in asset modules by @colinaaa in #11382
- docs: add playground to navbar by @CPunisher in #11384
- docs(website): restructure navigation and update sidebar config by @chenjiahan in #11386
- docs: remove outdated Node version requirements from quick start by @chenjiahan in #11393
- docs: update ts config guide by @hardfist in #11409
- docs: add building and testing guide for rspack wasm by @CPunisher in #11414
- docs(ESM): add ESM guide by @fi3ework in #11344
- docs: some minor documentation updates for branding by @chenjiahan in #11459
- docs: improve virtual-modules-plugin documentation by @chenjiahan in #11467
- docs: add guide for the
@rspack/browser
package by @CPunisher in #11472
Other Changes
- chore: bump rust toolchain to
2025-07-28
by @h-a-n-a in #11217 - chore: release v1.4.11 by @GiveMe-A-Name in #11215
- chore(releasing): should not publish testing crates by @h-a-n-a in #11248
- chore: add crates.io badge by @h-a-n-a in #11250
- chore: upgrade rslint@0.1.0 by @hardfist in #11253
- chore: upgrade rslint to 0.1.1 by @hardfist in #11261
- chore: ignore moduleFederationDefaultRuntime.js in rslint by @stormslowly in #11269
- chore(wasm): release
@rspack/browser
by @CPunisher in #11254 - chore: supporting linux cache compressing with zstd by @stormslowly in #11270
- chore: upgrade rslint to 0.1.3 by @hardfist in #11267
- chore(deps): update github-actions by @renovate[bot] in #11295
- chore(deps): update napi by @renovate[bot] in #11296
- chore: deprecated
experiments.topLevelAwait
config by @stormslowly in #11284 - chore(deps): update dependency @playwright/test to v1.54.2 by @renovate[bot] in #11298
- chore: remove from
rspack_binding_api
in CODEOWNERS by @h-a-n-a in #11307 - chore: upgrade rslint@0.1.5 by @hardfist in #11316
- chore(ci): update test node matrix by @stormslowly in #10871
- chore(deps): update dependency prebundle to ^1.4.1 by @renovate[bot] in #11348
- chore(deps): update dependency memfs to v4.36.0 by @renovate[bot] in #11347
- chore(deps): update dependency typescript to ^5.9.2 by @renovate[bot] in #11323
- chore(ci): use npm trusted publish by @stormslowly in #11343
- chore(deps): update dependency @module-federation/runtime-tools to v0.18.0 by @renovate[bot] in #11322
- chore(ci): fix flaky serve test by @quininer in #11352
- chore(ci): fix flaky serve test (take 2) by @quininer in #11355
- chore(deps): update dependency @shikijs/transformers to ^3.9.2 by @renovate[bot] in #11367
- chore(deps): update github-actions by @renovate[bot] in #11365
- chore(deps): update dependency @types/babel__traverse to v7.28.0 by @renovate[bot] in #11368
- chore(deps): update dependency core-js to v3.45.0 by @renovate[bot] in #11370
- chore: build http test case avoid send http request by @jerrykingxyz in #11375
- chore: Use macro instead of runtime debug_assert by @quininer in #11379
- chore: remove
@rsbuild/core
by @CPunisher in #11383 - chore: upgrade rslint to 0.1.11 by @hardfist in #11396
- chore(browser): fix generated types by @CPunisher in #11388
- chore(deps): update pnpm to v10.14.0 by @renovate[bot] in #11399
- chore(deps): update dependency @rslib/core to v0.12.1 by @renovate[bot] in #11397
- chore(deps): update dependency rsbuild-plugin-open-graph to v1.1.0 by @renovate[bot] in #11398
- chore(deps): update lightningcss crate to 1.0.0-alpha.67 by @chenjiahan in #11405
- chore: release v1.5.0-beta.0 by @stormslowly in #11340
- chore: bump
swc_core
from 35.0.0 to 36.0.0 by @CPunisher in #11419 - chore: update swc types and docs by @ahabhgk in #11423
- chore: release 1.5.0-beta.1 by @stormslowly in #11415
- chore(deps): update dependency mermaid to v11.10.0 [security] by @renovate[bot] in #11428
- chore(deps): update dependency @shikijs/transformers to ^3.11.0 by @renovate[bot] in #11429
- chore(ci): prevent prerelease published to lastest by @stormslowly in #11424
- test: remove legacy Node version helpers by @chenjiahan in #11442
- docs: fix various documentation errors including grammar, terminology and typos by @Copilot in #11445
- chore: add Claude local config to gitignore by @h-a-n-a in #11452
- ci: enable parallel execution of npm and crates releases by @h-a-n-a in #11450
- revert: "fix: lazy compilation with only loader module (#11443)" by @SyMind in #11456
- chore: release 1.5.0-rc.0 by @stormslowly in #11446
- chore: set up Copilot instructions for Rspack repository by @Copilot in #11336
- chore(deps): update dependency @biomejs/biome to ^2.2.2 by @renovate[bot] in #11426
- revert: Revert "perf: improve bundle splitting" by @LingyuCoder in #11468
New Contributors
- @PeterCardenas made their first contribution in #10329
- @vsn4ik made their first contribution in #11369
- @mochiya98 made their first contribution in #11356
- @Copilot made their first contribution in #11445
Full Changelog: v1.4.11...v1.5.0