rspack

Developer ToolsMIT

rspack release notes.

Latest v2.2.4 · by rspackWritten in RustWebsiteweb-infra-dev/rspackRSS

Release activity

Release activity — 21 releases across 21 days since Jun 17, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Jun 17, 2026. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026No releases on Sep 13, 2026
MondayNo releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 2026No releases on Sep 7, 20261 release on Sep 14, 2026
Tuesday1 release on Jun 23, 20261 release on Jun 30, 20261 release on Jul 7, 20261 release on Jul 14, 20261 release on Jul 21, 20261 release on Jul 28, 20261 release on Aug 4, 20261 release on Aug 11, 20261 release on Aug 18, 2026No releases on Aug 25, 20261 release on Sep 1, 20261 release on Sep 8, 2026No releases on Sep 15, 2026
Wednesday1 release on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 20261 release on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 20261 release on Aug 26, 2026No releases on Sep 2, 2026No releases on Sep 9, 2026
Thursday1 release on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 20261 release on Aug 13, 2026No releases on Aug 20, 20261 release on Aug 27, 2026No releases on Sep 3, 2026No releases on Sep 10, 2026
FridayNo releases on Jun 19, 20261 release on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 20261 release on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026No releases on Sep 11, 2026
SaturdayNo releases on Jun 20, 20261 release on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026No releases on Sep 12, 2026

21 releases since Jun 17, 2026

Changelog

What changed from 1 to 2

v2.2.4

Latest
Added 4
  • CSS-only entries using native CSS support now emit standalone stylesheets without an unnecessary JavaScript bundle
  • Standalone runtime chunks are omitted when no JavaScript entry needs them
  • Native CSS support now recognizes webpackIgnore and its rspackIgnore alias for @import, url(), and image-set() dependencies
  • Parent and child compilers with experiments.newCache now coordinate access to shared persistent cache storage while keeping their entries separate
Changed 1
  • Upgrade simd-utf16-len to 0.2.0
Fixed 10
  • Infer shared module exports from fallback in module federation
  • Prevent duplicate exports renaming in modern-module output
  • Preserve shared connections during module concatenation
  • Expose original source in succeedModule hooks
  • Normalize HttpUriPlugin allowedUris before matching
  • Do not terminate the enclosing scope after a do-while loop in JavaScript

From rspack

Highlights
CSS-only entry bundling

CSS-only entries using native CSS support now emit standalone stylesheets without an unnecessary JavaScript bundle. Standalone runtime chunks are also omitted when no JavaScript entry needs them, making it easier to build CSS assets directly. See #14879.

Ignore magic comments in CSS

Native CSS support now recognizes webpackIgnore and its rspackIgnore alias for @import, url(), and image-set() dependencies. This lets you leave selected references for the browser to load instead of resolving and bundling them. See #15314.

Reliable persistent caching for child compilers

With experiments.newCache, parent and child compilers now coordinate access to shared persistent cache storage while keeping their entries separate. This prevents conflicting writes and cleanup from losing cached data, and allows both parent and child modules to be restored across compiler restarts. See #15616.

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.2.3...v2.2.4

View originalPermalink
How v2.2.4 went

v2.2.3

Added 6
  • Support `asset`, `asset-url`, and `css-import` external types for CSS to reference stylesheets and assets hosted elsewhere
  • Allow `watchOptions.ignored` to accept a function when `experiments.nativeWatcher` is enabled
  • Align `maxMemoryGenerations` cache option with webpack
  • Support builtin swc-loader cache
  • Expose import attributes on NormalModuleFactory ResolveData
  • Port webpack persistent module cache
Changed 2
  • Preserve `layer`, `supports`, and media conditions in external `@import` statements in emitted CSS
  • Improve file event processing to reduce event loss during large bursts of changes on Linux
Fixed 12
  • Skip tsconfig paths resolution for relative specifiers to reduce configuration reads in large TypeScript projects
  • Treat CJS export assignment as side-effect-free without breaking innerGraph
  • Preserve leading zeros in string module ids
  • Key eval cache by module to keep sourceURL correct
  • Improve loader context filesystem types
  • Allow optionless filesystem sync calls

From rspack

Highlights
CSS Import and Asset URL Externals

Rspack now supports asset, asset-url, and css-import external types, allowing CSS to reference stylesheets and assets hosted elsewhere. External @import statements preserve layer, supports, and media conditions, so conditional styles stay conditional in the emitted CSS. #15431, #15522.

More Flexible and Reliable Native Watching

With experiments.nativeWatcher enabled, watchOptions.ignored now accepts a function, making it easier to reuse existing ignore rules when switching to the native watcher. File event processing has also been improved to reduce event loss during large bursts of changes on Linux. #15254.

Lower Resolution Overhead for TypeScript Projects

Relative imports such as ./utils and ../shared no longer trigger unnecessary tsconfig loading or tracking of its project-reference tree. This reduces configuration reads and dependency tracking, especially in large TypeScript projects with many project references. #15492.

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.2.2...v2.2.3

View originalPermalink
How v2.2.3 went

v2.2.2

Added 2
  • Add infrastructure logging to the new cache
  • Add JavascriptModulesPlugin.getChunkFilenameTemplate
Changed 4
  • Optimize deterministic module id assignment
  • Share runtimes in flag dependency usage
  • Optimize module rendering for chunk assets
  • Optimize create module hashes
Fixed 9
  • Generate correct prefetch child assets
  • Keep import.meta.url in createRequire when importMeta is disabled
  • Align module need_build and FileSystemInfo with webpack
  • Support all EnvironmentPlugin default values
  • Improve incremental chunk graph reuse
  • Await patch delivery before sealing completes in rsdoctor

From rspack

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.2.1...v2.2.2

View originalPermalink
How v2.2.2 went

v2.2.1

Added 2
  • Align wasmStreamingFallback with webpack
  • Track dependencies in loader cache
Changed 1
  • Store FactorizeInfo path dependencies as compact slices
Fixed 11
  • Correct compact hashed module and chunk IDs naming from compat-hashed to compact-hashed, with deprecated compatibility aliases maintained for backward compatibility
  • Disable stats logging by default
  • Disable incremental outside development mode
  • Run afterCompile before shouldEmit and asset emission
  • Clear stale issuer updates between rebuilds
  • Exclude asset output path from URLs in CSS

From rspack

Highlights
Corrected compact-hashed IDs naming

Rspack 2.2.0 introduced compact hashed module and chunk IDs under the mistakenly named compat-hashed option and CompatHashedModuleIdsPlugin / CompatHashedChunkIdsPlugin APIs. Rspack 2.2.1 corrects these names to compact-hashed, CompactHashedModuleIdsPlugin, and CompactHashedChunkIdsPlugin.

The names introduced in 2.2.0 remain available as deprecated compatibility aliases, but we recommend upgrading to Rspack 2.2.1 and using the corrected names:

module.exports = {
  optimization: {
    moduleIds: 'compact-hashed',
    chunkIds: 'compact-hashed',
  },
};
What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.2.0...v2.2.1

View originalPermalink
How v2.2.1 went

v2.2.0

Added 10
  • Implement generation-based memory cache eviction
  • Add idle cache compaction with interruption handling
  • Integrate module code generation to the new cache
  • Add fine-grained new cache options
  • Add compat-hashed module ids
  • Analyze dynamic imports in Promise.all destructuring
Changed 8
  • Improve unicode handling and support more CSS modules cases, boost performance
  • Cache converted module original source
  • Batch splitChunks JavaScript callbacks
  • Avoid parsing concatenated module codegen
  • Preallocate identifier path buffers
  • Intern ArcPath as a single-allocation prehashed path
  • Use rayon parallel scheduling for new cache db
  • Skip the directory walk for glob patterns without metacharacters
Fixed 2
  • Pass HMR error to Preact refresh recovery handler
  • Strip BOM from module content before concatenation in CSS extraction

From rspack

What's Changed
🎉 See Announcing Rspack 2.2 for more details.
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.10...v2.2.0

View originalPermalink
How v2.2.0 went

v2.2.0-rc.0

Pre-release
Added 2
  • Integrate module code generation to the new cache
  • Add fine-grained new cache options
Changed 2
  • Intern ArcPath as a single-allocation prehashed path
  • Use rayon parallel scheduling for new cache db
Fixed 9
  • CSS module dashed identifier and composes edge cases
  • Make Module.blocks and Module.dependencies fail gracefully while the module graph is under construction
  • Preserve reexport call context in concatenation
  • Validate new cache version
  • Use storage location for new cache
  • Make compare_modules_by_pre_order_index_or_identifier a total order

From rspack

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.2.0-beta.1...v2.2.0-rc.0

View originalPermalink
How v2.2.0-rc.0 went

v2.2.0-beta.1

Pre-release
Added 3
  • CSS Modules coverage expands to local/global modes, generator options, ICSS @value, custom identifiers, and warning order
  • Implement generation-based memory cache eviction
  • Add idle cache compaction with interruption handling
Changed 9
  • Client Component CSS now uses Flight preinit instead of being injected by wrapping exports with generated link elements, preserving client-reference identity
  • Upgrade swc_core from 76 to 77, which changes the serialized AST encoding across the SWC Wasm plugin boundary and requires plugins to be rebuilt
  • CSS identifier escaping and unescaping now follow the CSS Syntax standard, emitting Unicode identifiers directly instead of with unnecessary backslashes
  • Move dependency collection for CSS modules into css-module-lexer so stylesheets are no longer rescanned with regular expressions after parsing
  • Cache converted module original source in binding for performance
  • Batch splitChunks JavaScript callbacks for performance
Fixed 6
  • Pass HMR error to Preact refresh recovery handler
  • Limit shutdown compaction to a single pass
  • Add missing stats fields to types
  • Strip BOM from module content before concatenation in css-extract
  • Decouple incremental artifacts from cache
  • Preserve ESM imports in module output for preserve importMode
Removed 1
  • Export-wrapper behavior for Client Component stylesheets is removed in favor of preinitialization from the React Flight payload

From rspack

Highlights
RSC: Client Component CSS now uses Flight preinit

Rspack now emits Client Component exports as registered client references directly. CSS imported by a Client Component is no longer injected by wrapping its exports with generated <link> elements; the stylesheet is preinitialized from the React Flight payload instead. This preserves client-reference identity, including default, named, CommonJS, and non-component exports. Explicit link generation remains available through import.meta.rspackRsc.loadCss().

This is a breaking change for RSC framework integrations. Upgrade react-server-dom-rspack to 0.1.0 and update any code that relies on the previous export-wrapper behavior.

SWC 77: Wasm plugins must be rebuilt

swc_core is upgraded from 76 to 77, which changes the serialized AST encoding across the SWC Wasm plugin boundary. Plugins compiled against an earlier SWC schema no longer load and the build fails with The version of the SWC Wasm plugin you're using might not be compatible with 'builtin:swc-loader'. Rebuild your plugin, or upgrade to an SWC 77 compatible release .

Use plugins.swc.rs to find the plugin version matching your Rspack release, and see SWC plugin version mismatch for details. SWC 77 also introduces dedicated FunctionBody and ArrowFunctionBody::FunctionBody AST nodes, a breaking change for Rust-side consumers of the SWC AST.

CSS Modules: standards-aligned Unicode identifiers

CSS identifier escaping and unescaping now follow the CSS Syntax standard, so Unicode identifiers are emitted directly instead of carrying unnecessary backslashes.

.😍 {
  color: red;
}

now generates .style_modules_css-😍 rather than .style_modules_css-\😍.

CSS Modules coverage also expands to more webpack cases — local/global modes, generator options, ICSS @value, custom identifiers, and warning order — and dependency collection moves into css-module-lexer, so stylesheets are no longer rescanned with regular expressions after parsing.

What's Changed
Breaking Changes 🍭
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.10...v2.2.0-beta.1

View originalPermalink
How v2.2.0-beta.1 went

v2.1.10

Added 3
  • Expose ExternalModule chunkCondition hook
  • Implement new cache system
  • Integrate new cache to minimize cache
Fixed 6
  • Process remaining module copies at lower priorities in split-chunks
  • Allow scope hoisting for new URL targets in new-url-relative mode in esm_library
  • Bump rkyv to 0.8.18 to fix RUSTSEC-2026-0233, RUSTSEC-2026-0234, and RUSTSEC-2026-0235
  • Normalize string context from loaded config in CLI
  • Share ExternalModule hooks across core instances
  • Fix new cache compile failure on 32-bit platforms
Removed 1
  • Remove noisy import.meta warnings for unknown properties

From rspack

[!NOTE] Removed noisy import.meta warnings

Rspack 2.1.9 introduced warnings for unknown import.meta properties. Because they proved overly noisy in real-world builds, Rspack 2.1.10 removes them to reduce unnecessary diagnostics for custom or runtime-specific extensions. See #15166 for detail.

What's Changed
New Features 🎉
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.9...v2.1.10

View originalPermalink
How v2.1.10 went

v2.1.9

Added 4
  • Warn on unknown import.meta properties
  • Add builds for binding-linux-(ppc64,s390x)-gnu
  • Support --no-git flag in create-rspack
  • Support caseSensitive option in import.meta.glob
Changed 7
  • Cache and order static patterns in copy-plugin
  • Limit incremental HMR asset processing
  • Avoid unnecessary call wrappers for runtime helpers
  • Cache compilation assets proxy
  • Avoid copying aligned archive buffers in cache
  • Avoid duplicating export dependency data in JSON
  • Improve source map convert performance
Fixed 9
  • Improve circular real content hash error diagnostics
  • Keep compilation dependency iterators disjoint
  • Align cache version semantics with webpack
  • Preserve ignored URL when import.meta.url is disabled
  • Avoid runtime lock deadlock in napi
  • Match compiler prefixes exactly in lazy compilation

From rspack

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.8...v2.1.9

View originalPermalink
How v2.1.9 went

v2.1.8

Added 3
  • Support cache.name and cache.storage.location options to align with webpack's persistent cache semantics
  • Emit css.c and css.r in the hot-update manifest for precise CSS updates
  • Inject module origin for import.meta.rstest
Changed 1
  • cache.storage.directory is now the base directory, with final cache location defaulting to <directory>/<cache.name>
Fixed 15
  • Preserve entry dependency identity in binding
  • Preserve Lightning CSS license comments in loader
  • Add missing CJS interop runtime requirement for ESM
  • Avoid dead require bootstrap in runtime
  • Preserve collision-free createRequire imports in runtime
  • Clean up compilation-scoped plugin caches

From rspack

Highlights
Persistent cache storage options now align with webpack

Rspack now supports cache.name and cache.storage.location, aligning with webpack's persistent cache semantics. cache.storage.directory is now the base directory, while the final cache location defaults to <directory>/<cache.name>. Default cache paths remain unchanged.

If you previously used storage.directory as the exact cache path, migrate it to storage.location. Existing cache data is not migrated automatically.

cache: {
  type: 'persistent',
  storage: {
    type: 'filesystem',
-   directory: '/custom/cache',
+   location: '/custom/cache',
  },
}
What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.7...v2.1.8

View originalPermalink
How v2.1.8 went

v2.1.7

Changed 1
  • Share source code across diagnostics to improve performance
Fixed 1
  • Release module graph connection wrappers
Removed 1
  • Remove the import.meta.env experimental feature that was introduced in Rspack 2.1.6

From rspack

Notice: The import.meta.env experimental feature introduced in Rspack 2.1.6 has been removed in Rspack 2.1.7.

What's Changed
Performance 🚀
Bug Fixes 🐞
Other Changes

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.6...v2.1.7

View originalPermalink
How v2.1.7 went

v2.1.6

Added 1
  • Support import.meta.env
Changed 3
  • Cache module concatenation analysis across roots
  • Reuse module concatenation search state
  • Reduce module concatenation hot-path overhead
Fixed 12
  • Materialize namespace object for concatenated modules
  • Parse preserved createRequire arguments
  • Invalidate module hashes when assigning deterministic and natural ids
  • Disable incremental chunk assets for entry fullhash filenames
  • Propagate asset emit errors
  • Avoid JavaScript output for URL-only assets

From rspack

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.5...v2.1.6

View originalPermalink
How v2.1.6 went

v2.1.5

Fixed 12
  • Respect runtime mode in mf identifiers
  • Preserve multiple referenced client exports in rsc
  • Preserve createRequire().resolve with literal import.meta.url when requireResolve is disabled
  • Preserve inline match resource imports in css
  • Short-circuit optional import.meta calls
  • Preserve exports for dynamic client references in rsc

From rspack

What's Changed
Bug Fixes 🐞
Refactor 🔨
Other Changes

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.4...v2.1.5

View originalPermalink
How v2.1.5 went

v2.1.4

Added 3
  • Support fine-grained import.meta parser options allowing each known import.meta property to be configured independently
  • Support static worker new URL output with module.parser.javascript.worker accepting an object form with alias and url
  • Support logical assignment for chunk loading global in runtime
Changed 4
  • Enable parallel wasmtime compilation for improved performance
  • Optimize ESM linking passes
  • Deduplicate repeated dynamic reexport code
  • Reduce hook macro expansion size and optimize performance
Fixed 7
  • Clean up runtime global rendering
  • Clean up chunk wrappers when compiler is garbage collected
  • Enable runtime mode ESM context imports
  • Revert Module Federation runtime identifiers
  • Include paths in native filesystem errors
  • Respect RSPACK_BINDING in loader workers
  • Invalidate the target compiler for lazy compilation

From rspack

Highlights
Fine-grained import.meta parser options

module.parser.javascript.importMeta now accepts an object so each known import.meta property can be configured independently, on top of the existing true / false / 'preserve-unknown' values. Properties set to false are preserved for runtime evaluation, omitted properties keep their default behavior, and unknown properties are preserved. Both webpack-compatible keys (dirname, filename, main, url, webpack, webpackContext) and Rspack-specific keys (rspackHash, rspackPublicPath, glob, ...) are supported.

export default {
  module: {
    parser: {
      javascript: {
        importMeta: {
          // keep `import.meta.url` for runtime evaluation
          url: false,
          // keep the compile-time replacement of `import.meta.webpack`
          webpack: true,
        },
      },
    },
  },
};
Static worker URL output

module.parser.javascript.worker now accepts an object form with alias and url, alongside the existing boolean and string[] forms. With url: 'new-url-relative' and output.module enabled, Rspack emits a static new URL() expression for new Worker(new URL(..., import.meta.url)) instead of runtime code, honoring output.publicPath and output.workerPublicPath.

export default {
  output: {
    module: true,
    chunkFilename: '[name].bundle.js',
  },
  module: {
    parser: {
      javascript: {
        worker: {
          url: 'new-url-relative',
        },
      },
    },
  },
};
new Worker(new URL('./worker.js', import.meta.url));

// would become 👇
new Worker(new URL('./worker.bundle.js', import.meta.url));
What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.3...v2.1.4

View originalPermalink
How v2.1.4 went

v2.1.3

Added 2
  • Add name/value accessors to ESMExportSpecifierDependency
  • Expose the real Chunk instance to filename functions
Changed 4
  • Erase js tap storage types to reduce binary size
  • Build rspack source maps directly
  • Optimize module hash creation
  • Pre-size per-module maps and vecs in mangle_exports
Fixed 10
  • Update runtime context during hot updates
  • Inline-value check must precede deferred pure checks in concatenation
  • Skip re-applying unchanged CSS during HMR
  • Preserve asset bytes for binary files
  • Dedupe link HMR stylesheets in CSS
  • Emit manifest assets with forward-slash names on Windows

From rspack

What's Changed
New Features 🎉
  • feat: add name/value accessors to ESMExportSpecifierDependency (#14641 by @yashwanth195)
  • feat(core): expose the real Chunk instance to filename functions (#14549 by @JSerFeng)
Performance 🚀
  • perf: erase js tap storage types to reduce binary size (#14636 by @intellild)
  • perf: build rspack source maps directly (#14621 by @intellild)
  • perf: optimize module hash creation (#14654 by @LingyuCoder)
  • perf(mangle_exports): pre-size per-module maps and vecs (#14705 by @stormslowly)
Bug Fixes 🐞
  • fix: update runtime context during hot updates (#14644 by @LingyuCoder)
  • fix(concatenation): inline-value check must precede deferred pure checks (#14663 by @guru-irl)
  • fix(css): skip re-applying unchanged CSS during HMR (#14580 by @stormslowly)
  • fix(asset): preserve asset bytes for binary files (#14670 by @hardfist)
  • fix(css): dedupe link HMR stylesheets (#14666 by @intellild)
  • fix(mf): emit manifest assets with forward-slash names on Windows (#14667 by @johncarmack1984)
  • fix(esm_library): unwrap dynamic source-phase imports in modern-module output (#14673 by @elecmonkey)
  • fix(esm_library): preserve static source-phase external bindings (#14674 by @elecmonkey)
  • fix(bench): pin glibc string-func dispatch to stabilize simulation benches (#14704 by @stormslowly)
  • fix(css): distinguish css wrapper sourcemap names (#14675 by @intellild)
  • fix(binding): keep path data chunk compatible (#14698 by @JSerFeng)
Refactor 🔨
  • refactor: use rspack runtime module prefix (#14630 by @LingyuCoder)
  • refactor: split content hash from std Hash (#14384 by @intellild)
  • refactor: rename hash objects for clearer semantics (#14642 by @intellild)
  • refactor: use rspack scheme for source map defaults (#14635 by @LingyuCoder)
  • refactor(runtime): collect runtime writes from ejs define (#14651 by @LingyuCoder)
  • refactor(napi): remove napi tokio runtime dependency (#14696 by @hardfist)
Other Changes
  • test: register misc bundle benchmark (#14632 by @hardfist)
  • chore(release): stream per-package publish output (#14585 by @stormslowly)
  • chore(deps): update github-actions (#14638 by @renovate[bot])
  • ci: replace rust-cache with sccache (TOS) on self-hosted runners (#14567 by @stormslowly)
  • ci: reset lynx-infra/cache action to d6bd70b (#14646 by @stormslowly)
  • chore(ci): run binary size limit on linux mini runner (#14648 by @stormslowly)
  • chore(ci): compare binary size against PR merge base (#14656 by @stormslowly)
  • test: isolate emit-isolated-dts case to fix cross-suite dts write race (#14659 by @stormslowly)
  • chore(deps): update github-actions (major) (#14639 by @renovate[bot])
  • chore(deps): update dependency @rslint/core to v0.6.4 (#14678 by @renovate[bot])
  • chore(deps): update patch npm dependencies (#14679 by @renovate[bot])
  • chore(deps): update dependency prettier to v3.9.4 (#14680 by @renovate[bot])
  • chore(deps): update rust crate tempfile to 3.27.0 (#14685 by @renovate[bot])
  • chore(deps): update rust crate unicase to 2.9.0 (#14686 by @renovate[bot])
  • chore(deps): update rust crate json-escape-simd to 3.1.0 (#14694 by @renovate[bot])
  • chore(deps): update rust crate derive_more to 2.1.1 (#14692 by @renovate[bot])
  • chore(deps): update rust crate clap to 4.6.1 (#14689 by @renovate[bot])
  • chore(deps): update rust crate bytes to 1.12.0 (#14688 by @renovate[bot])
  • chore(deps): update rust crate dashmap to 6.2.1 (#14691 by @renovate[bot])
  • chore(deps): update rust crate criterion to 4.7.0 (#14690 by @renovate[bot])
  • chore(deps): update napi to 3.10.3 (#14681 by @renovate[bot])
  • chore: bump swc_core from 71 to 72 (#14709 by @CPunisher)
  • chore(deps): bump rspack_resolver to 0.9.4 (#14710 by @stormslowly)

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.2...v2.1.3

View originalPermalink
How v2.1.3 went

v2.1.2

Added 1
  • Support `import.meta` style module variables including `import.meta.rspackPublicPath`, `import.meta.rspackBaseUri`, `import.meta.rspackShareScopes`, `import.meta.rspackInitSharing`, `import.meta.rspackNonce`, `import.meta.rspackUniqueId`, `import.meta.rspackVersion`, and `import.meta.rspackHash`
Changed 2
  • Deduplicate runtime module macro glue for improved performance
  • Avoid cloning side effects artifact in module concatenation
Fixed 3
  • Inject runtime require into browser MF runtime
  • Preserve import phase in dynamic import external rendering
  • Empty references export for cjs and dynamic import tree shaking

From rspack

What's Changed
Highlights 💡
Support import.meta style module variables
New import.meta APIExisting runtime variable
import.meta.rspackPublicPath__webpack_public_path__
import.meta.rspackBaseUri__webpack_base_uri__
import.meta.rspackShareScopes__webpack_share_scopes__
import.meta.rspackInitSharing__webpack_init_sharing__
import.meta.rspackNonce__webpack_nonce__
import.meta.rspackUniqueId__rspack_unique_id__
import.meta.rspackVersion__rspack_version__
import.meta.rspackHash__webpack_hash__
New Features 🎉
  • feat: support import.meta style module variables (#14539 by @LingyuCoder)
Performance 🚀
  • perf: deduplicate runtime module macro glue (#14620 by @intellild)
  • perf: avoid cloning side effects artifact in module concatenation (#14622 by @hardfist)
Bug Fixes 🐞
  • fix(browser): inject runtime require into browser MF runtime (#14590 by @CPunisher)
  • fix(ci): build wasm in release debug so the wasm binding gets published (#14614 by @stormslowly)
  • fix(rslib): preserve import phase in dynamic import external rendering (#14615 by @elecmonkey)
  • fix: empty references export for cjs and dynamic import tree shaking (#14629 by @ahabhgk)
Document 📖
  • docs: document asset/resource emit generator option (#14602 by @chenjiahan)
  • docs: document json parser parse option (#14606 by @chenjiahan)
  • docs: document more rule use options (#14610 by @chenjiahan)
  • docs: update module variable docs for import.meta (#14618 by @LingyuCoder)
  • docs: enable Rspress anchor checks (#14627 by @chenjiahan)
Other Changes
  • chore(deps): update patch npm dependencies (#14595 by @renovate[bot])
  • chore(deps): update dependency @babel/preset-react to ^7.29.7 (#14597 by @renovate[bot])
  • chore(deps): update dependency @ast-grep/napi to ^0.44.0 (#14596 by @renovate[bot])
  • chore(deps): update dependency @rsbuild/core to v2.1.1 (#14603 by @renovate[bot])
  • chore(deps): update dependency @rspack/dev-server to ^2.1.0 (#14604 by @renovate[bot])
  • chore(deps): update dependency @shikijs/transformers to ^4.3.0 - autoclosed (#14605 by @renovate[bot])
  • chore(deps): update dependency mermaid to ^11.16.0 (#14607 by @renovate[bot])
  • chore(deps): update dependency ts-checker-rspack-plugin to ^1.5.1 (#14608 by @renovate[bot])
  • chore(deps): update dependency @rsbuild/plugin-sass to v2 (#14609 by @renovate[bot])
  • chore: remove obsolete perf agent skills (#14613 by @hardfist)

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.1...v2.1.2

View originalPermalink
How v2.1.2 went

v2.1.1

Added 1
  • Add dependencyId and loc to export usage edges in rsdoctor
Changed 1
  • Add persistent cache for SourceMapDevToolPlugin
Fixed 2
  • Add guard for link.parentNode in css runtime
  • Revert cjs export assignment side effects optimization

From rspack

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.0...v2.1.1

View originalPermalink
How v2.1.1 went

v2.1.0

Added 10
  • Expose module error JS API
  • Log persistent cache read and write timings
  • Expose getProvidedExports() to JS API
  • Support drop inactive branch dependencies for member expressions
  • Introduce experimental.runtimeMode
  • Support branch guarded export presence for `in` on ESM imports
Changed 5
  • Enable pureFunctions by default
  • Make persistent cache max generations default to 3
  • Rename persistent cache maxGenerations to maxVersions
  • Harden persistent cache version cleanup with typed version
  • Make stale version cleanup fire-and-forget
Fixed 5
  • Preserve inline source content for transform sourcemaps
  • Remove webpackSource and webpackDefer magic comments
  • Apply global overrideStrict for ContextModule
  • Filter ignored-subtree events that emit a spurious folder change in watcher
  • Handle nested pure function calls in tree-shaking

From rspack

What's Changed
🎉 See Announcing Rspack 2.1 for more details.
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.0.8...v2.1.0

View originalPermalink
How v2.1.0 went

v2.1.0-rc.0

Pre-release
Added 1
  • Make persistent cache max generations default to 3
Changed 2
  • Optimize compilation entrypoints getter
  • Reduce asset wrapper overhead
Fixed 6
  • Align wasm loading types
  • Align max size grouping with webpack in split-chunks
  • Fallback to automock for missing manual mocks in rstest
  • Preserve undeclared css module idents
  • Stabilize consume shared runtime output in module federation
  • Default context_dependencies snapshot strategy to timestamp in cache

From rspack

What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.1.0-beta.0...v2.1.0-rc.0

View originalPermalink
How v2.1.0-rc.0 went

v2.1.0-beta.0

Added 8
  • Support React Compiler in builtin:swc-loader
  • Expose module error JS API
  • Log persistent cache read and write timings
  • Expose getProvidedExports() to JS API
  • Support drop inactive branch dependencies for member expr
  • Introduce experimental.runtimeMode
  • Support branch guarded export presence for in on ESM imports
  • Add maxAge and maxGenerations for persistent cache cleanup
Changed 2
  • Enable side-effect-free function analysis by default in production builds
  • Bump swc to support react compiler
Fixed 9
  • Preserve inline source content for transform sourcemaps
  • Remove webpackSource and webpackDefer magic comments
  • Apply global overrideStrict for ContextModule
  • Filter ignored-subtree events that emit a spurious folder change
  • Use ChunkWithSizeInfo delimiter in maxInitialSize chunk naming fallback path
  • Wait for in-flight build before closing compiler

From rspack

Highlights 💡
Support React Compiler in builtin:swc-loader

React projects can now use React Compiler directly through Rspack's built-in SWC loader. See the React Compiler guide for details.

export default {
  module: {
    rules: [
      {
        test: /\.[cm]?[jt]sx?$/,
        loader: 'builtin:swc-loader',
        options: {
          jsc: {
            transform: {
              reactCompiler: true,
            },
          },
        },
      },
    ],
  },
};
Side-effect-free function analysis by default

Rspack's side-effect-free function analysis is now enabled by default in production builds. It can detect pure function calls through the #__NO_SIDE_EFFECTS__ notation and pureFunctions configuration, including exported functions across module boundaries. When the returned value is unused, Rspack can remove the call more reliably and improve tree shaking results without extra configuration. See experiments.pureFunctions for details.

// lib.js
/*@__NO_SIDE_EFFECTS__*/ 
export function call() {
  console.log('hi')
}

// barrel.js
import { call } from './lib'

const value = call()

// if value is unused, call can be removed
export { value }
What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
Refactor 🔨
Document 📖
Other Changes
New Contributors

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.0.8...v2.1.0-beta.0

View originalPermalink
How v2.1.0-beta.0 went

v1.7.12

Fixed 2
  • Align timing logger with webpack phase boundaries
  • Correct mf manifest expose assets

From rspack

What's Changed
Bug Fixes 🐞
Document Updates 📖
Other Changes

Full Changelog: https://github.com/web-infra-dev/rspack/compare/v1.7.11...v1.7.12

View originalPermalink
How v1.7.12 went
View all

Discussion

If you publish rspack, you can claim this product by proving you administer its repository.