# rspack v2.2.0-beta.1 - Product: rspack (https://whatsnew.fyi/product/rspack) - Vendor: rspack - Date: 2026-08-18 - Version: v2.2.0-beta.1 - Original notes: https://github.com/web-infra-dev/rspack/releases/tag/v2.2.0-beta.1 - Permalink: https://whatsnew.fyi/product/rspack/releases/v2.2.0-beta.1 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — Client Component CSS now uses Flight preinit instead of being injected by wrapping exports with generated link elements, preserving client-reference identity - **removed** — Export-wrapper behavior for Client Component stylesheets is removed in favor of preinitialization from the React Flight payload - **changed** — 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 - **changed** — CSS identifier escaping and unescaping now follow the CSS Syntax standard, emitting Unicode identifiers directly instead of with unnecessary backslashes - **added** — CSS Modules coverage expands to local/global modes, generator options, ICSS @value, custom identifiers, and warning order - **added** — Implement generation-based memory cache eviction - **added** — Add idle cache compaction with interruption handling - **changed** — Move dependency collection for CSS modules into css-module-lexer so stylesheets are no longer rescanned with regular expressions after parsing - **changed** — Cache converted module original source in binding for performance - **changed** — Batch splitChunks JavaScript callbacks for performance - **changed** — Avoid parsing concatenated module codegen - **changed** — Preallocate identifier path buffers - **fixed** — Pass HMR error to Preact refresh recovery handler - **fixed** — Limit shutdown compaction to a single pass - **fixed** — Add missing stats fields to types - **fixed** — Strip BOM from module content before concatenation in css-extract - **fixed** — Decouple incremental artifacts from cache - **fixed** — Preserve ESM imports in module output for preserve importMode - **changed** — Move css-module-lexer into workspace ##### 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 `` 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](https://plugins.swc.rs/) to find the plugin version matching your Rspack release, and see [SWC plugin version mismatch](https://rspack.rs/errors/swc-plugin-version) 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. ```css .😍 { 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 🍭 * refactor!(rsc): emit client references directly and preinit CSS by @SyMind in https://github.com/web-infra-dev/rspack/pull/14974 * chore: bump SWC dependencies by @hardfist in https://github.com/web-infra-dev/rspack/pull/15217 ###### New Features 🎉 * feat: implement generation-based memory cache eviction by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/15181 * feat: add idle cache compaction with interruption handling by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/15182 * feat(css): improve unicode handling and support more css modules cases, boost performance by @intellild in https://github.com/web-infra-dev/rspack/pull/14809 ###### Performance 🚀 * perf(binding): cache converted module original source by @SyMind in https://github.com/web-infra-dev/rspack/pull/15174 * perf: batch splitChunks JavaScript callbacks by @JSerFeng in https://github.com/web-infra-dev/rspack/pull/15147 * perf(binding): exclude test loaders from release builds by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15209 * perf(binding): exclude perfetto from release WASI builds by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15221 * perf(binding): align release WASI optimizations by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15227 * perf(binding): optimize React Compiler crates for size by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15230 * perf: avoid parsing concatenated module codegen by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/14852 * perf: preallocate identifier path buffers by @intellild in https://github.com/web-infra-dev/rspack/pull/15220 ###### Bug Fixes 🐞 * fix: pass HMR error to Preact refresh recovery handler by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/1 _[Truncated at 4000 characters — full notes: https://github.com/web-infra-dev/rspack/releases/tag/v2.2.0-beta.1]_