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

  1. Run the dev server with webpack instead: `next dev --webpack`.
  2. Reinstall dependencies to fetch the correct native binary: delete node_modules and package-lock/pnpm-lock, then reinstall.
  3. Verify your platform/arch is in the supported list at the URL in the message; if not, use webpack or a supported runtime.
  4. 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

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


AI-assisted analysis of vercel/next.js@0ae8c72462 (2026-08-06). Data as JSON: /api/errors/20912925350b75f3. Report an issue: GitHub.