webpack

Frameworks & Libraries

A static module bundler for modern JavaScript applications.

Latest v5.109.2 · by OpenJS FoundationWebsitewebpack/webpack

Release activity

Release activity — 10 releases across 9 days since May 21, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before May 21, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
Monday1 release on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 20262 releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 20261 release on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 20261 release on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
Thursday1 release on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 20261 release on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 20261 release on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 20261 release on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 20261 release on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

10 releases since May 21, 2026, busiest day 2

Changelog

v5.109.2

Changed 1
  • Annotate configuration options and public hooks in the generated types with the @since JSDoc tag
Fixed 5
  • Resolve aliases pointing at a package directory whose name ends with .js
  • Name CSS sources in source maps by their resource path, without the css prefix
  • Delete no longer referenced files from the filesystem cache directory after storing the cache, age them by recorded time so restored caches are cleaned too, and collect every fully expired pack in one store instead of one per build
  • Report universal as the loader context target for the universal target
  • Skip require().prop in dead branches gated by inlined imported constants
Patch Changes
  • Resolve aliases pointing at a package directory whose name ends with .js again. (by @alexander-akait in #21542)

  • Name CSS sources in source maps by their resource path, without the css prefix. (by @bjohansebas in #21536)

  • Delete no longer referenced files from the filesystem cache directory after storing the cache, age them by recorded time so restored caches are cleaned too, and collect every fully expired pack in one store instead of one per build. (by @bjohansebas in #21528)

  • Report "universal" as the loader context target for the universal target. (by @alexander-akait in #21540)

  • Skip require().prop in dead branches gated by inlined imported constants. (by @hai-x in #21517)

  • Annotate configuration options and public hooks in the generated types with the @since JSDoc tag. (by @bjohansebas in #21473)

View originalPermalink
How v5.109.2 went

v5.109.1

Changed 16
  • Name the failing key when DefinePlugin fails to evaluate a typeof value
  • Improve Deno compatibility: guard setNoDelay and force-close connections on lazy-compilation backend dispose, and return a real ArrayBuffer from the Node async/sync wasm loader so WebAssembly.instantiate accepts it
  • Speed up the HTML parser and cut its peak memory: module-scope helpers/state and tokenizer callbacks, plus exact AST column pre-sizing
  • Cook common string-literal escapes on the JS parser fast path and own the tokenizer's cold-path readers
  • Build the CSS parseA* AST on the SoA store instead of node classes, cutting parse memory and time
  • Speed up and cut memory of the experimental CSS and HTML parsers: drop two derivable AST node columns, and scan long string, url, comment, and plaintext token bodies natively
Fixed 4
  • Fix stray semicolon emitted before an imported call following a parenthesized sequence element
  • Make require(esm) module.exports re-export analysis independent of module processing order
  • Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so compiler.close() succeeds on Bun
  • Track CommonJS build dependencies by parsing sources when require.cache children are unavailable (e.g. Bun)
Patch Changes
  • Fix stray semicolon emitted before an imported call following a parenthesized sequence element. (by @alexander-akait in #21533)

  • Make require(esm) module.exports re-export analysis independent of module processing order. (by @alexander-akait in #21521)

  • Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so compiler.close() succeeds on Bun. (by @alexander-akait in #21521)

  • Name the failing key when DefinePlugin fails to evaluate a typeof value. (by @alexander-akait in #21503)

  • Improve Deno compatibility: guard setNoDelay and force-close connections on lazy-compilation backend dispose, and return a real ArrayBuffer from the Node async/sync wasm loader so WebAssembly.instantiate accepts it. (by @alexander-akait in #21524)

  • Speed up the HTML parser and cut its peak memory: module-scope helpers/state and tokenizer callbacks, plus exact AST column pre-sizing. (by @alexander-akait in #21492)

  • Track CommonJS build dependencies by parsing sources when require.cache children are unavailable (e.g. Bun). (by @alexander-akait in #21531)

  • Cook common string-literal escapes on the JS parser fast path and own the tokenizer's cold-path readers. (by @alexander-akait in #21500)

  • Build the CSS parseA* AST on the SoA store instead of node classes, cutting parse memory and time. (by @alexander-akait in #21498)

  • Speed up and cut memory of the experimental CSS and HTML parsers: drop two derivable AST node columns, and scan long string, url, comment, and plaintext token bodies natively. (by @alexander-akait in #21504)

  • Speed up non-modules CSS parsing: skip redundant token re-reads, drop selector-prelude tokens without materializing nodes, allocate rule preludes lazily, and fast-path empty list seals. (by @alexander-akait in #21511)

  • Speed up stats generation and cut its peak memory: reuse cached sort comparators instead of thrashing the comparator caches on every sort, and drop redundant module-graph lookups and allocations in the extractors. (by @alexander-akait in #21506)

  • Speed up CSS parsing: byte-range function-name checks, indexed sibling lookahead. (by @bjohansebas in #21520)

  • Reduce allocations and redundant work across the code-generation, module-concatenation, exports/usage-analysis, hashing, and chunk-splitting hot paths. (by @alexander-akait in #21516)

  • Enable the Node.js compile cache in the webpack CLI entry point. (by @bjohansebas in #21523)

  • Encode the persistent cache with V8's value serializer. (by @avivkeller in #21514)

  • Speed up SplitChunksPlugin: reject non-subset chunk sets with 64-bit signatures, cache unnamed entry keys, and drop per-module closures. (by @avivkeller in #21529)

  • Initialize NormalModule._ast in the constructor so each instance keeps a single hidden-class shape. (by @alexander-akait in #21515)

  • Reduce allocations in the binary serialization hot paths. (by @alexander-akait in #21526)

  • Deduplicate and simplify several lib modules and speed up AggressiveMergingPlugin. (by @alexander-akait in #21525)

  • Rename nested const/let __webpack_require__ and __webpack_exports__ declarations in bundled webpack output. (by @hai-x in #21508)

View originalPermalink
How v5.109.1 went

v5.109.0

Added 18
  • Add output.resourceHints to emit resource hints (preload/prefetch/modulepreload/preconnect), plus module.parser.<type>.urlHints, css.fontPreload and javascript.dynamicImportCssPreload
  • Add built-in build progress via infrastructureLogging.progress, plus estimatedTime, phaseTimings, progress bar width and progressBar auto on ProgressPlugin
  • Concatenate CommonJS modules with statically analyzable exports; opt out via optimization.concatenateModules: { commonjs: false }
  • Wrap weird CommonJS modules into module concatenation instead of bailing out
  • Add output.html.inline (true | script | style) and the webpackInline magic comment to inline chunk content into HTML
  • Add output.html.inject to control where chunk tags are injected
Changed 2
  • Default experiments.typescript to auto, enabling built-in TypeScript support on Node.js >= 22.6 when no TypeScript loader is registered
  • Default experiments.css, experiments.html and experiments.asyncWebAssembly to auto, enabling built-in support unless a loader is registered for those files
Minor Changes
  • Default experiments.typescript to "auto", enabling built-in TypeScript support on Node.js >= 22.6 when no TypeScript loader is registered. (by @alexander-akait in #21477)

  • Default experiments.css, experiments.html and experiments.asyncWebAssembly to "auto", enabling built-in support unless a loader is registered for those files; modules with inline or hook-injected loaders (e.g. html-webpack-plugin templates) keep being parsed as JavaScript. (by @alexander-akait in #21477)

  • Add output.resourceHints to emit resource hints (preload/prefetch/modulepreload/preconnect), on by default for ESM output, plus module.parser.<type>.urlHints, css.fontPreload and javascript.dynamicImportCssPreload. (by @alexander-akait in #21477)

  • Add built-in build progress via infrastructureLogging.progress, plus estimatedTime, phaseTimings, progress bar width and progressBar: "auto" on ProgressPlugin. (by @alexander-akait in #21477)

  • Concatenate CommonJS modules with statically analyzable exports; opt out via optimization.concatenateModules: { commonjs: false }. (by @alexander-akait in #21477)

  • Wrap "weird" CommonJS modules into module concatenation instead of bailing out. (by @alexander-akait in #21477)

  • Add output.html.inline (true | "script" | "style") and the webpackInline magic comment to inline chunk content into HTML. (by @alexander-akait in #21477)

  • Add output.html.inject to control where chunk tags are injected. (by @alexander-akait in #21477)

  • Add output.html.title, output.html.meta and output.html.base options for head generation. (by @alexander-akait in #21477)

  • Support per-icon link attributes (sizes, media, color, type, crossorigin) and arrays in output.html.favicon. (by @alexander-akait in #21487)

  • Add output.html.manifest to generate and link a web app manifest with hashed icons. (by @alexander-akait in #21487)

  • Add output.html.csp to inject a Content-Security-Policy meta with inline-content hashes and an optional nonce. (by @alexander-akait in #21487)

  • Add the output.html injectTags compilation hook to inject tags (script/link/meta/…) with injectTo placement. (by @alexander-akait in #21487)

  • Add the output.html transformTags compilation hook to mutate, remove, or move (between <head> and <body>) a page's existing <script>/<link>/<style>/<meta> tags. (by @alexander-akait in #21487)

  • Extend the HTML pipeline with html link sources (bundled as their own emitted page) and rel="preload"/"prefetch" links bundled as chunks. (by @alexander-akait in #21477)

  • Recognize more asset-bearing HTML sources: the twitter:player:stream meta, legacy SVG references, and Web App Manifest icons/screenshots/shortcuts URLs. (by @alexander-akait in #21477)

  • Add module.parser.html.as to parse HTML as a document or an element fragment. (by @alexander-akait in #21477)

  • Allow disabling a built-in HTML parser source via type: false in sources. (by @alexander-akait in #21477)

  • Export webpack.html.HtmlModulesPlugin with transformHtml/htmlEmitted compilation hooks. (by @alexander-akait in #21477)

  • Resolve @custom-media (including media-type values) and @custom-selector in native CSS. (by @alexander-akait in #21477)

  • Scope view-transition-name/-group/-class names and ::view-transition-*() pseudo references in CSS modules under customIdents. (by @alexander-akait in #21486)

  • Add import.meta.glob support, with a caseSensitive option and consistent hidden/node_modules matching. (by @alexander-akait in #21477)

  • Resolve import.meta.resolve("./asset") to the emitted asset URL via the importMeta.resolve parser option. (by @alexander-akait in #21477)

  • Add import.meta.env defaults: MODE, DEV, PROD, SSR and BASE_URL. (by @alexander-akait in #21477)

  • Add fine-grained import.meta parser options. (by @alexander-akait in #21477)

  • Deprecate the importMetaContext parser option in favor of importMeta.webpackContext. (by @alexander-akait in #21477)

  • Emit analyzable new URL(…, import.meta.url), worker/worklet URL and import() references with literal specifiers for ESM module output. (by @alexander-akait in #21477)

  • Compile async modules to generators for targets without async/await. (by @alexander-akait in #21477)

  • Evaluate and validate the second argument of dynamic import(specifier, options). (by @alexander-akait in #21477)

  • Add module.parser.javascript.worklet to bundle Worklet addModule() entries. (by @alexander-akait in #21477)

  • Add ?raw, ?url, ?inline and ?no-inline asset query suffixes under experiments.futureDefaults. (by @alexander-akait in #21477)

  • Add an interop ("default" | "esModule") hint for object externals to control default-export interop. (by @alexander-akait in #21477)

  • Add an amd-async externals type that loads AMD externals without an AMD library wrapper. (by @alexander-akait in #21477)

  • Support cache.compression: "zstd" for the filesystem cache. (by @alexander-akait in #21477)

  • Warn on strict-mode-only syntax and semantic hazards in ES module output, configurable via the strictModeViolations parser option. (by @alexander-akait in #21477)

  • Support parsers without location APIs: locations derive from node offsets and AST nodes no longer carry loc. (by @alexander-akait in #21477)

  • Attach the original DOM event to ChunkLoadError and ScriptExternalLoadError as error.event. (by @alexander-akait in #21477)

  • Add output.wasmStreamingFallback for wasm fallback on a wrong MIME type. (by @alexander-akait in #21477)

  • Show why a module was marked as not cacheable in stats output. (by @alexander-akait in #21477)

  • Expose the active MultiWatching on MultiCompiler.watching. (by @alexander-akait in #21477)

  • Resolve git merge conflicts when parsing the build-http lockfile. (by @alexander-akait in #21477)

Patch Changes
  • Fix broken HMR with output.module and non-import chunk loading by emitting a plain-JSON hot-update manifest. (by @alexander-akait in #21477)

  • Fix unused CSS module exports leaking into the JS wrapper. (by @alexander-akait in #21477)

  • Fix deferred import evaluation: re-throw cached errors, guard forcing a still-evaluating module, keep re-exported deferred namespaces identical, and evaluate initial-chunk deferred context imports lazily. (by @alexander-akait in #21477)

  • Keep ESM live bindings for a module library's entry exports, including when the runtime is emitted as a separate chunk. (by @alexander-akait in #21477)

  • Fix SplitChunks merging undersized modules into the wrong result group. (by @alexander-akait in #21477)

  • Fix named id assignment reusing an already-used numbered suffix, which could produce duplicate module/chunk ids. (by @alexander-akait in #21477)

  • Fix inlined non-binary asset modules with encoding: false emitting "undefined" instead of their content. (by @alexander-akait in #21477)

  • Decode non-base64 data URIs as UTF-8 so multi-byte characters are preserved. (by @alexander-akait in #21477)

  • Keep required JSON data intact when a prototype method (e.g. arr.includes()) is called on it. (by @alexander-akait in #21477)

  • Recognize modern RegExp flags (d, s, u, v) when statically evaluating new RegExp(...). (by @alexander-akait in #21477)

  • Merge object-form and dotted DefinePlugin definitions so import.meta.env/process.env are consistent across direct, whole-object and destructured access. (by @alexander-akait in #21477)

  • Emit an error when an object external has no entry for the used externals type. (by @alexander-akait in #21477)

  • Fix a persistent cache restore crash when a content section starts exactly on a content-buffer boundary. (by @alexander-akait in #21477)

  • Restore missing internalSerializables entries (webpack/lib/Module and cold filesystem cache). (by @alexander-akait in #21477)

  • Fix watch rebuild crash when context symlink targets lack timestampHash. (by @alexander-akait in #21477)

  • Fix lazy compilation backend leaking idle module entries and hanging on exit. (by @alexander-akait in #21477)

  • Stop logging benign ECONNRESET client errors from the lazy compilation server. (by @alexander-akait in #21477)

  • Accept compilations from another webpack copy in getCompilationHooks again. (by @alexander-akait in #21477)

  • Fix output.html injection edge cases: escaping, head detection, duplicate meta tags, resource-hint/entry-tag retention with inject: false, and stylesheet placement. (by @alexander-akait in #21477)

  • Ignore a <base> inside an inert <template> when resolving HTML URLs. (by @alexander-akait in #21477)

  • Bust an HTML page's [contenthash] when its inlined chunk content changes. (by @alexander-akait in #21477)

  • Fix a dangling stylesheet <link> for a JS-only chunk in an HTML entry. (by @alexander-akait in #21477)

  • Fix a malformed HTML magic comment leaking a pending webpackInline directive onto the next element. (by @alexander-akait in #21477)

  • Fix off-by-one dropping the last character of an unterminated url(...) at end-of-input. (by @alexander-akait in #21477)

  • Consume the trailing whitespace of a CSS hex escape when unescaping identifiers. (by @alexander-akait in #21477)

  • Fix [fullhash] in output.webassemblyModuleFilename by dropping a stray brace and requesting the getFullHash runtime module. (by @alexander-akait in #21477)

  • Fix duplicated errors/warnings in stats output when detail-less entries exceed errorsSpace/warningsSpace. (by @alexander-akait in #21477)

  • Improve module parse errors with a babel-style code frame and the module type. (by @alexander-akait in #21485)

  • Fix formatSize rendering sizes of 1 TiB or larger as "undefined". (by @alexander-akait in #21477)

  • Skip the anonymous default export .name fix-up when name is non-configurable, instead of throwing on pre-ES2015 engines. (by @alexander-akait in #21477)

  • Escape ? and # in context module regexp identifiers so source map names are not truncated. (by @alexander-akait in #21477)

  • Resolve directory requests to their index module in scoped DllReferencePlugin. (by @alexander-akait in #21477)

  • Skip the hasSymbol check in the async module runtime when environment.symbol is set. (by @alexander-akait in #21477)

  • Use a shared __webpack_require__.cjs helper for wrapped CommonJS modules. (by @alexander-akait in #21477)

  • Derive ASI positions from source text instead of acorn's onInsertedSemicolon, so custom parsers need not collect semicolons. (by @alexander-akait in #21477)

  • Avoid a second full parse for auto source type by downgrading module to script in place on a top-level return. (by @alexander-akait in #21477)

  • Fix exponential-time side-effects analysis on cyclic module graphs by memoizing cycle-free results via Tarjan lowlink. (by @alexander-akait in #21477)

  • Speed up JavaScript parsing and AST walking and reduce parser memory usage. (by @alexander-akait in #21477)

  • Speed up CSS and HTML parsing and code generation and reduce parser memory usage. (by @alexander-akait in #21477)

  • Speed up snapshot creation and reduce its memory usage. (by @alexander-akait in #21477)

  • Reduce allocations in JS codegen, concatenation, queues and parser setup. (by @alexander-akait in #21477)

  • Speed up stats generation on large builds by reusing the item context across array items. (by @alexander-akait in #21477)

  • Memoize loader resolution per compilation to avoid re-resolving the same loader for every matching module. (by @alexander-akait in #21477)

  • Reuse and harden webpack's shared resource parser in the loader runner. (by @alexander-akait in #21477)

  • Update webpack-sources to 3.5.1 and enhanced-resolve to 5.24.2 to cut peak memory. (by @alexander-akait in #21477)

  • Inline the loader-runner package into core. (by @alexander-akait in #21477)

  • Fix context hash crash on unsupported directory entries like FIFOs and sockets. (by @hai-x in #21484)

  • Verify internalSerializables in lint:special and regenerate it in fix:special. (by @alexander-akait in #21476)

View originalPermalink
How v5.109.0 went

v5.108.4

Changed 1
  • Default output.globalObject to globalThis for universal targets
Fixed 8
  • Speed up non-CSS-Modules parsing by not building unused selector AST nodes
  • Speed up non-CSS-Modules CSS parsing by dropping value tokens nothing reads
  • Resolve HTML asset URLs against the document <base href>
  • Reduce CPU and memory overhead of HTML and CSS parsing and code generation
  • Reduce HTML parser memory and CPU by skipping unused AST nodes
  • Reduce HTML parser memory by storing the AST in struct-of-arrays form
  • Key the provided-exports cache on a lazy barrel's still-lazy re-export targets
  • Pass through new URL(...) directory references instead of resolving them
Patch Changes
  • Speed up non-CSS-Modules parsing by not building unused selector AST nodes. (by @alexander-akait in #21324)

  • Speed up non-CSS-Modules CSS parsing by dropping value tokens nothing reads. (by @alexander-akait in #21324)

  • Resolve HTML asset URLs against the document <base href>. (by @alexander-akait in #21329)

  • Add HTML integration tests: generateError output, ignored src, null-char parse. (by @aryanraj45 in #21328)

  • Reduce CPU and memory overhead of HTML and CSS parsing and code generation. (by @alexander-akait in #21332)

  • Reduce HTML parser memory and CPU by skipping unused AST nodes. (by @alexander-akait in #21323)

  • Reduce HTML parser memory by storing the AST in struct-of-arrays form. (by @alexander-akait in #21331)

  • Key the provided-exports cache on a lazy barrel's still-lazy re-export targets. (by @hai-x in #21326)

  • Default output.globalObject to globalThis for universal targets. (by @alexander-akait in #21314)

  • Pass through new URL(...) directory references instead of resolving them. (by @alexander-akait in #21312)

View originalPermalink
How v5.108.4 went

v5.108.3

Changed 1
  • Speed up CSS parsing and reduce CSS AST node memory
Fixed 2
  • Fix HMR codegen crash for harmony accept with unresolved imports
  • Match harmony accept dependencies by module reference so HMR codegen handles imports without a module or chunk id
Patch Changes
  • Speed up CSS parsing and reduce CSS AST node memory. (by @alexander-akait in #21285)

  • Fix HMR codegen crash for harmony accept with unresolved imports. (by @xiaoxiaojx in #21302)

  • Match harmony accept dependencies by module reference so HMR codegen handles imports without a module or chunk id. (by @alexander-akait in #21303)

View originalPermalink
How v5.108.3 went

v5.108.2

Fixed 2
  • Fix lazy barrel deferral of ungrouped side-effect imports
  • Respect the node: prefix for node.js core modules used as externals
Patch Changes
  • Fix lazy barrel deferral of ungrouped side-effect imports. (by @hai-x in #21291)

  • Respect the node: prefix for node.js core modules used as externals. (by @alexander-akait in #21286)

View originalPermalink
How v5.108.2 went

v5.108.1

Changed 1
  • Add frames to ProfilingPlugin TracingStartedInBrowser event so the trace loads in Chrome DevTools
Fixed 1
  • Fix invalid property access for escaped namespace imports with multi-character mangled export names
Patch Changes
  • Fix invalid property access for escaped namespace imports with multi-character mangled export names. (by @xiaoxiaojx in #21280)

  • Add frames to ProfilingPlugin TracingStartedInBrowser event so the trace loads in Chrome DevTools. (by @alexander-akait in #21269)

View originalPermalink
How v5.108.1 went

v5.108.0

Added 18
  • Treat top-level await and import.meta as ES module markers, matching Node.js syntax detection so no explicit module type is needed
  • Add a bun target that emits ESM and externalizes bun:* and node.js built-in modules
  • Support CommonJS reexports via Object.defineProperty value and getter descriptors
  • Support JSON Schema const when generating CLI flags from a schema
  • Support JSON Schema if/then/else when generating CLI flags from a schema
  • Skip import specifiers, require() and import() calls in dead conditional branches gated by inlined imported constants
Changed 2
  • CSS localIdentName [hash] now resolves to the local ident hash; use [modulehash] for the module hash
  • Use module-import for electron externals when the target supports ESM
Minor Changes
  • Treat top-level await and import.meta as ES module markers, matching Node.js syntax detection so no explicit module type is needed. (by @alexander-akait in #21218)

  • Add a bun target that emits ESM and externalizes bun:* and node.js built-in modules. (by @alexander-akait in #21248)

  • Support CommonJS reexports via Object.defineProperty value and getter descriptors. (by @alexander-akait in #21129)

  • Support JSON Schema const when generating CLI flags from a schema. (by @alexander-akait in #21087)

  • Support JSON Schema if/then/else when generating CLI flags from a schema. (by @alexander-akait in #21087)

  • Skip import specifiers, require() and import() calls in dead conditional branches gated by inlined imported constants (isDEV ? A : B), evaluated via getCondition. (by @hai-x in #21136)

  • CSS localIdentName [hash] now resolves to the local ident hash (matching css-loader); use [modulehash] for the module hash. (by @alexander-akait in #21259)

  • Add CSS parser as option and resolve url() inside HTML style attributes. (by @alexander-akait in #21157)

  • Add dedicated module classes for all built-in module types. (by @alexander-akait in #21164)

  • Support .html/.css for the default ./src entry under the html/css experiments. (by @alexander-akait in #21039)

  • Add defineConfig helper for typed configuration files. (by @alexander-akait in #21169)

  • Add a deno target (with versions, e.g. deno, deno2, deno1.40) that emits ESM, resolves node.js built-ins via the required node: specifier, and keeps Deno's own import protocols (npm:, jsr:, node:, http(s)://) external. (by @alexander-akait in #21247)

  • Use module-import for electron externals when the target supports ESM. (by @alexander-akait in #21184)

  • Add output.environment.logicalAssignment to emit ||= in runtime code when the target supports logical assignment operators. (by @bjohansebas in #21219)

  • Resolve and rewrite asset URLs inside <iframe srcdoc> in HTML modules. (by @bjohansebas in #21226)

  • Add HMR support for HTML modules with body/title DOM patching on update. (by @alexander-akait in #21011)

  • Add css-url html source type extracting url() references from CSS-valued attributes. (by @alexander-akait in #21250)

  • Add module.parser.html.sources option to disable or customize URL-attribute extraction for HTML modules, with script / script-module / stylesheet / stylesheet-inline types for custom attributes (by @alexander-akait in #21022)

  • Add module.parser.html.template option to transform HTML module source before parsing. (by @alexander-akait in #21055)

  • Extract more source URLs in HTML modules (SVG, legacy and obsolete attributes). (by @alexander-akait in #21241)

  • Inline export default <const> when the default-exported value is a primitive constant. (by @hai-x in #21189)

  • Support optimization.inlineExports for better tree-shaking. (by @hai-x in #20973)

  • Re-encode inline hash digests ([contenthash]/[chunkhash]/[fullhash]/[modulehash]) from the full content hash, so they carry full entropy and work under optimization.realContentHash and in dynamically-loaded chunk filenames; also preserve leading zero bytes in base-N digests. (by @alexander-akait in #21267)

  • Allow tree-shaking unused calls to /*#__NO_SIDE_EFFECTS__*/-annotated (pure) exports across module boundaries. (by @hai-x in #20907)

  • Defer building unused re-export targets of side-effect-free barrel modules. (by @hai-x in #21165)

  • Keep export mangling enabled for modules whose namespace object is used as a whole value, by materializing a decoupled namespace object that keeps the original export names. (by @alexander-akait in #21234)

  • Add output.environment.let option (paired with target's let capability) and emit let/const instead of var in generated runtime code wherever it is safe. Bindings that may be wrapped in runtime-condition if blocks (harmony imports, ConcatenatedModule external imports) continue to use var to preserve function scoping. (by @alexander-akait in #21010)

  • Add output.html to emit an HTML file per entrypoint, injecting its JS/CSS chunks (including dependOn shared chunks). (by @alexander-akait in #21215)

  • Add module.parser.javascript.pureFunctions to mark top-level names as side-effect-free for tree shaking. (by @hai-x in #21063)

  • Add universal to compiler.platform, true for universal targets ("universal" or ["web", "node"]). (by @bjohansebas in #21252)

  • Add output.strictModuleResolution to gate the runtime MODULE_NOT_FOUND guard. (by @hai-x in #21067)

  • Support an inline digest in hash path placeholders, e.g. [contenthash:base64:8]. (by @alexander-akait in #21259)

  • Support [uniqueName] and its [uniquename] alias in template paths. (by @alexander-akait in #21155)

  • Support CSS in Node for universal targets, collecting styles for SSR. (by @alexander-akait in #21208)

  • Improve commonjs, node-commonjs and global externals for universal targets. (by @alexander-akait in #21187)

  • Add a universal target preset (browser + web worker + Node.js + Electron + NW.js) that always outputs ECMAScript modules. (by @alexander-akait in #21214)

  • Support new Worker(new URL(...)) in universal (node + web) targets by resolving the Worker constructor from worker_threads when no global Worker exists. (by @alexander-akait in #21195)

  • Add output.workerChunkFilename and entry.worker for worker chunk filenames. (by @alexander-akait in #21128)

Patch Changes
  • Skip re-parsing the inlined entry module when no renaming is needed. (by @alexander-akait in #21167)

  • Extend the avoidEntryIife no-parse fast path to multi-entry chunks. (by @alexander-akait in #21173)

  • Reuse the binary deserialize dispatch table to speed up cache restore. (by @alexander-akait in #21175)

  • Type buildInfo and buildMeta per module type with shared common properties. (by @alexander-akait in #21172)

  • Avoid copying module runtime requirements when ownership is not transferred. (by @alexander-akait in #21140)

  • Keep all CommonJS exports when an exported function accesses them via this. (by @alexander-akait in #21179)

  • Align CLI color-support detection across Node, Deno and Bun. (by @alexander-akait in #21257)

  • Include the schema origin path in conflicting-schema CLI argument errors. (by @alexander-akait in #21087)

  • Reject __proto__, constructor and prototype path segments in cli.processArguments to prevent prototype pollution. (by @alexander-akait in #21057)

  • Speed up Compilation.deleteAsset and Compilation.renameAsset via a lazy reverse index from asset file name to containing chunks. (by @alexander-akait in #21035)

  • Fix merging of inner modules' top-level declarations in concatenated modules. (by @alexander-akait in #21170)

  • Reduce allocations in export hashing and concatenation name lookups. (by @alexander-akait in #21167)

  • Avoid toLowerCase allocations in CSS keyword comparisons. (by @alexander-akait in #21109)

  • Speed up CSS identifier escaping with a char-class lookup table. (by @alexander-akait in #21109)

  • Resolve [fullhash] in url() public paths for inlined CSS export types (style/text/css-style-sheet) at runtime. (by @alexander-akait in #21054)

  • Avoid quadratic line scan when building CSS module exports source maps. (by @alexander-akait in #21109)

  • Compute CSS comment source locations lazily. (by @alexander-akait in #21109)

  • Support inline hash digest and length in CSS module localIdentName placeholders. (by @alexander-akait in #21259)

  • Resolve full CSS escapes (including hex) in CSS-Modules names, so e.g. \75 rl() matches url(). (by @alexander-akait in #21196)

  • Reduce CSS parser CPU (hoisted per-call regexes, byte-compared @container pure-mode keywords) and stop retaining parsed comments on the reused parser instance between modules. (by @alexander-akait in #21202)

  • Reduce CSS build time and memory usage. Per-export CSS dependencies are consolidated into one dependency per module, and hot-path allocations and lookups in CSS code generation and the module-graph cache are trimmed. (by @alexander-akait in #21114)

  • Cache CSS public-path placeholder offsets per module source to avoid re-materializing and re-scanning the source on every render. (by @alexander-akait in #21054)

  • Fix CSS tokenizer infinite loops and dropped tokens on malformed input. (by @alexander-akait in #21102)

  • Speed up CSS identifier unescaping with bulk run flushing. (by @alexander-akait in #21109)

  • Skip already-visited symlink targets when resolving context hashes so cyclic symlink graphs no longer overflow the queue. (by @alexander-akait in #21088)

  • Resolve DefinePlugin access to an undefined object member as undefined. (by @alexander-akait in #21040)

  • Avoid materializing dependency source locations when sorting, keeping them lazy to reduce build time and memory. (by @alexander-akait in #21228)

  • Speed up serialization deserialize by replacing a Buffer.isBuffer call with a typeof check. (by @hai-x in #21203)

  • Emit assets with absolute target paths as-is to avoid invalid Windows paths. (by @alexander-akait in #21223)

  • Add output.environment.spread, output.environment.hasOwn, and output.environment.symbol, and use method shorthand, spread, Object.hasOwn, and an unguarded Symbol in generated runtime code where the environment supports it. (by @alexander-akait in #21188)

  • Drop the unused loadScript runtime from ESM hot-update bundles. (by @alexander-akait in #21208)

  • Extend value binding optimization to export default expressions. (by @xiaoxiaojx in #21117)

  • Reduce ExportInfo memory and cache size for inline-exports metadata. (by @alexander-akait in #21171)

  • Resolve nested exports info paths iteratively to cut per-level array allocations. (by @alexander-akait in #21137)

  • Fix stale incremental cache for css, html and asset/source/inline modules. (by @alexander-akait in #21108)

  • CommonJS tree-shaking no longer drops exports accessed before a deferred require binding. (by @xiaoxiaojx in #21123)

  • Make CSS-referenced asset available in lazy JS chunk during incremental rebuilds. (by @alexander-akait in #21100)

  • Correct string/template import specifier parsing for filesystem cache build dependencies and fix module-sharing hostname validation. (by @alexander-akait in #21232)

  • perf: guard isDeferred() behind experiments.deferImport in ConcatenatedModule (by @shashank-u03 in #21096)

  • Speed up deterministicGrouping and cached comparators on large builds. (by @alexander-akait in #21197)

  • Reduce allocations on harmony/commonjs dependency hot paths. (by @alexander-akait in #21180)

  • Force-load a module's new owning chunk during HMR when its only loaded chunk is removed from a runtime, so it keeps receiving updates. (by @alexander-akait in #21131)

  • Fix HTML parser adoption agency to handle a nobr shielded by a marker. (by @alexander-akait in #21274)

  • Expand HTML parser tag/attribute coverage and decode character references. (by @alexander-akait in #21159)

  • Speed up and reduce allocations in the experimental HTML parser's tokenizer, tree builder, and entity decoder. (by @alexander-akait in #21152)

  • Speed up the experimental HTML parser and reduce its memory usage. (by @alexander-akait in #21130)

  • Avoid redundant HTML module work: reuse the dependency-template render across the JS and HTML code-generation passes, and memoize sentinel resolution/content hashing per source. (by @alexander-akait in #21054)

  • Release inner-graph state after use and speed up inlined-export checks. (by @alexander-akait in #21167)

  • Reduce JavascriptParser allocations on the walk hot path to speed up parsing and lower memory usage. (by @alexander-akait in #21139)

  • Reduce CPU and memory overhead of the lazy barrel optimization. (by @alexander-akait in #21213)

  • Keep the error message in module build errors on engines whose Error.stack omits it. (by @alexander-akait in #21239)

  • Speed up module concatenation by caching repeated per-module computations. (by @alexander-akait in #21115)

  • Move the hot flag from Module to NormalModule, where it's actually read and written. (by @alexander-akait in #21028)

  • Move the weak flag from Dependency to ModuleDependency, where it's actually set. (by @alexander-akait in #21111)

  • Avoid the entry IIFE for multiple inlined entry modules by renaming collisions. (by @alexander-akait in #21151)

  • Reject new import.defer(...)/new import.source(...) with member access as a SyntaxError. (by @alexander-akait in #21211)

  • Avoid ProvidePlugin injection for local CommonJS require bindings that use the same variable name. (by @fireairforce in #21041)

  • Resolve the global new Worker(new URL(...)) to worker_threads on the node target. (by @alexander-akait in #21217)

  • Use optional chaining in generated runtime code where the environment supports it. (by @alexander-akait in #21186)

  • Allow output.path to be the filesystem root by treating EISDIR like EEXIST in mkdirp. (by @alexander-akait in #21223)

  • Reduce memory by not retaining the source location object on every dependency. (by @alexander-akait in #21183)

  • Keep the full exports object when a require() binding is re-exported. (by @alexander-akait in #21144)

  • Replace glob-to-regexp dependency with watchpack's globToRegExp utility. (by @hai-x in #21176)

  • Shrink the persistent cache: add a NULL_AND_I16 binary tier and inline tiny strings instead of larger far back-references. (by @hai-x in #21210)

  • Type serializer read/write contexts with positional tuples and fix a ProvideSharedDependency version/request swap. (by @alexander-akait in #21201)

  • Speed up buildChunkGraph by deriving block modules from the first runtime. (by @alexander-akait in #21166)

  • Cache re-export target resolution in SideEffectsFlagPlugin for faster builds. (by @alexander-akait in #21085)

  • Skip pure single-star passthrough modules for export * re-exports. (by @alexander-akait in #21085)

  • Skip dependency error/warning reporting for unchanged modules on rebuilds. (by @alexander-akait in #21154)

  • Use value descriptors instead of getters for const export bindings. (by @xiaoxiaojx in #21021)

  • Apply CSS hot updates on the Node side of a universal target. (by @alexander-akait in #21217)

  • Guard CSS style export-type injection so it no-ops when there is no document. (by @alexander-akait in #21193)

  • Avoid building warning stats objects when counting warnings without a filter. (by @alexander-akait in #21198)

  • Recognize forward-slash Windows absolute paths (e.g. C:/dir) consistently. (by @alexander-akait in #21223)

View originalPermalink
How v5.108.0 went

v5.107.2

Changed 4
  • Reduce per-file overhead in ContextModuleFactory.resolveDependencies by batching alternativeRequests hook calls to improve rebuild performance
  • Rewrite NormalModule#getSideEffectsConnectionState walk as an iterative loop to restore rebuild performance while keeping deep import chains stack-safe
  • Release per-child codeGenerationResults in MultiCompiler and at Compiler.close to reduce memory retention
  • Reduce peak memory of SourceMapDevToolPlugin on large builds
Fixed 6
  • Include each external info's runtimeCondition in ConcatenatedModule#updateHash to prevent cache invalidation issues
  • Fix HTML [contenthash] for referenced asset and inline-style URL changes
  • Resolve chunk-hash placeholders in chunk URLs embedded into extracted HTML
  • Fix runtime ReferenceError on first activation of lazy-compiled module when output.library.type produces closure-wrapped bundle
  • Fill in missing entryOptions when an async block joins an existing entrypoint
  • Fix slow require.context() and dynamic import() rebuilds in watch mode by using exact purge for watched context directories
Removed 1
  • Remove unnecessary __webpack_require__ runtime helpers in ESM library output with multi-module chunks
Patch Changes
  • Reduce per-file overhead in ContextModuleFactory.resolveDependencies by batching alternativeRequests hook calls. Previously the hook was invoked once per file in the context (with a single-item array), paying per-call overhead (closure allocation, resolverFactory.get, intermediate arrays in RequireContextPlugin) for every file. The hook is now invoked once per directory with all matched files in one batch — RequireContextPlugin's tap already iterates the items array, so the output is unchanged. Steady-state rebuild on a 4000-file require.context drops a further ~15 ms (after the watch-mode purge fix in the same release). (by @alexander-akait in #21020)

  • Include each external info's runtimeCondition in ConcatenatedModule#updateHash so changes to a concatenated external's runtime condition invalidate persistent caches instead of slipping through with the module id alone. (by @alexander-akait in #21023)

  • Fix HTML [contenthash] for referenced asset and inline-style URL changes. (by @alexander-akait in #21018)

  • Resolve chunk-hash placeholders in chunk URLs embedded into extracted HTML. (by @alexander-akait in #21018)

  • Remove unnecessary __webpack_require__ runtime helpers in ESM library output with multi-module chunks. (by @xiaoxiaojx in #21032)

  • Rewrite NormalModule#getSideEffectsConnectionState walk as an allocation-light iterative loop instead of a generator trampoline, restoring rebuild performance lost in #20993 while keeping deep import chains stack-safe. (by @alexander-akait in #21014)

  • Fix runtime ReferenceError on the first activation of a lazy-compiled module when output.library.type produces a closure-wrapped bundle (umd, umd2, amd, amd-require, system). (by @alexander-akait in #21013)

    External modules of these types reference closure-bound identifiers like __WEBPACK_EXTERNAL_MODULE_react__, supplied by the library wrapper that is generated once per chunk. When lazyCompilation activates an entry or import for the first time, any external dependency the lazily-built module pulls in arrives in a hot-update chunk that lives outside the original wrapper closure, so its factory body cannot resolve the closure identifier and only a manual page refresh recovers.

    The inactive LazyCompilationProxyModule now declares statically-enumerable externals (string and object forms of externals) as its own dependencies, so the initial entry chunk's library wrapper already exposes their closure identifiers. When activation later pulls in those externals through the lazily-compiled module, they resolve to the already-installed factories instead of throwing. Function and RegExp externals are not pre-populated because their effective request set isn't knowable up front.

  • Fill in missing entryOptions when an async block joins an existing entrypoint. (by @alexander-akait in #21026)

  • Release per-child codeGenerationResults in MultiCompiler and at Compiler.close to reduce memory retention. (by @alexander-akait in #21015)

  • Reduce peak memory of SourceMapDevToolPlugin on large builds (closes #20961). (by @alexander-akait in #20963)

  • Fix slow require.context() / dynamic import() rebuilds in watch mode (#13636). When a file inside a watched context directory changed, NodeWatchFileSystem would call inputFileSystem.purge(contextDir). The enhanced-resolve purge implementation matches cache keys with key.startsWith(contextDir), so the stat cache of every file under the directory was discarded on every rebuild — ContextModuleFactory.resolveDependencies then re-stat-ed the whole tree on each rebuild. Single-file rebuilds on a 4000-file context now reuse the warm stat cache, dropping median rebuild from ~1260 ms to ~650 ms in a local reproduction (≈49%). For directory items that are explicitly watched contexts, purge is now called with { exact: true } (added in enhanced-resolve@5.22.0) so only the directory's own entry is invalidated; file-level changes in the same aggregated event continue to purge file stats and the parent readdir as before. (by @alexander-akait in #21020)

View originalPermalink
How v5.107.2 went

v5.107.1

Added 2
  • Surface tokenizer parse errors to consumers via a new parseError callback with 'warning' for recoverable errors and 'error' for incomplete offset ranges
  • Add the full WHATWG named character references table so decodeHtmlEntities handles all named entities including legacy bare forms and multi-code-point entities with proper longest-prefix backtracking
Changed 5
  • WebAssembly generator hooks now use EmptyGeneratorOptions instead of EmptyParserOptions
  • NormalModuleFactory#getParser, createParser, getGenerator, and createGenerator are now generic over the module-type string, returning specific parser/generator classes for known types
  • NormalModuleCreateData is now generic over the module type so parser, parserOptions, generator, and generatorOptions are narrowed to the specific class and options for the given type
  • CSS chunks are now sorted by the entrypoint's module post-order index so <link> tags appear in source import order
  • Copy nonce, crossorigin, and referrerpolicy attributes from the originating script tag onto emitted <link> tags
Fixed 7
  • Align the experimental HTML tokenizer with the WHATWG spec by fixing offset-range bugs in the script-data, content-mode end-tag, attribute-value, and EOF states
  • Tree-shake CommonJS modules imported through const NAME = require(LITERAL) binding when only static members of NAME are read
  • Fix RangeError: Maximum call stack size exceeded thrown from HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState on long linear chains of side-effect-free imports by making traversal iterative instead of recursive
  • Fix module.generator.html to use HtmlGeneratorOptions instead of EmptyGeneratorOptions
  • Link import bindings used inside define(...) callbacks in ES modules
  • Emit <link rel="stylesheet"> tags for CSS chunks reachable from a <script src> entry in HTML-entry pipeline
  • Allow devtool and SourceMapDevToolPlugin or multiple SourceMapDevToolPlugin instances to coexist on the same asset
Patch Changes
  • Align the experimental HTML tokenizer with the WHATWG spec: fix offset-range bugs in the script-data, content-mode end-tag, attribute-value, and EOF states; surface tokenizer parse errors to consumers via a new parseError callback ("warning" when the tokenizer recovers and the emitted token is still well-formed, "error" when the offset range is incomplete — e.g. eof-in-tag); and add the full WHATWG named character references table so decodeHtmlEntities handles all named entities (including legacy bare forms like &AMP and multi-code-point entities like &NotEqualTilde;) with proper longest-prefix backtracking. (by @alexander-akait in #21000)

  • Tree-shake CommonJS modules imported through a const NAME = require(LITERAL) binding when only static members of NAME are read. Previously webpack treated every export of such modules as referenced (because the bare require() dependency reports EXPORTS_OBJECT_REFERENCED), so unused exports.x = ... assignments remained in the bundle even with usedExports enabled. The parser now forwards NAME.x / NAME.x() / NAME["x"] accesses to the underlying CommonJsRequireDependency as referenced exports, falling back to the full exports object the moment NAME is read in any other context (passed by value, destructured later, accessed with a dynamic key, …). This brings the binding form to parity with the existing destructuring form (const { x } = require(...)). (by @alexander-akait in #21003)

  • Fix RangeError: Maximum call stack size exceeded thrown from HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState on long linear chains of side-effect-free imports. NormalModule.getSideEffectsConnectionState previously descended through HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState recursively, adding two stack frames per module, which overflowed V8's stack at a few thousand modules deep. The traversal is now iterative. (by @alexander-akait in #20993)

  • Fix NormalModuleFactory parser/generator types: (by @alexander-akait in #20999)

    • module.generator.html now uses HtmlGeneratorOptions instead of EmptyGeneratorOptions (the extract option was hidden from the createGenerator / generator hook types).
    • WebAssembly (webassembly/async, webassembly/sync) generator hooks now use EmptyGeneratorOptions instead of EmptyParserOptions.
    • NormalModuleFactory#getParser / createParser / getGenerator / createGenerator are now generic over the module-type string, returning the specific parser/generator class for known types (e.g. JavascriptParser for "javascript/auto", CssGenerator for "css", etc.) instead of always returning the base Parser / Generator.
    • NormalModuleCreateData is now generic over the module type so parser, parserOptions, generator, and generatorOptions are narrowed to the specific class / options for the given type.
  • Link import bindings used inside define(...) callbacks in ES modules. Previously, HarmonyDetectionParserPlugin skipped walking the arguments of define calls in harmony modules, so references to imported bindings inside an inline AMD define factory (e.g. define(function () { console.log(foo); })) were not rewritten to their imported references and could cause ReferenceError at runtime. Inner graph usage analysis is also fixed for the related pattern const fn = function () { foo; }; define(fn);. (by @alexander-akait in #20990)

  • HTML-entry pipeline (experiments.html + experiments.css): emit <link rel="stylesheet"> tags for CSS chunks reachable from a <script src> entry. Previously when the bundled JS imported CSS, the resulting .css file was emitted to disk but never referenced from the extracted HTML (no <link> tag), and when splitChunks extracted CSS into sibling chunks the HTML cloned the originating <script> for each one — producing <script src="style.js"> pointing at non-existent JS filenames instead of <link rel="stylesheet" href="style.css">. CSS chunks are now sorted by the entrypoint's module post-order index so the <link> tags also appear in source import order, fixing the cascade ordering issue documented in html-webpack-plugin#1838 and webpack/mini-css-extract-plugin#959 for HTML-entry builds. nonce/crossorigin/referrerpolicy are copied from the originating tag onto the emitted <link>. (by @alexander-akait in #21002)

  • Allow devtool and SourceMapDevToolPlugin (or multiple SourceMapDevToolPlugin instances) to coexist on the same asset. Previously the second instance would silently skip any asset whose info.related.sourceMap had already been set by an earlier instance, and even when it ran the asset had been rewrapped as a RawSource so no source map could be recovered — producing an empty .map file. The plugin now keeps a per-compilation stash of pristine source maps, namespaces its persistent cache entries by the options that affect output, and appends additional related.sourceMap entries instead of overwriting them. The classic workaround of pairing devtool: 'hidden-source-map' with a new webpack.SourceMapDevToolPlugin({ filename: '[file].secondary.map', noSources: true }) now produces both maps in a single build. (by @alexander-akait in #21001)

  • Narrow TemplatePathFn callback types by context. pathData.chunk is now non-optional for chunk filename callbacks (output.filename, chunkFilename, cssFilename, cssChunkFilename, htmlFilename, htmlChunkFilename, optimization.splitChunks.cacheGroups[*].filename), and pathData.module is non-optional for module filename callbacks (output.assetModuleFilename, per-module generator.filename / generator.outputPath, module.parser.css.localIdentName). (by @alexander-akait in #20987)

  • Tighten the CreateData typedef in NormalModuleFactory. CreateData now represents the fully-populated value passed to the createModule, module, and createModuleClass hooks (NormalModuleCreateData & { settings: ModuleSettings }), while ResolveData.createData is typed as Partial<CreateData> to reflect the empty initial state. Plugins tapping those hooks no longer need to cast individual fields away from optional. (by @alexander-akait in #20992)

  • Stop webpackPrefetch / webpackPreload magic comments from leaking across import() call sites that share a webpackChunkName. When two imports targeted the same named chunk and only one of them set webpackPrefetch: true, the prefetch directive was applied from every parent chunk that referenced the named chunk. Prefetch and preload orders are now resolved per import() call site instead of from the shared chunk group's accumulated options. (by @alexander-akait in #20994)

  • Fix [fullhash:N] and [hash:N] (with length suffix) in output.publicPath not being interpolated at runtime. The detection regex in RuntimePlugin only matched [fullhash] / [hash] without a length suffix, so the PublicPathRuntimeModule was not flagged as a full-hash module and __webpack_require__.p was emitted with the placeholder XXXX left in place (e.g. out/XXXX/) instead of the real hash truncated to the requested length. (by @alexander-akait in #21004)

  • Re-export ModuleNotFoundError from webpack/lib/ModuleNotFoundError for backward compatibility with old plugins that import it from that path. This re-export will be removed in webpack 6. (by @alexander-akait in #20988)

View originalPermalink
How v5.107.1 went
View all

Discussion