What webpack/webpack shipped
Written by FoxPlug from public releases; not affiliated with webpack. An automatic summary of the public release, pull request and commit data of github.com/webpack/webpack. webpack did not write it and does not use or endorse FoxPlug. Every line links to the public change it describes.
Get a weekly update like this for your product, free
Week of September 21, 2026
What shipped
- webpack now minifies JavaScript through its own terser phases under futureDefaults, replacing terser's parse, output, print, frequency and mangle phases with faster versions built on webpack's own AST. Pull request #22298
- sourcemaps now emit the scopes field for imported ESM bindings via new -scopes devtool suffixes (source-map-scopes, eval-source-map-scopes, etc.), letting debuggers resolve mutable imports. Pull request #21999
- shared modules now accept include/exclude filters on version and request, letting nested dependencies use their own copies instead of being forced to the shared version. Pull request #22297
- JSON assets are now minified under futureDefaults via optimization.minimizeOptions.json, defaulting to true with experiments.futureDefaults. Pull request #22286
- copy plugin now offers an ignore hook and never reads from output.path, preventing recursive copying of webpack's own output back into itself. Pull request #22216
- JavaScript minifier now grows token tables by token count instead of source length, reducing parser-buffer memory by 46.6% on production Lodash builds. Pull request #22329
- webpack now reads only the browserslist config for the default target instead of loading the full browserslist module, saving 1.6 MB retained memory on builds that don't need it. Pull request #22324
- plugins can now add custom dependency types by exposing template.DependencyTemplate, module.NullFactory and util.makeSerializable from compiler.webpack. Pull request #22321
- lib/dependencies is now organized by syntax family (amd/, commonjs/, css/, esm/, hmr/, html/, system/, worker/) instead of 144 flat files. Pull request #22291
- CSS minifier now treats 2009-draft flexbox spellings (-webkit-box-align, -moz-box-pack, display: -webkit-box) as legacy names for modern targets, dropping them appropriately. Pull request #22320
Why it matters
This week brings webpack's own JavaScript minifier implementation forward, adds sourcemap scoping for ESM imports, and delivers multiple performance improvements across CSS, HTML and graph processing. Plugin authors gain new hooks for custom dependency types and shared module filtering.
Changelog entry
- feat(javascript): minify through webpack's own terser phases under futureDefaults Pull request #22298
- feat(sourcemaps): emit the scopes field for imported ESM bindings Pull request #21999
- feat(sharing): add include/exclude filters to shared modules Pull request #22297
- feat: minify JSON assets under futureDefaults Pull request #22286
- feat(copy): add an ignore hook and never read from output.path Pull request #22216
- feat: expose template.DependencyTemplate, module.NullFactory and util.makeSerializable Pull request #22321
- perf(javascript): reduce minifier token buffer memory by 46.6% Pull request #22329
- perf(config): read only browserslist config for default target, saving 1.6 MB Pull request #22324
- fix(css): treat 2009-draft flexbox spellings as legacy for modern targets Pull request #22320
- refactor(dependencies): group lib/dependencies by syntax family Pull request #22291
- perf(html): skip unnecessary style sheet closure scans with mergeStyles Pull request #22328
- perf(graph): reduce allocations on module and chunk graph hot paths Pull request #22289
webpack now minifies JavaScript through its own terser phases, adds sourcemap scopes for ESM imports, lets shared modules filter by version/request, minifies JSON assets under futureDefaults, and saves 1.6 MB by lazy-loading browserslist.
This week's webpack updates focus on performance and developer experience. The JavaScript minifier now runs webpack's own optimized terser phases. Sourcemaps gain the scopes field for imported ESM bindings, making debuggers resolve imports directly. Shared modules accept include/exclude filters, JSON assets minify under futureDefaults, and memory usage drops with smarter token buffering and lazy configuration loading. Plugin authors can now add custom dependency types with exposed APIs.