encore-cron

v2026.09.24

Schedule periodic / recurring work in Encore.ts using `CronJob` from `encore.dev/cron`. Covers `every: "1h"` interval syntax and `schedule: "0 9 * * 1"` cron expressions.

GitHub
Install command
npx skhub add encoredev/encore-cron
Markdown
SKILL.md

Encore Cron Jobs

Instructions

A CronJob declaration in Encore.ts ties a schedule to an existing api(...) endpoint. The endpoint runs at the chosen cadence. Declare the CronJob at package level — not inside a function.

import { CronJob } from "encore.dev/cron";
import { api } from "encore.dev/api";

// 1. The endpoint to call (typically internal: expose: false)
export const aggregateDailyOrders = api(
  { expose: false },
  async (): Promise<void> => {
    // Aggregation logic
  }
);

// 2. Package-level cron declaration
const _ = new CronJob("aggregate-daily-orders", {
  title: "Aggregate orders for the previous day",
  schedule: "0 2 * * *",  // 02:00 UTC every day
  endpoint: aggregateDailyOrders,
});

Schedule Formats

FieldExampleDescription
every"1h", "30m", "6h"Simple interval. Must divide 24h evenly — "7h" is invalid.
schedule"0 9 * * 1"Standard cron expression (5 fields, UTC).

Common cron expressions

CronMeaning
"0 * * * *"Every hour, on the hour
"0 2 * * *"Daily at 02:00 UTC
"0 0 * * 0"Weekly on Sunday at midnight UTC
"0 4 15 * *"04:00 UTC on the 15th of each month

Important behaviour

  • Cron jobs do not execute when running locally with encore run. Only deployed environments fire crons.
  • The cron endpoint should be expose: false so it can't be triggered externally — only the cron scheduler should call it.
  • All times in schedule are UTC. Convert from local time when designing the schedule.
  • The endpoint must already exist at module load — declare it before the CronJob.

Guidelines

  • Use every for "run on a regular interval" (must divide 24h).
  • Use schedule for specific times of day or days of week.
  • Keep endpoint logic idempotent: a cron may fire late or be retried in a redeploy window.
  • For event-driven background work (not time-driven), use the encore-pubsub skill instead.
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Apache-2.0

Source path

encore/cron

Default branch

main

Latest commit

741d95a

Tree SHA

22f4ee3