vercel/next.js · error
`experimental.cssChunking: false` is only supported with web
Error message
`experimental.cssChunking: false` is only supported with webpack. Please remove the option or run Next.js with webpack in ${configFileName}. What it means
`experimental.cssChunking: false` forces single-chunk-per-module CSS, a webpack-only behavior. Unlike `undefined` (which also resolves to 'off' but is the implicit default and allowed on Turbopack), an explicit `false` is rejected when Turbopack is active. Skipped during `next start`/PHASE_INFO.
Source
Thrown at packages/next/src/server/config.ts:535
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(
`\`experimental.turbopackRustReactCompiler\` is only supported with Turbopack. ` +
`Please remove the option or run Next.js with Turbopack in ${configFileName}.`
)
}
if (
result.experimental.turbopackRustReactCompiler &&
!result.reactCompilerView on GitHub (pinned to 0ae8c72462)
Solutions
- Remove the cssChunking key entirely so it defaults (allowed on Turbopack)
- Run with webpack: `next build --webpack`
- Set it to a Turbopack-compatible value like 'graph'
Example fix
// before
module.exports = { experimental: { cssChunking: false } }
// after
module.exports = {} // omit to use default Defensive patterns
Strategy: validation
Validate before calling
const isTurbopack = Boolean(process.env.TURBOPACK)
if (cssChunking === false && isTurbopack) {
cssChunking = undefined // explicit false is webpack-only on Turbopack
} Prevention
- Use `undefined` (omit the key) to get default behavior on Turbopack instead of explicit false
- Treat explicit cssChunking:false as webpack-only
When it happens
Trigger: Setting `experimental: { cssChunking: false }` (explicit boolean false, not undefined) and running with Turbopack.
Common situations: Explicitly disabling chunking for debugging on a project that later moved to Turbopack. Setting `cssChunking: false` to opt out, not realizing it's webpack-specific.
Related errors
- `experimental.cssChunking: "strict"` is only supported with
- `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/e9b14ff235c9f0af.
Report an issue: GitHub.