Next.js is not a simple static site generator. With Server Components, API routes, middleware, ISR, and edge functions, a Next.js app is a full-stack application that demands a full-stack deployment strategy. A misconfigured pipeline can silently break ISR revalidation, serve stale pages, or fail to propagate environment variables to server-side code.
The standalone output mode introduced in Next.js 13+ changed the deployment story significantly. Your pipeline needs to produce a minimal .next/standalone bundle, copy the public and .next/static directories correctly, and handle the sharp image optimization binary for your target architecture. Getting any of these wrong results in broken images, missing assets, or bloated Docker images.
Preview deployments add another layer of complexity. Every pull request should spin up an isolated environment with its own database seed and environment variables, so reviewers can test changes end-to-end before merging. Without automation, this process is manual and error-prone.