NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #825 most downloaded on npm
Packs ECMAScript/CommonJs/AMD modules for the browser. Allows you to split your codebase into multiple bundles, which can be loaded on demand. Supports loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.
Last release 16 days ago
18 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
889 releases · first in 2012
json with constructor property now caches correctly
constructor property now caches correctlylength property now works correctlyfix a crash when using colors in stats
One column per quarter.
add __webpack_base_uri__ to change base URI at runtime
__webpack_base_uri__ to change base URI at runtimestats.errorDetails: "auto" to show error details automatically when there are only 1 or 2 errorsstats.errorDetails to "auto" when using toStringDid you mean ...? and similar hints are shown in greenfix caching issue with asset modules causing undefined files
undefined filesfix Caching failed for pack: RangeError [ERR_OUT_OF_RANGE] warning when serializing the cache
Caching failed for pack: RangeError [ERR_OUT_OF_RANGE] warning when serializing the cacheadd experiments.lazyCompilation.imports to disable lazy compilation of import()s
experiments.lazyCompilation.imports to disable lazy compilation of import()sexperiments.lazyCompilation.test to allow custom selection of modules that should be lazy compiledprofile: true resp. --profile webpack will now print a summary of expensive modules or loadersexperiments.lazyCompilation.client now works as intended__webpack_require__ is not definedEntryObject type in typingspkg-dir dependencyallow to set chunk name for exposes for ModuleFederationPlugin
exposes for ModuleFederationPluginoptions for ProgressPlugin optional in typingsrefactor hashing to move the responsibility of hashing module exports info and referenced modules from Dependencies to the Module
React.createElement)add experimental lazy compilation via experiments.lazyCompilation: true for web and node targets
experiments.lazyCompilation: true for web and node targets
import()s only when they are accessedwebpack-dev-server/webpack serve opening an entrypoint for the first time, sometimes need a manual refresh.module to module.parser.javascript and also allow to set them via module.rulesmodule.parser.javascript.commonjsMagicComments to enable /* webpackIgnore: true */ for require() callswebpack.debug.ProfilingPlugin on Mac when the computer was suspended before.include plugin names in deprecation message for "NormalModuleFactory.xxx is no longer a waterfall hook"
__webpack_is_included__("./some-module") which returns true when the module is bundled and false when notlibrary.type: "assign-properties" which merges all exports into a global variableoptimization.innerGraph for new URL()
experiments.outputModule: true with optimization.runtimeChunksplitChunk.reuseExistingChunk doesn't work for entrypoints
add getResolve method to data object when using function externals
getResolve method to data object when using function externalsexternals function may return a promise nowdefine("local-module", expr) generating invalid syntaxchunkModulesSpace to schemarebuildModule apiadd experimental ESM tracking for build dependencies
watcher.getContextTimeInfoEntries()memfs and real fsAutomaticPrefetchPluginadd resolve.preferAbsolute flag for compatibility with webpack 4
resolve.preferAbsolute flag for compatibility with webpack 4exports and imports fieldnameForCondition() as fallback for module namesupgrade @webassembly/* and terser-webpack-plugin dependencies
@webassembly/* and terser-webpack-plugin dependenciesfix problem with typings in strict mode
fix a crash in ConcatenatedModule when deserializing
var libraryentry.xxx.layer: "name-of-layer" allows to set the layer for an entrypoint
experiments.layers
entry.xxx.layer: "name-of-layer" allows to set the layer for an entrypointmodule.rules[].issuerLayer: RuleCondition allows to filter/match by layer of issuermodule.rules[].layer: "name-of-layer" allows to set the layer of an modulesplitChunks.cacheGroups.xxx.layer allows to select modules by layerexternals.byLayer["name-of-layer"] allows to specify externals by layerexternals.byLayer: (layer) => ... allows to specify externals by layerexternals function has an additional argument property contextInfo which contains info about the issuer (e. g. the layer)module.parser and module.generator options to allow to specify parser/generator options globally per module typechunkId variable available in script tag hook (like it was with webpack 4)stats.nestedModulesSpace to schema to allow to specify this optionnew.target with constantssplitChunk minSize is not handled correctlysplitChunk cacheGroups is not handled correctlyignore cloned ExportInfo during hashing
object types in typingsupdate typings to include undefined/null types (for strict type)
validateSchema functionundefined values for rule conditions like empty stringserrors in initial cache no longer cause build dependencies to be ignored
add a few missing node.js libraries as externals in target: "node"
target: "node"avoid duplicating chunk info in chunk loading global
processAssets with additionalAssets\ in module info header commentMultiple fixes regarding the side effects optimization ("sideEffects": false) when reexports and concatenated modules are combined
"sideEffects": false) when reexports and concatenated modules are combinedoutput.pathinfo: true (default in development) adds less verbose information (and is faster)output.pathinfo: "verbose" adds more verbose informationoutput.pathinfo: true is cachedimprove side effects analysis to report imported and reexported symbols as side-effect-free
... has no hash info for runtime ...add the ability to process assets generated in later stages during processAssets
PROCESS_ASSETS_STAGE_OPTIMIZE_INLINECLI supports installing webpack-cli via pnpm
pnpmif(...) etc.emit warnings/errors for exports in commonjs modules for which we know that they don't exist
fix crash when __esModule is defined with defineProperty without value
fix ASI issues that occur between concatenated modules
[id] and etc. in SourceMap sources__esModule flag consistent exposedfix renaming in super class expression in nested scopes
runtime-dependent concatenated modules can generate code for runtime-dependent execution order of concatenated modules
fix incorrect concatenation of modules when multiple runtimes are involved
__webpack_require__(null) problemstring[] types instead of [string, ...string[]] for arrays that must not be empty
generate runtime conditional code when modules are forcefully merged from multiple runtimes
Cannot read property 'call' of undefined error in webpack runtime, because modules are used that are not in the graph in one runtimeoptimization.sideEffects: "flag" as option for thisadd watchOptions.followSymlinks option to schema
watchOptions.followSymlinks option to schemaadd sourceFilename and javascriptModule to asset info for plugins
sourceFilename and javascriptModule to asset info for pluginsthis externals with module concatenationomit unused modules from chunks when modules are only unused in some runtimes
Self-reference dependency has unused export name errorrevert: omit unused modules from chunk when modules are only unused in some runtimes
fix order of chunk hashing to allow to uses hashes in WebWorkers
Self-reference dependency has unused export name errorCompilation.deleteAsset updates chunk to file mappingsfix incorrect deprecation message for ModuleTemplate.hooks.hash
webpack property from CompilercleverMerge, EntryOptionPlugin, DynamicEntryPluginrequire("..").xxx in try-catch produces a warning instead of an error nowAnnouncement and changelog
fix evaluation order of concatenated modules
fix crash in getNumberOfMatchingSizeTypes
getNumberOfMatchingSizeTypesSideEffectsFlagPluginruntimeChunk and Module Federation sharedoptimization.sideEffects will detect simple cases of modules without side effects from the source code now
optimization.sideEffects will detect simple cases of modules without side effects from the source code now
if, while, for, switch, export, import, function calls with pure flagdelete x.y.z now also works in concatenated modules
delete x.y.z now also works in concatenated modules# are now supportedremove error when watch option is used without callback and show a deprecation message instead.
optimization.splitChunks.defaultSizeTypes to specify size types considered for sizes when only a number is specified
watch option is used without callback and show a deprecation message instead.This partially reverts a breaking change: Instead of changing the generated code from ES5 to ES6, this now changes it from ES5 to an automatic version…
target: "browserslist" as default when a browserslist config has been found, otherwise fallback to target: "web" as usual
target: "browserslist" and more advanced optionsCompiler.watchingparser.worker for javascript files to allow to modify which syntax is special for WebWorker supportoutput.chunkFilename to be a function via schemawatchOptions.ignored via schemaresolve.preferRelative option, which allows to resolve module requests also as relative requestssplitChunks name to move modules to an parent chunknew URL("relative/file.png", import.meta.url) to resolve relativedelete x.y.z doesn't work with optimization.concatenateModules: true yet.
delete x.y.z doesn't work with optimization.concatenateModules: true yet.mini-css-extract-plugin is not fully compatible and there a few problems.html-webpack-plugin doesn't understand the new default automatic publicPath yet. Use output.publicPath: "" instead.~target doesn't support individual browser versions yet. Use the general targets for now: target: ["web", "es2020"]webpack-cli shows too verbose output for schema validation problems.new URL with string not starting with ./ or ../ works incorrectlydeprecate stats.warningsFilter in favor of ignoreWarnings
stats.warningsFilter in favor of ignoreWarnings
hasWarnings()update all dependencies to stable versions only
output.publicPath is now "auto" by default when supported by targetoutput.publicPath: "auto" to determine publicPath automaticallyadd a breaking change hint when modules can't be resolve because requests are expected to be fully specified
externalsimports field in package.jsonresolve.fallback option and recommend that for polyfillingthis when in an arrow IIFEThere will be a Release Candidate soon
new URL("...", import.meta.url) is treated as dependency and creates an asset modulenew Worker(new URL("...", import.meta.url)) creates a WebWorker (same for new SharedWorker)
type: "module" doesn't work yetnavigator.serviceWorker.register(new URL("...", import.meta.url)) creates a ServiceWorkertarget
target option allows versions, e. g. target: "node10.13" or target: "es2020"target allows an array of targets, e. g. target: ["web", "es2020"]type: "asset")output.wasmLoading (and output.workerWasmLoading) to specify the wasm loading method (similar to output.chunkLoading)externalsPreset with presets for externals for
targets.mjs and .js with type: "module" in package.json puts ESM in strict mode
__esModule support (will be added once this landed in node.js).cjs and .js with type: "commonjs" in package.json disables ESM support.wasm with type: "module" in package.json also makes extensions required in wasm importsoutput.ecmaVersion is replaced with output.environment which lists features used by webpackhash by default in statsentrypoints in stats by default when unnecessaryentrypoints in stats by defaultObject(...) wrappingcache.managedPaths/immutablePaths -> snapshot.managedPaths/immutablePaths
cache.managedPaths/immutablePaths -> snapshot.managedPaths/immutablePathsoutput.hotUpdateFunction -> output.hotUpdateGlobaloutput.jsonpFunction -> output.chunkLoadingGlobaloutput.chunkCallbackFunction -> output.chunkLoadingGlobalnew RegExp() can be evaluated now, e. g. when used in require.contextsnapshot.module: Snapshots for building of modulessnapshot.resolve: Snapshots for resolving of requestssnapshot.buildDependencies: Snapshots for build dependencies when using the persistent cachesnapshot.resolveBuildDependencies: Snapshots for resolving of build dependencies when using the persistent cacheoutput.chunkLoading: The method of loading chunks (methods included by default are 'jsonp' (web), 'import-scripts' (WebWorker), 'require' (sync node.js), 'async-node' (async node.js), but others might be added by plugins).output.chunkFormat: The format of chunks (formats included by default are 'array-push' (web/WebWorker), 'commonjs' (node.js), but others might be added by plugins).target optionoutput.enabledChunkLoadingTypes: List of chunk loading types enabled. Will be automatically filled by webpack. Only needed when using a function as entry option and returning chunkLoading option from there.entry.*.chunkLoading: Like output.chunkLoading but only for this entry.output.library and output.chunkLoading now also allow any string in schema, to support adding custom types via plugins.output.globalObject defaults to self instead of window of web-like targetsexport default function*() {}module.noParsenew.targetrequire("module").builtinModules for getting node.js built-in modulesexpose missing plugins for applying targets
static analysis for CommonJS now supports reexports via
module.exports = require("...")module.exports.a.b.c = require("...").a.b.coptimization.realContentHash option
true in production mode[contenthash] after asset processing, e. g. for minimizing etc.output.charset option
truecharset attribute on injected scriptsrequire("webpack-sources") as require("webpack").sources
TypeError: Cannot mix BigInt and other types, use explicit conversions in the SplitChunksPlugin in rare edge casesadd error message when there are conflicting star exports
opimization.providedExportsoutput.pathinfooptimization.splitChunksscript externals where the url contains @Compilation.deleteAsset to correctly delete an assets and non-shared related assets
Compilation.deleteAsset to correctly delete an assets and non-shared related assetsa?.b in parsing and evaluation
import.meta.webpackHot?.accept("./dep")import() of async externals now works correctlyexclude deprecated --module-rules-options from Cli arguments
stats.relatedAssets option to show assets that are related to other assets (like SourceMap, compressed version, etc.)assetInfo from emitAsset will now merge when nested objects or arrays are usedexperiments.importAsync and enable it by defaultexperiments.importAwait[query] is now a valid placeholder when for paths based on a filename like assetsoutput.assetModuleFilename includes [query] now
remove.modules is usedscript external with Module Federation)shareScope is ignored in ModuleFederationPlugin and SharePlugin--module-rules-options from Cli argumentsusing compilation.cache directly is now deprecated
webpack now optimizes exports and concatenates modules per runtime (often equal entrypoint), which will lead to better optimization when using multiple entrypoints. Entrypoints do no longer affect each other when using a runtime per entrypoint.
webpack defaults has been improved to be optimized for http/2 serving (creating more chunks as request limit as been increased).
splitChunks.enforceSizeThreshold resp. splitChunks.cacheGroups[x].enforceSizeThreshold
minRemainingSize, maxInitialRequests and maxAsyncRequests are ignorecompilation/compiler.getCache API for easier to use caching
getLazyHashedEtag to plugins"..." in more configuration options to access the defaults:
cache.managed/immutablePaths, module.defaultRules, optimization.minimizerexperiments.mjs to mirror node.js behavior
type: "module"*.cjs and *.mjsdata:text/javascript and data:application/javascriptRule.descriptionData to allow matching data from the package.json?? expressionsentry[x].runtime option to set runtimeChunk set entryoptimization.usedExports now analyses used exports separately per runtime to allow independent optimization
"global" option to optimization.usedExports analyse used exports globally instead (faster)optimization.concatenateModules now optimizes per runtime when analysed by optimization.usedExportssplitChunks.usedExports resp. splitChunks.cacheGroups[x].usedExports to compare modules based on used exports or ignore them while comparing
false is usually better for long term caching and a smaller total sizetrue is usually better for load performance of individual pages.optimization.mangleExports: "size" to optimize export names for minimal sizeruntime or dependOn incorrectly in entry--progress and --progress --profile outputsplitChunks.minSize defaults to 20k in productionsplitChunks.enforceSizeThreshold defaults to 50k in productioncompilation.cache directly is now deprecatedoptimization.noEmitOnErrors in favor of optimization.emitOnErrors
byDependency in the correct order as specifiedcompiler.close multiple times will still call all callbacks correctlyCompiler.hooks.invalid will now also be triggered when manually invalidating the watchingexternalsType via configurationwebpack-cli as optional peer dependency to allow using it with Yarn 2throw error when trying to emit assets that only differ in casing
watchFileSystem to MultiCompilerHotModuleReplacementPlugin multiStep modeexport * as X from "..." is now supported
export * as X from "..." is now supportedfile: URLs#fragmentimport.meta
import.meta.webpackHot is the HMR API for ESMimport.meta.webpack is the webpack major versionimport.meta.url is the file: url of the current file>=1 <4 || >5 <=7 || 3.4.X || 3.5.0-beta)uniqueName for better cachingversion or requiredVersion as array (only strings are supported)Module.source() to support more webpack 4 pluginsYour coding agent can read these notes before it upgrades. Set up the MCP server →