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
improve constant folding to allow to skip more branches for && || and ??
&& || and ??output.hashFunctioneval is used in a moduleoutput.hashFunction: "xxhash64" for a super fast wasm based hash functionexperiments.cacheUnaffected which caches computations for modules that are unchanged and reference only unchanged modulesadd node.__dirname/__filename: "warn-mock" which warns on usage (will be enabled in webpack 6 by default)
node.__dirname/__filename: "warn-mock" which warns on usage (will be enabled in webpack 6 by default)stream/web to Node.js externalsexperiments.futureDefaults to enable defaults for webpack 6One column per quarter.
split fresh created persistent cache files by time to avoid creating very large files
experiments.executeModule is enabled by default and the option is removed
experiments.executeModule is enabled by default and the option is removed
this.importModule__WEBPACK_EXTERNAL_MODULE_null__, which leads to merged externals.webpack[...] extension is not part of matching and module namefix crash in FileSystemInfo when errors occur
[contenthash] is undefined when using new Workerlibrary: "module" propages top-level-await correctly
library: "module" propages top-level-await correctlycorrectly keep chunk loading state when the chunk loading logic is HMR updated
yarn linking of dependencies.Compilation.addModuleChain and Compilation.addModuleTreehashbangs (#! ...) are now handled by webpack
#! ...) are now handled by webpack
add experiments.buildHttp to build http(s):// imports instead of keeping them external
experiments.buildHttp to build http(s):// imports instead of keeping them external
webpack.lock file with integrity and webpack.lock.data with cached content that should be committedexperiments.buildHttp.upgrade: false)Cache-Control: no-cache).webpack.lock.data persisting can be disabled with experiments.buildHttp.cacheLocation: false.
That will will introduce a availability risk.
(webpack cache will be used to cache network responses)splitChunks.maxSize introduces in the last releasebail is setupgrade webpack-sources for fixes regarding source maps
upgrade webpack-sources for a bunch of bugfixes regarding source maps and missing chars in output
avoid unnecessary "use strict"s in module mode
"use strict"s in module modestatus handlers in HMR api can now return Promises to delay the HMR process
stats.reasonsSpace and stats.groupReasonsByOrigintemporary revert import assertions because parser changes break the word assert in other places
assert in other placesimport(/* webpackPrefetch: true */ ...) no longer breaks library outputadd support to import assertions
.cjs output filesadd support for output.module + optimization.runtimeChunk
output.module + optimization.runtimeChunksupport runtime: false in entry description to disable runtime chunk
runtime: false in entry description to disable runtime chunkruntime option in ModuleFederationPlugin and ContainerPlugin"module" externals when concatenatedfix crashes when rebuilding with jsonData or dataUrl of undefined
jsonData or dataUrl of undefinedadd cache compression via cache.compression
cache.compressionnode-commonjs to schema for externalsTypesystem externalsadd missing types about experimental esm support to schema
Persist cache faster when large changes are detected
cache.idleTimeoutAfterLargeChanges to control thatexperiments.outputModule: true)
output.library.type: "module": very basic support, no live bindings, unnecessary runtime codeoutput.chunkLoading: "import"output.chunkFormat: "module"externalsType: "module" generates now import * as X from "..." (in a module) or import("...") (in a script)import { createRequire } from "module" in a modulenew Worker etc. sets `type: "module"accept node: prefixed requests as node.js externals
node: prefixed requests as node.js externalsinstanceof Promise in favor of p && typeof p.then === "function" to allow mixing different Promise implementionsBuffer in this.emitFile typings (loader context)reset cli argument descriptionreduce memory usage and fix memory leaks
allow lazy compilation for import() context (import with expression)
import() context (import with expression)cache.allowCollectingMemoryError.captureStackTrace from webpack errorsfix missing increment in sorting optimization from last release
new URL("data:...", import.meta.url) is now supported
new URL("data:...", import.meta.url) is now supportedmodule.rules[].scheme as condition to match the request scheme (like data, http, etc.)When using multiple configurations in watch mode and calling Watching.invalidate, dependencies and parallelism of the config array is now respected co
Watching.invalidate, dependencies and parallelism of the config array is now respected correctlystats after the next compilation has startedWatching.suspendRuleCondition.not and allow passing a condition directly instead of only an arrayfix inclusion of too many chunk in the filename function when using dependOn
output.trustedTypesdependOnnull in fs callbackscorrectly handle errors thrown during parser/generator creation
output.clean is against this assumptionadd cache.profile (type: "filesystem" only) flag for more info about (de)serialization timings
cache.profile (type: "filesystem" only) flag for more info about (de)serialization timingsadd support for class fields (stage 4)
fix an __webpack_exports__ is not defined error with some library types
__webpack_exports__ is not defined error with some library typesfix handling of build dependencies with # in path
# in pathWhen reading a file into a Buffer and picking smaller slices of the Buffer the small slices still keep a reference to the large original Buffer. The leads to increased memory usage. A fix would be to clone the slice into a smaller Buffer when wasting too much memory, but this has a performance cost. There is now a new option
cache.allowCollectingMemorywhich controls that. For one-off builds you probably wantallowCollectingMemory: falseand for watch builds you probably wantallowCollectingMemory: true. It defaults to false in production mode and true in development mode.
fix deprecation message from LimitChunkCountPlugin
resolve.extensions and handle them in this orderpnpapi as builtin external when using target: "node"target: "node"store: 'idle' from schema descriptionhandle falsy entry options correctly
fix passing publicPath to this.importModule
this.importModuleadds support for specifying a publicPath per entrypoint
publicPath per entrypoint
entry.xxx.publicPath optionexecuteModuleexport * and reexportsadd support for a pseudo extensions .webpack[type] (e. g. .webpack[javascript/auto]) to specify the default module type when no other module type is s
.webpack[type] (e. g. .webpack[javascript/auto]) to specify the default module type when no other module type is specified
!=! inline syntaxexperiments.executeModule to allow build-time execution of modules of the module graph
this.importModule(request, options, [callback]): Promise to the loader contextcompilation.executeModule(request, options, callback) for pluginsrevert disposing of CodeGenerationResults since some plugins rely on the fact that they are still accessible after the compilation
invalid hooks is no longer called twice for a compiler in a MultiCompiler
add a few more options for infrastructure logging:
infrastructureLogging.colors: Enables/Disables colorful output.infrastructureLogging.appendOnly: Only appends lines to the output. Avoids updating existing output e. g. for status messages.infrastructureLogging.stream: Stream used for logging output. Defaults to process.stderr.infrastructureLogging.console: Custom console used for logging.exports field is usedopt-in via cache.maxGenerations when cache.type: "memory"
cache.maxGenerations when cache.type: "memory"cache.type: "filesystem" and mode: "development"cache.maxMemoryGenerations when cache.type: "filesystem"cache.maxAgecache.maxMemoryGenerations: 0GC = Garbage Collection
fix some edge cases for splitChunks.maxSize which cause too large chunks to be created
splitChunks.maxSize which cause too large chunks to be createdstats.groupModulesByType to the schemaModule/Const/NullDependency on the APIadd module.generator.asset.publicPath to configure a different publicPath for assets
module.generator.asset.publicPath to configure a different publicPath for assetsfix error reporting when errors happen in beforeLoaders hook
beforeLoaders hookexperiments.lazyCompilation is used (regression)import()new URL(new URL generated by worker handingallow invalidation after first watch run in MultiCompilers
add utils: { contextify(context, absolutePath), absolutify(context, request) } to loader context
utils: { contextify(context, absolutePath), absolutify(context, request) } to loader contextimports field handlingfix race condition in MultiCompiler queueing
fix problem with new line after comment
avoid using strict mode runtime for assign libraries to allow assigning not existing variables
Set.addAll polyfill../ when generation the undo path for non-web targetshandle cache version automatically for DefinePlugin
DefinePlugin.runtimeValue (file/context/missing/buildDependencies, version)fix startup logic when non-js chunks are in the entrypoint
type: "module" for Workers when generating classic scriptsdeprecate output.strictModuleExceptionHandling (this is the CommonJS way of handling errors, and the name is weird)
__webpack_runtime_id__ to access the current runtime idoutput.strictModuleErrorHandling to opt into stricter evaluation error handling semantics according to ESM spec
new URL() this will result in an url to a empty file ("data:,")module.generator.asset.emit option to disable creating assets from asset modules (e. g. for SSR)splitChunks.maxSize where negative indicies are accessedsplitChunks.maxSize in some cases when multiple size types are involvedoutput.strictModuleExceptionHandling (this is the CommonJS way of handling errors, and the name is weird)fix overridding built-in externals via externals
externals"..." in array configuration options when it's not at the startfix contenthash when a file is emitted twice with different filenames but that same contenthash
fix invalid syntax generated for destructuring with default values
modifiedFiles and removedFiles were undefinedfix typo in deprecation message
fix name conflict when using destructing with default arguments in concatenated modules
export * that point to the same exportexperiments.lazyCompilation: true. It now has an effect.Watching typeadd parserOptions.url: "relative" option
parserOptions.url: "relative" option
new URL (e. g. for SSG/SSR)generate shorter output code for JSON data by using a '...' string instead of "..." (only affects output side when not minimized)
'...' string instead of "..." (only affects output side when not minimized)dependencies configuration option now works for watch builds too
dependencies has changeddependencies have finishedparallelism config option on the array of configurations to limit the compilers that are running in parallelDid you mean ...) to resolve errors when
enforceExtension./depend(s)On it, webpack no longer crashes with a weird error"sideEffects": false
this.loadModule (loader) and the loaded module has errorsoutput.iife: falsedefine for local modules and arrow functions are supporteddefine function, which missed declarations beforeexport { x } is before pure declaration const x = /*#__PURE__*/ f()output.library: { type: "module" } (experiments.outputModule: true)
export { ... } now, but that can't handle live-bindings yetYour coding agent can read these notes before it upgrades. Set up the MCP server →