vercel/next.js · error
`experimental.cssChunking: "strict"` is only supported with
Error message
`experimental.cssChunking: "strict"` is only supported with webpack. Please remove the option or run Next.js with webpack in ${configFileName}. What it means
`experimental.cssChunking: "strict"` is a webpack-only strategy. If the resolved mode is 'strict' and Turbopack is active, normalization throws. Skipped during `next start` and PHASE_INFO. This is the mirror of the graph-mode Turbopack-only constraint.
Source
Thrown at packages/next/src/server/config.ts:527
`Please remove the "functions" property from your sassOptions in ${configFileName}.`
)
}
// Validate experimental.cssChunking compatibility with the active bundler. Graph mode is
// Turbopack-only; strict mode and `false` (single-chunk-per-module) are webpack-only.
// Only validate during build/dev — `next start` doesn't pick a bundler and would otherwise
// see `process.env.TURBOPACK` unset and reject a valid `cssChunking: "graph"` config.
if (phase !== PHASE_PRODUCTION_SERVER && phase !== PHASE_INFO) {
const cssChunkingValue = result.experimental.cssChunking
const cssChunkingMode = resolveCssChunkingMode(cssChunkingValue)
if (cssChunkingMode === 'graph' && !process.env.TURBOPACK) {
throw new Error(
`\`experimental.cssChunking: "graph"\` is only supported with Turbopack. ` +
`Please remove the option or run Next.js with Turbopack in ${configFileName}.`
)
}
if (cssChunkingMode === 'strict' && process.env.TURBOPACK) {
throw new Error(
`\`experimental.cssChunking: "strict"\` is only supported with webpack. ` +
`Please remove the option or run Next.js with webpack in ${configFileName}.`
)
}
// Only error when `false` was set explicitly. `undefined` (the default) also resolves to
// `'off'` but that's the implicit default and must not error on Turbopack.
if (cssChunkingValue === false && process.env.TURBOPACK) {
throw new Error(
`\`experimental.cssChunking: false\` is only supported with webpack. ` +
`Please remove the option or run Next.js with webpack in ${configFileName}.`
)
}
if (
result.experimental.turbopackRustReactCompiler &&
!process.env.TURBOPACK
) {
throw new Error(View on GitHub (pinned to 0ae8c72462)
Solutions
- Run with webpack: `next build --webpack`
- Remove the cssChunking option (let it default) or set it to a Turbopack-supported value like 'graph'
Example fix
// before
// next build (Turbopack)
module.exports = { experimental: { cssChunking: 'strict' } }
// after (option A)
module.exports = { experimental: { cssChunking: 'graph' } }
// after (option B)
module.exports = {}
// run: next build --webpack Defensive patterns
Strategy: validation
Validate before calling
const isTurbopack = Boolean(process.env.TURBOPACK)
if (cssChunking === 'strict' && isTurbopack) {
cssChunking = undefined // or switch to webpack
} Prevention
- Conditionally set cssChunking based on the bundler
- Avoid sharing one cssChunking value across webpack and Turbopack projects
When it happens
Trigger: Setting `experimental: { cssChunking: 'strict' }` and running `next dev`/`next build` with Turbopack (the default bundler).
Common situations: Copying a webpack-era cssChunking config into a project now on Turbopack. Sharing a config file between webpack and Turbopack branches.
Related errors
- `experimental.cssChunking: false` is only supported with web
- `experimental.cssChunking: "graph"` is only supported with T
- `experimental.turbopackRustReactCompiler` is only supported
- `forbidden()` is experimental and only allowed to be enabled
- `unauthorized()` is experimental and only allowed to be used
AI-assisted analysis of vercel/next.js@0ae8c72462 (2026-08-06).
Data as JSON: /api/errors/08850e068eb45660.
Report an issue: GitHub.