They upgraded to Next.js 16.3 and added output: 'standalone' to next.config.ts. The build compiles and generates static pages fine, then fails at "Running onBuildComplete from Vercel" with Error: ENOENT: no such file or directory, open '/vercel/path0/.next/next-server.js.nft.json'. The identical config builds fine on next 16.2.x and passes locally with next build on 16.3. Reproduced on 16.3.0 and 16.3.1-canary.1 with Turbopack on Node 24.
ENOENT .next/next-server.js.nft.json on Vercel with output standalone on Next.js 16.3
The whole-app NFT trace file (.next/next-server.js.nft.json) was emitted on 16.2.x but is skipped on 16.3: PR #93684 added an early return in nextservernft.rs so that when isusingadapter() is true, neither next-server.js.nft.json nor next-minimal-server.js.nft.json is written. But the output:'standalone' finalizer's copyTracedFiles still reads it, and Vercel injects its adapter via NEXTADAPTERPATH, so every Vercel standalone deployment on 16.3 failed. Fix landed in canary via #97287 (the gate was re-scoped to isusingadapter && !is_standalone) and backported to 16.3.x in #98167. Immediate workaround while on an affected 16.3.x: output: process.env.VERCEL ? undefined : 'standalone' (note: no help for adapter-mandatory setups like cdk-nextjs, where there is no config-level escape). Source: https://github.com/vercel/next.js/issues/96646