ViteHub

Schedule

Define recurring cron work for Vite and Nitro apps.

@vitehub/schedule defines recurring cron schedules that can run in Vite and Nitro apps. A Schedule Definition keeps the cron expression and handler together so provider output can discover it.

Use Schedule when an app needs named recurring work such as daily reports, cleanup jobs, or provider-triggered maintenance tasks.

server/schedules/daily-report.ts
import { defineSchedule } from '@vitehub/schedule'

export default defineSchedule({
  cron: '0 9 * * *',
  handler: async (context) => {
    console.log(`Run daily report at ${context.scheduledAt.toISOString()}`)
  },
})

The discovered Schedule name comes from the file path. For example, server/schedules/daily-report.ts is discovered as daily-report.

What Schedule Owns

Schedule definitions

Keep recurring cron handlers in defineSchedule().

Provider output

Emit Cloudflare and Vercel cron output from discovered definitions.

Runtime runner

Execute Runtime Schedules from one self-hosted process.

Start Here

Quickstart
Register Schedule and define a first cron handler.
Basic Runner
Start the self-hosted runner for Runtime Schedules.
Boundaries
Review runner limits and current scheduling non-goals.
Copyright © 2026