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
| Vercel | Easel |
|---|---|
| Project | Project |
| Preview deployment | Preview deployment |
| Production deployment | Production deployment |
| Current production deployment | Current Production deployment |
| Instant Rollback | Promote and roll back |
| Generated deployment URL | Unique deployment URL |
| Branch URL | Branch preview URL |
| Environment variables | Environment variables (Preview and Production) |
| Functions | Functions |
| Data Cache | Runtime Cache |
| ISR and on-demand revalidation | Revalidation |
| Image Optimization | Image optimization |
| Firewall custom rules | Firewall custom rules |
| Attack Challenge Mode | Attack challenge mode |
| Deployment Protection | Deployment protection (workspace sign-in) |
| Observability and Logs | Observability |
| Domains | Domains |
| Queues | Queues (@vercel/queue, push and poll consumers) |
| Cron Jobs | Not supported; use an external scheduler |
| Log Drains | Not available yet |
| Blob, KV, Postgres, and Marketplace storage | Keep 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,
afterandwaitUntil, 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/queueconsumers 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.