Deploy a Node or Next.js app
Getting a Node.js or Next.js app live — and shipping every change after that with a safety net. The short version: connect a repository, push, and we build in isolation, run your release step, and only swap the new release in once it passes a health check. A bad deploy rolls itself back.
Every deploy runs the same pipeline: build → release → start. The build happens in a throwaway, network-isolated container and produces an immutable release image. Your release command (a database migration, for example) runs next — and if the app has databases attached, we snapshot them first. Then the new release has to pass a health check on your health path before it takes any traffic; if it fails, the previous image, env, and that database snapshot are restored automatically.
The static preset skips the runtime entirely: your site builds in the same isolated sandbox (env vars are injected at build time, where NEXT_PUBLIC_-style values bind), and the output directory is published as plain files served straight from the edge. Releases swap atomically and a bad build can never replace the currently-served one — rollback is instant. A static app is always the Front tier.
- Connect a repositoryPoint us at a GitHub, GitLab, Bitbucket, or Codeberg repo — connect the GitHub app for push-to-deploy, or use a read-only deploy key. Pick a preset — Next.js, a custom service, or a static site — and a branch.
- Set your commandsThe Deploy configuration card on the app's Overview shows the build, release, and start commands — view and edit them anytime; changes apply on the next deploy. On the Next.js preset the start command is managed for you.
- Push — or click DeployEvery push to your branch ships automatically, and a manual Deploy button is always there. Watch the build live in the deploy log.
- Roll back in one clickEvery release is kept. Roll back to any previous one instantly — the same health gate and auto-restore protect the rollback too.
Health-gated deploys, instant rollback, and a managed database — flat per app, no meters.
Node & Next.js hosting →