Skip to main content
Percher is still being built and account creation is paused — get notified when it opens.

Migrating from Vercel

What works, what needs changes

Ask your agent
Plan how to move my app from Vercel to Percher. Check functions, cron jobs, storage, environment variables, and domains first; keep Vercel live until I approve the cutover.Read the guide at percher.app/docs/migrate-vercel
Check what needs changing to move my app from Vercel to Percher.Read the guide at percher.app/docs/migrate-vercel
How it works, with exact details

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. Paid apps stay running; Free apps sleep after 20 idle minutes.
Vercel Edge FunctionsNot supported — use standard API routes
Vercel KV / Postgres / BlobUse PocketBase (mode = "pocketbase") or external service
vercel.json rewrites/redirectsRun percher import, then review the generated rules
Vercel Cron JobsUse [crons] in percher.toml
Vercel AnalyticsUse Percher's built-in cookie-free analytics, or keep a product analytics service
ISR / On-demand RevalidationWorks — Next.js ISR runs in the container

Steps

# 1. Import supported Vercel settings, then initialize if needed
cd my-vercel-app
bunx percher import
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