Skip to main content
Migration

Migrate from Vercel

Translate a Vercel application and deployment workflow to Easel.

Vercel and Easel share a Git-based Preview and Production workflow, and most concepts map one to one. Follow the migration phases and use this page to translate each Vercel feature.

Concept mapping

VercelEasel
ProjectProject
Preview deploymentPreview deployment
Production deploymentProduction deployment
Current production deploymentCurrent Production deployment
Instant RollbackPromote and roll back
Generated deployment URLUnique deployment URL
Branch URLBranch preview URL
Environment variablesEnvironment variables (Preview and Production)
FunctionsFunctions
Data CacheRuntime Cache
ISR and on-demand revalidationRevalidation
Image OptimizationImage optimization
Firewall custom rulesFirewall custom rules
Attack Challenge ModeAttack challenge mode
Deployment ProtectionDeployment protection (workspace sign-in)
Observability and LogsObservability
DomainsDomains
QueuesQueues (@vercel/queue, push and poll consumers)
Cron JobsNot supported; use an external scheduler
Log DrainsNot available yet
Blob, KV, Postgres, and Marketplace storageKeep the external service, or replace it

Translate configuration

Build settings

Copy the framework preset, root directory, install and build commands, Node.js version, and production branch into the Easel project, then compare them with what Easel detects. See Build configuration.

vercel.json

Redirects, rewrites, and headers in vercel.json carry over, and the new project screen reports how many it found. Crons in vercel.json aren't supported. Verify any other field before relying on it, and prefer framework-native configuration such as next.config where your framework supports it.

Environment variables

Recreate Preview and Production values, including public prefixes such as NEXT_PUBLIC_ and any branch-specific values. Changes apply to new deployments, so redeploy after you add them. See Environment variables.

Runtime differences

  • Functions: compare duration, memory, streaming, after and waitUntil, and filesystem assumptions with Functions runtime and Function limits.
  • Region: check the function region against your Vercel function region and your database's location.
  • Cron and background work: call a protected HTTP route from an external scheduler, or move the job to Queues, which runs @vercel/queue consumers unchanged. For work after the response, see Background work.
  • Runtime Cache: getCache() and 'use cache: remote' work without code changes and use the same cache scope as Vercel: per project and environment on Pro, per team and environment on Hobby. Entries don't carry over, so the cache starts empty.
  • Storage: Easel doesn't provision Vercel Blob, KV, Postgres, or Marketplace integrations. Keep each as an external service with its credentials in your environment variables, or replace it.

Next steps