Files
vercel__next.js/packages/react-refresh-utils/ReactRefreshRspackPlugin.ts
Cong-Cong Pan 5712c05c55 fix(Rspack): resolve HMR unresponsiveness or unexpected full reload & update dev snapshot (#83480)
This commit addresses the bugs where Hot Module Replacement (HMR) was
not functioning correctly in Rspack mode. Component edits would often
result in no update or a full page reload instead of a fast,
state-preserving refresh.

This commit implements a new, custom React Refresh plugin and runtime
specifically for Rspack, which correctly orchestrates the HMR lifecycle.
2025-09-16 01:26:36 +00:00

25 lines
686 B
TypeScript

import type { Compiler } from 'webpack'
const PLUGIN_NAME = 'ReactRefreshRspackPlugin'
class ReactRefreshRspackPlugin {
static loader = 'builtin:react-refresh-loader'
apply(compiler: Compiler) {
new compiler.webpack.ProvidePlugin({
$ReactRefreshRuntime$: require.resolve('./internal/RspackReactRefresh'),
}).apply(compiler)
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
compilation.hooks.additionalTreeRuntimeRequirements.tap(
PLUGIN_NAME,
(_, runtimeRequirements) => {
runtimeRequirements.add(compiler.webpack.RuntimeGlobals.moduleCache)
}
)
})
}
}
export default ReactRefreshRspackPlugin