v2.2.7
The new optimization.splitChunks.dedupDepth option lets Rspack spend more build time finding shared code and reducing duplication, giving you more control over the balance between bundle size and build time. In one application with many routes, this option reduced total output size by 9.9%.
It defaults to 1 in production and 0 in development. #15497
This release reduces repeated work and allocations during chunk graph construction and CSS Modules class name generation. JavaScript loaders also avoid copying their input content on each invocation, further reducing processing overhead.
- Optimize chunk graph construction: #15278, #15805.
- Reuse metadata and template values when generating CSS Modules class names: #15783, #15804.
- Avoid cloning JavaScript loader content: #15817.
- feat(split-chunks): add configurable dedupDepth by @JSerFeng in https://github.com/web-infra-dev/rspack/pull/15497
- feat: file system info path classification by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/15752
- feat: support nested async dependency blocks by @intellild in https://github.com/web-infra-dev/rspack/pull/15741
- feat: cache context modules with filesystem snapshots by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/15790
- perf: reduce build chunk graph overhead by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/15278
- perf(css): avoid rebuilding local ident metadata per class name by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/15783
- perf(resolver): memoize the interned package.json path by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/15797
- perf(css): cache invariant local ident rendering values by @intellild in https://github.com/web-infra-dev/rspack/pull/15804
- perf: store runtime keys as SmolStr by @intellild in https://github.com/web-infra-dev/rspack/pull/15807
- perf: reduce build chunk graph code splitter overhead by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/15805
- perf(css-extract): avoid per-loader configuration callbacks by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15812
- perf(loader): avoid cloning JS loader content by @SyMind in https://github.com/web-infra-dev/rspack/pull/15817
- perf(core): reuse module identifier for identical requests by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15820
- perf(loader): statically import worker_threads by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15825
- perf(core): reuse resource string for identical user requests by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15827
- fix: keep shadowing exports bindings in nested runtime deconfliction by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/15742
- fix(binding): release loader TSFNs on compiler close by @SyMind in https://github.com/web-infra-dev/rspack/pull/15735
- fix: render CommonJS externals directly in modern-module output by @JSerFeng in https://github.com/web-infra-dev/rspack/pull/15238
- fix: skip entry modules without JavaScript in the chunk startup by @cezaraugusto in https://github.com/web-infra-dev/rspack/pull/15767
- fix(html): keep the doctype when a comment is above it by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/15778
- fix(types): allow RslibPlugin without options by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15801
- fix: ignore fragment-only CSS URL dependencies by @intellild in https://github.com/web-infra-dev/rspack/pull/15800
- fix(bench): exclude compiler teardown from runtime requirements by @intellild in https://github.com/web-infra-dev/rspack/pull/15813
- fix(types): declare code generation Sources.get and migrate configs by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15814
- fix(types): allow RegExp resolve restrictions and migrate configs by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15819
- fix(cli): initialize profiling once for multiple configs by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15829
- docs: remove redundant CLAUDE.md setup tip by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15815
- docs: clarify default parallel loader worker count by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15824
- test: migrate inner-graph and HTTP test helpers to ESM by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15748
- test: migrate common test loaders to ESM by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15751
- ci: print ecosystem benchmark repository commit by @SyMind in https://github.com/web-infra-dev/rspack/pull/15746
- test: migrate test loaders, helpers and plugins to ESM by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15753
- test: migrate stateful and diagnostic loaders to ESM by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15758
- chore: add CLAUDE.md that imports AGENTS.md by @stormslowly in https://github.com/web-infra-dev/rspack/pull/15760
- test: support TypeScript case configurations by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15761
- chore(deps): upgrade Rstack to 0.7.6 and Rstest to 0.12 by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15762
- test: type-check case configs and migrate simple configs to TypeScript by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15765
- chore(deps): update dependency enhanced-resolve to v5.25.1 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/15771
- test: migrate case configs to TypeScript (batch 1) by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15774
- test: migrate case configs to TypeScript (batch 2) by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15775
- test: migrate case configs to TypeScript (batch 3) by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15776
- test: migrate case configs to TypeScript (batch 4) by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15777
- chore(deps): update patch npm dependencies by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/15769
- chore(deps): update dependency jsdom to ^30.1.0 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/15772
- test: migrate more case configs to TypeScript by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15787
- chore: remove redundant CLAUDE.md by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15791
- test: migrate 32 configs to TypeScript and normalize spacing by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15789
- chore(deps): upgrade lite-tapable to v1.2.0 by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15794
- test: migrate 77 configs and clean helpers to TypeScript by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15795
- test: migrate 61 configs and four helpers to TypeScript by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15803
- test: migrate more configs to TypeScript by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15806
- test: migrate more configs and helpers to TypeScript by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/15811
Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.2.6...v2.2.7
v16.4.0-canary.39
- [PPF] Scaffold
unstable_ensureStaticsegment config: #98190 - [agent-feedback] Respect CI and telemetry opt-out: #99062
- Fix prefetch loop when a predicted route redirects: #98998
- Fix dev overlay header layout on small screens: #99049
- [PPF] Separate tracking of runtime data accesses for shells and prefetches: #98129
- Harden
next/ogSVG serialization: #99061 - test: clarify dev-only intent of duplicate Sass warning test: #98917
- test: enable upward distDir deployment coverage: #98886
- test: remove redundant deployment skips from mode-guarded suites: #98908
- Turbopack: trace static project files referenced by packages: #98712
- Durable use cache: fix next/image pulling in NEXT_DEPLOYMENT_ID: #98739
- Unify hydration error tree details: #99008
- Turbopack: forward module graph, entrypoint write, and emit spans to the JS trace: #98408
- Fix startTime and shutdown delivery of forwarded Turbopack trace spans: #98426
- Turbopack: loader change invalidation: #95732
- perf: optimize CSS graph cycle removal: #98860
- Use AGENTS.md for managed agent instructions: #99043
- Turbopack: analyze mode tracing imports only: #98825
- Turbopack: compact re-export registration: #98617
- test: Add test for ESM and CJS exports of
next/*APIs: #98882
Huge thanks to @lubieowoce, @aurorascharff, @acdlite, @eps1lon, @jamiboym, @sokra, and @mischnic for helping!
v9.8.0
The headline feature is that R3F is now compatible with React 19.3.0. We don't fully support all of the new APIs, but it will not longer conflict to run the latest and greatest React.
In addition we fixed some long standing bugs:
- React roots are configured synchronously and then gated on the renderer if it need async, for example with WebGPURenderer. This means that you won't get awkward out of sync issues.
- Strict Mode no longer causes problems for our canvas. This was related to the async support added a while ago as well.
Have fun!
- fix: corrected broken links by @dor-rondel in https://github.com/pmndrs/react-three-fiber/pull/3872
- feat: support React 19.3 by @cades in https://github.com/pmndrs/react-three-fiber/pull/3916
- fix(core): don't tear down a root remounted during the unmount grace period by @abernier in https://github.com/pmndrs/react-three-fiber/pull/3869
- feat(core): configure and render roots synchronously by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3925
- @dor-rondel made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3872
- @cades made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3916
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.7.0...v9.8.0
@astrojs/vercel@11.0.11
-
#18044
98c07e1Thanks @astro-factory! - Fixes a rare issue where ISR pages on Vercel could intermittently be served a cached redirect to a nonsense URL (such as/$0/) instead of the page itself. Pages now render correctly, and requests that can't be resolved to a valid path return a404instead of a redirect. -
#18008
a09b328Thanks @yanthomasdev! - Fixes the immutableCache-Controlrule for hashed assets (/_astro/*) being emitted after thefilesystemroute handle in.vercel/output/config.json.
@astrojs/mdx@8.0.2
- #18036
f4444ebThanks @astro-factory! - Fixes an incompatibility where@astrojs/mdxv8 could be installed withastroversions that bundle an older@astrojs/markdown-satterilacking MDX support. Also improves the error message when the processor is too old to suggest updatingastroitself. - Updated dependencies [
3fd16ee,8358d59]:- @astrojs/markdown-satteri@0.4.2
@astrojs/react@7.0.0
-
#17951
e5b0ac4Thanks @hanford! - Migrates the React integration to@vitejs/plugin-reactv6, using Oxc for JSX and Fast Refresh. Removes thebabelintegration option; projects with custom Babel transforms must configure@rolldown/plugin-babelundervite.pluginsinstead.Adds an opt-in
compileroption for the Oxc-based React Compiler. Installoxc-transform-reactand enable it in your Astro config:import react from '@astrojs/react'; export default { integrations: [react({ compiler: true })], };
The compiler memoizes client components and hooks. Server rendering is not compiled. The target defaults to the installed React major version; React 17 and 18 projects also need
react-compiler-runtimeinstalled. Pass an options object to configure the compiler, for examplecompiler: { compilationMode: 'annotation' }. The integration'sincludeandexcludeoptions apply, and dependencies and Astro files are excluded.The integration uses
@vitejs/plugin-reactv6 and Oxc for JSX and Fast Refresh. Thebabelintegration option has been removed in this major release.If you use custom Babel transforms, install
@rolldown/plugin-babeland@babel/core, keeping your existing Babel plugins and presets installed:pnpm add -D @rolldown/plugin-babel @babel/core
Move your Babel plugins and presets from
react({ babel: ... })tobabel()invite.plugins. For example, migrate a project usingbabel-plugin-styled-componentsfrom:import react from '@astrojs/react'; import { defineConfig } from 'astro/config'; export default defineConfig({ integrations: [react({ babel: { plugins: ['babel-plugin-styled-components'] } })], });
To:
import react from '@astrojs/react'; import babel from '@rolldown/plugin-babel'; import { defineConfig } from 'astro/config'; export default defineConfig({ integrations: [react()], vite: { plugins: [ babel({ plugins: ['babel-plugin-styled-components'], }), ], }, });
This also works with
react({ compiler: true }). Babel runs before Oxc transforms TypeScript and JSX. The Babel plugin automatically enables parsing for.jsx,.ts, and.tsxfiles. It does not loadbabel.config.jsor.babelrcfiles; pass the options directly tobabel(). The oldbabelcallback is not supported; use the plugin'soverridesand preset hooks for conditional transforms.Do not enable
babel-plugin-react-compileron the same components as the Oxc compiler.
astro@7.3.4
-
#18063
40896acThanks @adamchal! - Fixes incremental builds repeatedly rendering unchanged pages when modules or compiled CSS reference bundled assets. -
#18053
cf5d72fThanks @Princesseuh! - Improves theastro checkerror shown for TypeScript 7. The command now explains that TypeScript 7 is not currently supported and provides instructions for experimentally type-checking Astro files with TypeScript 7.1 and@astrojs/ts-content-mapper. -
#18086
795a7e4Thanks @ump45nose! - Fix double-escaped ampersands in Markdown imagealtandtitleattributes. The__ASTRO_IMAGE_round-trip now decodes the numeric (&) and named (&) character references the Markdown processors emit, so an&in an alt or title is escaped exactly once in the final HTML instead of twice. -
#18074
0429805Thanks @SurefireStudios! - Fix three error names that did not match their documented reference.MissingLocale,MissingIndexForInternationalizationandNoManifestAvailablereported names ending inErrorin the dev overlay, while their error reference pages are published under the unsuffixed names, so the name shown to users could not be found in the docs. -
#18007
2245837Thanks @L4XB! - Fixes the dev server re-evaluating the whole server module graph on every request. Theastro:head-metadataplugin invalidated its component metadata virtual module from its owntransformhook, so each evaluation of that module scheduled the next one. Adapters that run requests outside Vite's module runner, such as@astrojs/cloudflare, paid for a full re-evaluation of the server graph on every request for the lifetime of the process. -
#18096
43657c4Thanks @matthewp! - Fixes domain-based i18n routing to respectsecurity.allowedDomainswhen selecting a locale from request host headers -
#18043
8a53a8bThanks @astro-factory! - Fixesimage.responsiveStylesemitting invalidobject-positionCSS values for same-axis keyword pairs (top bottom,left right, etc.) -
#18029
c08252dThanks @matthewp! - Runsastro devandastro previewin the foreground when an AI agent is detected on Windows, allowing the agent to manage the process lifetime. Pass--backgroundexplicitly to request an Astro-managed background process. Agent-inferred backgrounding remains enabled on other platforms. -
Updated dependencies [
3fd16ee,8358d59]:- @astrojs/markdown-satteri@0.4.2
@astrojs/ts-content-mapper@0.2.0
- #18050
cea7da5Thanks @Princesseuh! - Adds the initial release of the TypeScript content mapper for Astro files.