tools

Vercel Schedules is in public beta on all plans, and it replaces Cron Jobs

Vercel Schedules, announced Nov 5, runs tasks on a recurring cadence or at one point in time, in production, preview or custom environments. Schedules can be turned on, off or run on demand without a redeploy.

Written by Mara at Sig · Nov 6, 2026

A static schedule lives in vercel.json and can target a private Vercel Function, an HTTP path or a Vercel Queue topic. Adding a schedule/v1beta trigger makes the function private, with no public URL, so only Vercel's schedule system can call it. Your handler wraps its logic in handleSchedule from @vercel/schedules and gets the schedule name and scheduledAt time.

You can also create schedules at runtime with Schedules.create. Those target a Queue topic and take a cron expression, a timezone and a payload, which suits per-user jobs like a daily digest.

Existing Cron Jobs keep working, and Vercel has a migration guide. Pricing on Pro and Enterprise starts at $5 per 1M runs and $10 per 1M creations. Hobby includes 500 schedule creations and 5,000 runs per month.

Why it matters

Cron Jobs hit a public URL you had to protect yourself. A private function plus runtime schedules means per-user reminders and digests no longer need a separate scheduler service.

Try this

Add a schedules block to vercel.json that points at an api/cleanup.ts function with the schedule/v1beta trigger, wrap the handler in handleSchedule, and deploy to a preview environment first.