vercel/next.js · critical
Turbopack is not supported on this platform (${process.platf
Error message
Turbopack is not supported on this platform (${process.platform}/${process.arch}) because native bindings are not available. Only WebAssembly (WASM) bindings were loaded, and Turbopack requires native bindings.
To use Next.js on this platform, use Webpack instead:
next dev --webpack
For more information, see: https://nextjs.org/docs/app/api-reference/turbopack#supported-platforms What it means
Thrown during Turbopack hot-reloader creation when getBindingsSync() returns WASM-only bindings (bindings.isWasm is true). Turbopack is a native Rust bundler and cannot run on the WASM fallback; Next.js detects this early in createHotReloaderTurbopack and aborts with an actionable message pointing to webpack. This happens at dev-server startup, before any request is served.
Source
Thrown at packages/next/src/server/dev/hot-reloader-turbopack.ts:378
export async function createHotReloaderTurbopack(
opts: SetupOpts & { isSrcDir: boolean },
serverFields: ServerFields,
distDir: string,
resetFetch: () => void,
lockfile: Lockfile | undefined,
serverFastRefresh?: boolean
): Promise<NextJsHotReloaderInterface> {
const dev = true
const buildId = 'development'
const { nextConfig, dir: projectPath } = opts
const bindings = getBindingsSync()
// Turbopack requires native bindings and cannot run with WASM bindings.
// Detect this early and give a clear, actionable error message.
if (bindings.isWasm) {
throw new Error(
`Turbopack is not supported on this platform (${process.platform}/${process.arch}) because native bindings are not available. ` +
`Only WebAssembly (WASM) bindings were loaded, and Turbopack requires native bindings.\n\n` +
`To use Next.js on this platform, use Webpack instead:\n` +
` next dev --webpack\n\n` +
`For more information, see: https://nextjs.org/docs/app/api-reference/turbopack#supported-platforms`
)
}
// For the debugging purpose, check if createNext or equivalent next instance setup in test cases
// works correctly. Normally `run-test` hides output so only will be visible when `--debug` flag is used.
if (isTestMode) {
;(require('console') as typeof import('console')).log(
'Creating turbopack project',
{
dir: projectPath,
testMode: isTestMode,
}
)View on GitHub (pinned to 0ae8c72462)
Solutions
- Run the dev server with webpack instead: `next dev --webpack`.
- Reinstall dependencies to fetch the correct native binary: delete node_modules and package-lock/pnpm-lock, then reinstall.
- Verify your platform/arch is in the supported list at the URL in the message; if not, use webpack or a supported runtime.
- On alpine/musl, switch to a glibc-based image or install the musl-compatible native binary if available.
Example fix
# before (fails: only WASM bindings present) next dev # after next dev --webpack
Defensive patterns
Strategy: fallback
Validate before calling
// Decide at runtime whether to use Turbopack or fall back to webpack
import { getBindingsSync } from '@next/swc'
function pickBundlerFlag(): string[] {
try {
const b = getBindingsSync()
if (b.isWasm) return ['--webpack'] // Turbopack unusable; fall back
} catch {}
return [] // native bindings present, Turbopack OK
} Prevention
- Pin a supported platform/arch for production.
- Verify native @next/swc binary installs (no MODULE_NOT_FOUND) after install.
- Keep `next dev --webpack` documented as the escape hatch for unsupported platforms.
When it happens
Trigger: Running `next dev` (Turbopack, the default) on a platform/arch combination for which no native @next/swc binary is published, so the install fell back to the WASM bindings. Detected via bindings.isWasm in createHotReloaderTurbopack.
Common situations: Running on an unusual architecture (e.g. some non-x64/arm64 setups), an alpine/musl variant without the right native binary, or a locked-down environment that stripped the native .node binary. A pnpm/npm install that failed to fetch the platform-specific optionalDependency and silently installed the wasm package instead.
Related errors
- Pass either `webpack` or `turbopack`, not both.
- Only custom servers can pass `webpack`, `turbo`, or `turbopa
- Default export is missing in {resource_path}
- Attempted to call the default export of {server_module_path}
- Attempted to call {export_name}() from the server but {expor
AI-assisted analysis of vercel/next.js@0ae8c72462 (2026-08-06).
Data as JSON: /api/errors/20912925350b75f3.
Report an issue: GitHub.