Migrate from Vercel cron
Import vercel.json cron entries into a SteadyCron manifest with a single command — remove Vercel's once-per-day and UTC-only restrictions.
Vercel’s hobby plan limits cron jobs to once per day in UTC. Even on paid plans, schedules are
tied to vercel.json — changing them requires a redeploy, there are no retries, and logs are
thin with no alerting.
steadycron import vercel converts your vercel.json cron entries into a SteadyCron manifest
in one command.
Quick start
# 1. Generate the manifest (reads vercel.json in the current directory)
steadycron import vercel \
--base-url https://app.example.com \
--cron-secret-env CRON_SECRET \
-o steadycron.yaml
# 2. Review and validate
steadycron validate steadycron.yaml
# 3. Set the secret and apply
echo "CRON_SECRET=your-secret-here" > secrets.env
steadycron apply steadycron.yaml --env-file secrets.env --namespace prod
How it works
The importer reads vercel.json (or a path you supply as the first argument) and emits one
http GET job per cron entry, with the full URL built from --base-url + path and
timezone: UTC.
--cron-secret-env NAME — instead of inlining the secret value, the manifest emits:
headers:
Authorization: Bearer ${CRON_SECRET}
The ${…} placeholder is resolved at sync/apply time via --env-file or the process
environment. The manifest itself never contains the secret.
--dry-run — preview what would be generated without writing a file.
After migrating
Once SteadyCron is handling a job, remove (or comment out) the corresponding entry from
vercel.json and redeploy — this prevents double-firing the same endpoint.
After that, tighten your schedules and set per-job timezones — both are capabilities Vercel doesn’t expose.
What you gain
| Vercel cron | SteadyCron | |
|---|---|---|
| Minimum interval | Once per day (hobby) | Configurable (by plan) |
| Timezone | UTC only | Per-job, DST-aware |
| Retries on failure | None | Yes — configurable |
| Timeout enforcement | None | Yes — per job |
| Heartbeat monitoring | No | Yes |
| Alerting | No | Email, Slack, Discord, Telegram, webhook |
| Change schedule | Edit vercel.json + redeploy | Dashboard, CLI, or YAML — no redeploy |
| Execution log | Platform logs, ephemeral | Per-run status, body, duration |
Next steps
- YAML & CLI — full CLI reference
- CI/CD setup — plan on PR, apply on merge
- Heartbeat monitoring — monitor server-side scripts too