Vercel Schedules replaces Cron Jobs with on-demand scheduling
A public beta lets Vercel apps create, change or cancel one-time and recurring jobs from code, with no redeploy required, while existing Cron Jobs keep working.
Vercel launched Schedules in public beta on 5 November, on every plan. It runs tasks on a recurring cadence or at a single point in time, in production, preview or custom environments, and succeeds Cron Jobs, which keep working unchanged.
Static schedules still live in vercel.json and sync when you deploy, targeting a private function, an HTTP path or a Vercel Queue topic:
{
"schedules": {
"cleanup": {
"schedule": "0 * * * *",
"function": "api/cleanup.ts",
"timezone": "America/New_York"
}
}
}
The new part is dynamic schedules: your running app can create, change or cancel one-time and recurring jobs at runtime through the JS SDK, CLI or API, targeting a Queue topic, with no redeploy. Any schedule, static or dynamic, can be enabled, disabled or run on demand.
Why it matters: if your app needs to schedule its own follow-up work, a reminder, a retry, an agent checking back in later, you no longer need to fake it with a database flag and a wide-open cron sweep. Pro and Enterprise are billed at $5 per million runs and $10 per million creations; Hobby includes 500 creations and 5,000 runs a month.
The caveat: creating a schedule and running it are billed separately, so a pattern that creates and discards many one-off schedules costs more than the run count alone suggests.