Docs · Frameworks

Deploy Next.js.

Push a Next.js repo or drop the folder — Canner detects it, runs next build, and serves it as a real Node process. SSR, API routes, middleware, and image optimization work with zero configuration.

Zero config, by design

Detection keys off the next dependency in your package.json. Canner runs your install and build script, then starts the app with next start on the port it assigns. There’s no serverless translation layer: your app is one long-lived Node process, so websockets, streaming responses, and in-memory state all behave exactly like next start on your machine.

Commit your lockfile. Node deploys require package-lock.json (or pnpm/yarn/bun equivalent) so builds are reproducible. If yours is out of sync, run npm install locally and commit the result.

What carries over between builds

.next/cache survives across deploys, so incremental compilation and image-optimization caches persist — second builds are much faster than the first. Dependencies are cached per-lockfile too.

Environment variables

Variables set in the Env Vars tab are present at build time and runtime. Remember Next.js’s own rule: anything the browser needs must be prefixed NEXT_PUBLIC_ and is baked in at build time — change it, then redeploy.

Good to know

  • ISR and revalidate work — the cache lives on local disk with the process.
  • For CMS-driven sites, tag-based response caching can serve pages from Canner’s cache between publishes.
  • output: "standalone" is fine but unnecessary; the default build is what next start expects.
  • Monorepo? Set the project’s root directory in settings to the app’s folder.