Dynamic imports are automatically split into separate chunks:
import { setup } from './core'
const admin = await import('./admin')Produces:
app-5e6f7a8b.js 42 KB (entry)
app-admin-c3d4e5f6.js 86 KB (async)
manifest.json 3 entriesShared modules between chunks are extracted into common chunks to avoid duplication.
Disable with code_splitting: false in config or --no-code-splitting flag.
Manual Chunks
Control chunk boundaries explicitly:
config :volt,
chunks: %{
"vendor" => ["vue", "vue-router", "pinia"],
"ui" => ["assets/src/components"]
}Bare specifiers match package names in node_modules. Path patterns match by directory prefix. Manual chunks work alongside automatic dynamic-import splitting.