PricingGet started

← Docs

Going further

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.

  1. Connect a repository
    Point 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.
  2. Set your commands
    The 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.
  3. Push — or click Deploy
    Every push to your branch ships automatically, and a manual Deploy button is always there. Watch the build live in the deploy log.
  4. Roll back in one click
    Every release is kept. Roll back to any previous one instantly — the same health gate and auto-restore protect the rollback too.
Database migrations without the fear
Run your migration (e.g. prisma migrate deploy) as the release command. Attached databases are snapshotted before it runs, and a failed dump aborts the deploy before anything destructive happens. If the new release then fails its health check, that snapshot is restored — so a broken deploy unwinds the schema change along with the code.
What an app costs
Two flat tiers, set automatically by what the app uses: a front-end with no database services is 15/app/mo; attach a managed Postgres, MySQL or Redis and it's 39/app/mo full-stack, with daily off-site backups of those databases included. Detach every service and it drops back. No usage meters on either tier.

Health-gated deploys, instant rollback, and a managed database — flat per app, no meters.

Node & Next.js hosting →

← All guides