Skip to content

Migrate from Vercel

Moving from Vercel to Stackpad is straightforward. This guide walks you through the differences and what to change.

What stays the same

  • Git push to deploy — both platforms deploy on push to your branch
  • Framework detection — Stackpad auto-detects Next.js, Remix, Astro, Nuxt, and more
  • Environment variables — same concept, set in the dashboard
  • Custom domains — add a CNAME or A record, get automatic HTTPS
  • Preview deployments — branch-based previews with unique URLs

What’s different

FeatureVercelStackpad
InfrastructureAWS (US-based)Hetzner (EU-based)
GDPRUS company, EU region optionalEU company, EU-only infrastructure
DatabasesSeparate product (Vercel Postgres)Built-in as project services
CachingSeparate product (Vercel KV)Built-in Redis/Valkey services
Private networkingNot availableAutomatic between project services
PricingPer-function invocationFixed monthly + resource-based
Serverless functionsYes (edge + Node)No — full Node.js server
Edge runtimeYesNo
CDNGlobal edge networkSingle European region

Step-by-step migration

1. Prepare your Next.js app

Add standalone output if you haven’t already:

next.config.js
const nextConfig = {
output: 'standalone',
};
export default nextConfig;

2. Move environment variables

Export your environment variables from Vercel:

  1. Go to your Vercel project → Settings → Environment Variables
  2. Note all variables and their values

Set them in Stackpad:

  1. Create a project on Stackpad
  2. Go to Environment Variables
  3. Use Paste .env to import them in bulk

3. Set up your database

If you’re using Vercel Postgres:

  1. Add a PostgreSQL service to your Stackpad project
  2. Stackpad auto-injects DATABASE_URL
  3. Redeploy your app

The DATABASE_URL format is standard PostgreSQL — compatible with Prisma, Drizzle, and any other ORM.

If you’re using an external database (like Supabase or PlanetScale), just update the connection string in your Stackpad environment variables.

4. Deploy

  1. Connect your GitHub repo to Stackpad
  2. Push to your branch
  3. Stackpad builds and deploys

5. Switch your domain

  1. Add your custom domain in Stackpad
  2. Update your DNS records to point to Stackpad (CNAME for subdomains, A for root)
  3. Stackpad provisions an HTTPS certificate automatically
  4. Remove the domain from Vercel

Things to watch out for

No serverless functions

Stackpad runs your Next.js app as a regular Node.js server, not as serverless functions. This means:

  • No cold starts — your app is always running
  • No per-invocation pricing — fixed resource allocation
  • No edge runtime — all requests go to your European server
  • API routes work normally — they run in the same Node.js process

No ISR with on-demand revalidation via external API

Next.js Incremental Static Regeneration works for time-based revalidation. On-demand revalidation via API routes works too, since they run in the same server process.

No Vercel-specific features

Remove or replace usage of:

  • @vercel/analytics — use Plausible or Umami (available as Stackpad templates)
  • @vercel/speed-insights — remove or use an alternative
  • @vercel/og — use satori directly for OG image generation
  • @vercel/blob — use MinIO (available as a Stackpad template) or S3-compatible storage

What’s next?