Skip to main content
PercherPercher

Migrating from Vercel

What works, what needs changes

Most Vercel projects deploy on Percher with minimal changes.

What works out of the box

  • Next.js (Pages Router and App Router)
  • SvelteKit, Remix, Nuxt, Astro
  • Static sites (Vite, React, Vue)
  • API routes (Express, Hono, Fastify)
  • Environment variables
  • Custom domains

What needs changes

Vercel Serverless FunctionsRun as a normal Node.js server (Express/Hono) — no cold starts
Vercel Edge FunctionsNot supported — use standard API routes
Vercel KV / Postgres / BlobUse PocketBase (mode = "pocketbase") or external service
vercel.json rewrites/redirectsHandle in your app code or framework config
Vercel Cron JobsUse [crons] in percher.toml
Vercel AnalyticsUse a third-party analytics service
ISR / On-demand RevalidationWorks — Next.js ISR runs in the container

Steps

# 1. Initialize Percher in your Vercel project
cd my-vercel-app
bunx percher init
# Percher auto-detects Next.js/SvelteKit/etc.

# 2. Add a health endpoint (if missing)
# Next.js: create app/api/health/route.ts
# export function GET() { return Response.json({ status: 'ok' }) }

# 3. Move env vars
bunx percher env set DATABASE_URL=...
bunx percher env set STRIPE_KEY=...

# 4. Deploy
bunx percher publish

# Your app is live at your-app.percher.run
# Add your custom domain: bunx percher domains add myapp.com
PrevMigrating from ConvexNextCustom domains
Migrating from Vercel — Percher docs