@rspack/core), and you can extend the generated configuration directly.
How it works
Create one of these files at project root:extension.config.jsextension.config.mjsextension.config.cjs
config key to patch the generated bundler configuration.
config capabilities
Option 1: function hook (recommended)
Option 2: object merge
config can also be an object. Extension.js merges it into the base configuration.
Rspack-first, webpack-compatible
Extension.js is Rspack-native, but you can still use much of the webpack ecosystem.- The config type extends
@rspack/coreConfiguration. - Many webpack loaders/plugins work through compatibility layers.
- Some webpack internals/plugins are not 1:1 compatible with Rspack.
When to use this
- Add custom loaders/rules for project-specific file types.
- Add plugins for compile-time transforms and diagnostics.
- Override resolve aliases and module behavior not exposed by first-class Extension.js options.
Best practices
- Prefer first-class options first: Use
browser/commandsconfiguration keys before low-level bundler overrides. - Patch minimally: Change only the pieces you need, then return the configuration.
- Keep plugins Rspack-aware: Prefer Rspack-native plugins when available.
- Verify on all targets: Test
dev,start,preview, andbuildfor your browser matrix after configuration changes.
Next steps
- Learn more about extension config (
extension.config.js). - Learn more about Multi-platform builds.

