# webpack changelog > A static module bundler for modern JavaScript applications. - Vendor: OpenJS Foundation - Category: Frameworks & Libraries - Official site: https://webpack.js.org - Tracked by: What's New (https://whatsnew.fyi/product/webpack) - Harvested from: GitHub (webpack/webpack) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v5.109.2 - Date: 2026-07-28 - Version: v5.109.2 - Original notes: https://github.com/webpack/webpack/releases/tag/v5.109.2 - Permalink: https://whatsnew.fyi/product/webpack/releases/v5.109.2 - **fixed** — Resolve aliases pointing at a package directory whose name ends with .js - **fixed** — Name CSS sources in source maps by their resource path, without the css prefix - **fixed** — 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 - **fixed** — Report universal as the loader context target for the universal target - **fixed** — Skip require().prop in dead branches gated by inlined imported constants - **changed** — Annotate configuration options and public hooks in the generated types with the @since JSDoc tag ###### Patch Changes - Resolve aliases pointing at a package directory whose name ends with `.js` again. (by [@alexander-akait](https://github.com/alexander-akait) in [#21542](https://github.com/webpack/webpack/pull/21542)) - Name CSS sources in source maps by their resource path, without the `css ` prefix. (by [@bjohansebas](https://github.com/bjohansebas) in [#21536](https://github.com/webpack/webpack/pull/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](https://github.com/bjohansebas) in [#21528](https://github.com/webpack/webpack/pull/21528)) - Report `"universal"` as the loader context target for the universal target. (by [@alexander-akait](https://github.com/alexander-akait) in [#21540](https://github.com/webpack/webpack/pull/21540)) - Skip `require().prop` in dead branches gated by inlined imported constants. (by [@hai-x](https://github.com/hai-x) in [#21517](https://github.com/webpack/webpack/pull/21517)) - Annotate configuration options and public hooks in the generated types with the `@since` JSDoc tag. (by [@bjohansebas](https://github.com/bjohansebas) in [#21473](https://github.com/webpack/webpack/pull/21473)) ### v5.109.1 - Date: 2026-07-27 - Version: v5.109.1 - Original notes: https://github.com/webpack/webpack/releases/tag/v5.109.1 - Permalink: https://whatsnew.fyi/product/webpack/releases/v5.109.1 - **fixed** — Fix stray semicolon emitted before an imported call following a parenthesized sequence element - **fixed** — Make require(esm) module.exports re-export analysis independent of module processing order - **fixed** — Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so compiler.close() succeeds on Bun - **changed** — Name the failing key when DefinePlugin fails to evaluate a typeof value - **changed** — 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 - **changed** — Speed up the HTML parser and cut its peak memory: module-scope helpers/state and tokenizer callbacks, plus exact AST column pre-sizing - **fixed** — Track CommonJS build dependencies by parsing sources when require.cache children are unavailable (e.g. Bun) - **changed** — Cook common string-literal escapes on the JS parser fast path and own the tokenizer's cold-path readers - **changed** — Build the CSS parseA* AST on the SoA store instead of node classes, cutting parse memory and time - **changed** — 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 - **changed** — 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 - **changed** — 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 - **changed** — Speed up CSS parsing: byte-range function-name checks, indexed sibling lookahead - **changed** — Reduce allocations and redundant work across the code-generation, module-concatenation, exports/usage-analysis, hashing, and chunk-splitting hot paths - **changed** — Enable the Node.js compile cache in the webpack CLI entry point - **changed** — Encode the persistent cache with V8's value serializer - **changed** — Speed up SplitChunksPlugin: reject non-subset chunk sets with 64-bit signatures, cache unnamed entry keys, and drop per-module closures - **changed** — Initialize NormalModule._ast in the constructor so each instance keeps a single hidden-class shape - **changed** — Reduce allocations in the binary serialization hot paths - **changed** — Rename nested const/let __webpack_require__ and __webpack_exports__ declarations in bundled webpack output ###### Patch Changes - Fix stray semicolon emitted before an imported call following a parenthesized sequence element. (by [@alexander-akait](https://github.com/alexander-akait) in [#21533](https://github.com/webpack/webpack/pull/21533)) - Make `require(esm)` `module.exports` re-export analysis independent of module processing order. (by [@alexander-akait](https://github.com/alexander-akait) in [#21521](https://github.com/webpack/webpack/pull/21521)) - Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so `compiler.close()` succeeds on Bun. (by [@alexander-akait](https://github.com/alexander-akait) in [#21521](https://github.com/webpack/webpack/pull/21521)) - Name the failing key when DefinePlugin fails to evaluate a `typeof` value. (by [@alexander-akait](https://github.com/alexander-akait) in [#21503](https://github.com/webpack/webpack/pull/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](https://github.com/alexander-akait) in [#21524](https://github.com/webpack/webpack/pull/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](https://github.com/alexander-akait) in [#21492](https://github.com/webpack/webpack/pull/21492)) - Track CommonJS build dependencies by parsing sources when `require.cache` children are unavailable (e.g. Bun). (by [@alexander-akait](https://github.com/alexander-akait) in [#21531](https://github.com/webpack/webpack/pull/21531)) - Cook common string-literal escapes on the JS parser fast path and own the tokenizer's cold-path readers. (by [@alexander-akait](https://github.com/alexander-akait) in [#21500](https://github.com/webpack/webpack/pull/21500)) - Build the CSS `parseA*` AST on the SoA store instead of node classes, cutting parse memory and time. (by [@alexander-akait](https://github.com/alexander-akait) in [#21498](https://github.com/webpack/webpack/pull/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](https://github.com/alexander-akait) in [#21504](https://github.com/webpack/webpack/pull/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](https://github.com/alexander-akait) in [#21511](https://github.com/webpack/webpack/pull/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](https://github.com/alexander-akait) in [#21506](https://github.com/webpack/webpack/pull/21506)) - Speed up CSS parsing: byte-range function-name checks, indexed sibling lookahead. (by [@bjohansebas](https://github.com/bjohansebas) in [#21520](https://github.com/webpack/webpack/pull/21520)) - Reduce allocations and redundant work across the code-generation, module-concatenation, exports/usage-analysis, hashing, and chunk-splitting hot paths. (by [@alexander-akait](https://github.com/alexander-akait) in [#21516](https://github.com/webpack/webpack/pull/21516)) - Enable the Node.js compile cache in the webpack CLI entry point. (by [@bjohansebas](https://github.com/bjohansebas) in [#21523](https://github.com/webpack/webpack/pull/21523)) - Encode the persistent cache with V8's value serializer. (by [@avivkeller](https://github.com/avivkeller) in [#21514](https://github.com/webpack/webpack/pull/21514)) - Speed up SplitChunksPlugin: reject non-subset chunk sets with 64-bit sig _[Truncated at 4000 characters — full notes: https://github.com/webpack/webpack/releases/tag/v5.109.1]_ ### v5.109.0 - Date: 2026-07-23 - Version: v5.109.0 - Original notes: https://github.com/webpack/webpack/releases/tag/v5.109.0 - Permalink: https://whatsnew.fyi/product/webpack/releases/v5.109.0 - **changed** — Default experiments.typescript to auto, enabling built-in TypeScript support on Node.js >= 22.6 when no TypeScript loader is registered - **changed** — Default experiments.css, experiments.html and experiments.asyncWebAssembly to auto, enabling built-in support unless a loader is registered for those files - **added** — Add output.resourceHints to emit resource hints (preload/prefetch/modulepreload/preconnect), plus module.parser..urlHints, css.fontPreload and javascript.dynamicImportCssPreload - **added** — Add built-in build progress via infrastructureLogging.progress, plus estimatedTime, phaseTimings, progress bar width and progressBar auto on ProgressPlugin - **added** — Concatenate CommonJS modules with statically analyzable exports; opt out via optimization.concatenateModules: { commonjs: false } - **added** — Wrap weird CommonJS modules into module concatenation instead of bailing out - **added** — Add output.html.inline (true | script | style) and the webpackInline magic comment to inline chunk content into HTML - **added** — Add output.html.inject to control where chunk tags are injected - **added** — Add output.html.title, output.html.meta and output.html.base options for head generation - **added** — Support per-icon link attributes (sizes, media, color, type, crossorigin) and arrays in output.html.favicon - **added** — Add output.html.manifest to generate and link a web app manifest with hashed icons - **added** — Add output.html.csp to inject a Content-Security-Policy meta with inline-content hashes and an optional nonce - **added** — Add the output.html injectTags compilation hook to inject tags (script/link/meta/…) with injectTo placement - **added** — Add the output.html transformTags compilation hook to mutate, remove, or move (between and ) a page's existing