You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A short blog post that says it directly. Since webpack 5.109.0, CSS and HTML are built in, stable and on by default, so these are no longer needed: css-loader, style-loader, mini-css-extract-plugin, css-minimizer-webpack-plugin, html-loader, html-webpack-plugin and html-minimizer-webpack-plugin. A post gets shared and linked in a way the guides alone don't, which helps search engines and AI assistants stop recommending the old setup.
Sections:
What you can remove: a table with each deprecated package and its built-in replacement.
CSS with no configuration.
Sass, Less, PostCSS and Tailwind: the before/after loader chain.
HTML pages with no plugin: an HTML entry and output.html.
Existing projects keep working: the 'auto' default, the @webpack/css-plugins-to-native-css codemod, and the migration guides.
File: src/content/blog/2026-11-06-css-and-html-are-built-in.mdx (sort: 20261106). I set contributors to alexander-akait; please adjust the byline and the date as you see fit.
Checked: Prettier, markdownlint, cspell and ESLint (code blocks) pass. All links point to existing guide sections.
Added a guide to webpack’s built-in CSS and HTML support, covering CSS Modules, extraction, production minification, vendor prefixes, and HTML entries.
Explains how to use preprocessors with the CSS pipeline and identifies packages the guide says may no longer be needed.
Describes how existing CSS or HTML rules affect automatic built-in support, plus options for migrating legacy loader rules incrementally.
A short post saying it directly: since webpack 5.109.0 CSS and HTML are
built in, stable and on by default, so css-loader, style-loader,
mini-css-extract-plugin, css-minimizer-webpack-plugin, html-loader,
html-webpack-plugin and html-minimizer-webpack-plugin are no longer
needed. Covers the replacement for each, preprocessors, HTML entries and
`output.html`, the 'auto' default for existing projects, and the codemod.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FhutTnKEPLYcuGNGNijRS
One or more co-authors of this pull request were not found. You must specify co-authors in commit message trailer via:
Co-authored-by: name <email>
Supported Co-authored-by: formats include:
Anything <id+login@users.noreply.github.com> - it will locate your GitHub user by id part.
Anything <login@users.noreply.github.com> - it will locate your GitHub user by login part.
Anything <public-email> - it will locate your GitHub user by public-email part. Note that this email must be made public on Github.
Anything <other-email> - it will locate your GitHub user by other-email part but only if that email was used before for any other CLA as a main commit author.
login <any-valid-email> - it will locate your GitHub user by login part, note that login part must be at least 3 characters long.
Alternatively, if the co-author should not be included, remove the Co-authored-by: line from the commit message.
Please update your commit message(s) by doing git commit --amend and then git push [--force] and then request re-running CLA check via commenting on this pull request:
EasyCLA is failing. The reason is not the diff: it's the Co-Authored-By: Claude <noreply@anthropic.com> trailer on the commit, which has no signed CLA. #8483 and #8484 carried the same trailer and failed the same check before they were merged. Clearing it would mean rewriting the commit message and force-pushing, which I'll only do if the maintainers want that. The other checks are still running.
No actionable comments were generated in the recent review.
Walkthrough
Adds a blog post describing webpack’s built-in CSS and HTML support since version 5.109.0. It lists package replacements, CSS processing behavior, HTML entry and generation options, and configuration for using preprocessors with webpack’s CSS pipeline. It also describes how 'auto' settings interact with loaders in module.rules and provides migration links and a CSS codemod command.
Merge Risk: Minimal · up to 3ae94
This adds a documentation blog post and changes no runtime behavior. Earlier review feedback has been addressed. The EasyCLA check may need maintainer attention but does not affect the content.
Pre-merge checks: 5
Check name
Status
Explanation
Description Check
Check skipped - CodeRabbit’s high-level summary is enabled.
Title check
The title describes the blog post about built-in CSS and HTML support.
Docstring Coverage
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)
Finishing Touches
Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Warning
Some tools did not complete. Review the errors below.
ESLint
If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.
Error: typescript-eslint does not support TS 7.0.
at Object. (/.eslint-tmp/node_modules/@typescript-eslint/eslint-plugin/dist/index.js:50:11)
at Module._compile (node:internal/modules/cjs/loader:1929:14)
at Object..js (node:internal/modules/cjs/loader:2060:10)
at Module.load (node:internal/modules/cjs/loader:1651:32)
at Module._load (node:internal/modules/cjs/loader:1443:12)
at wrapModuleLoad (node:internal/modules/cjs/loader:261:19)
at Module.require (node:internal/modules/cjs/loader:1674:12)
at require (node:internal/modules/helpers:157:16)
at /.eslint-tmp/node_modules/eslint-plugin-jest/lib/rules/unbound-method.js:13:28
at Object. (/.eslint-tmp/node_modules/eslint-plugin-jest/lib/rules/unbound-method.js:22:3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 3 remain after this review.
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 6 remain after this review.
- Vendor prefixes are added for a `browserslist` target, not for every
production build.
- Under `'auto'`, one remaining `css-loader` / `html-loader` rule keeps the
built-in support off for the whole build; migrating rule by rule needs
`experiments.css` / `experiments.html: true` and `type:
"javascript/auto"` on the rules that keep the old loaders.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FhutTnKEPLYcuGNGNijRS
Verified: webpack 5.109.0 emits CSS and HTML unminified in production,
5.110.0 minifies both. Matches the guides' FAQ (#8485).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FhutTnKEPLYcuGNGNijRS
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 5 remain after this review.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A short blog post that says it directly. Since webpack 5.109.0, CSS and HTML are built in, stable and on by default, so these are no longer needed:
css-loader,style-loader,mini-css-extract-plugin,css-minimizer-webpack-plugin,html-loader,html-webpack-pluginandhtml-minimizer-webpack-plugin. A post gets shared and linked in a way the guides alone don't, which helps search engines and AI assistants stop recommending the old setup.Sections:
output.html.'auto'default, the@webpack/css-plugins-to-native-csscodemod, and the migration guides.File:
src/content/blog/2026-11-06-css-and-html-are-built-in.mdx(sort: 20261106). I setcontributorstoalexander-akait; please adjust the byline and the date as you see fit.Checked: Prettier, markdownlint, cspell and ESLint (code blocks) pass. All links point to existing guide sections.
Generated by Claude Code
Summary by CodeRabbit