# 2.3.0: Schedules in your time zone, and a pause button

2026-05-19 · https://galley.themes.dev/changelog/v2-3-schedule-time-zones/

> Schedules take an IANA time zone and follow daylight saving. Pause and resume a schedule without a deploy.

## Time zones

Schedules used to run in UTC, which meant a "9 o'clock" report moved by an hour twice a year. A schedule can now name an IANA time zone:

```ts
runnel.schedule({
  name: 'morning-digest',
  cron: '0 9 * * 1-5',
  timezone: 'Europe/London',
  job: sendDigest,
  payload: {},
});
```

When the clocks go forward, a time that does not exist that day (such as 01:30) runs at the next valid minute. When they go back, a repeated time runs once. Schedules without a `timezone` keep running in UTC, so nothing changes until you add one.

## Pause and resume

Every schedule now has a pause button in the dashboard, and the API returns `paused` on each schedule of a job. A paused schedule keeps its definition and resumes at its next tick; it does not catch up on the runs it missed. A deploy does not undo a pause.

## Improved

- The schedules page lists the next five run times, in the schedule's own time zone and in yours.
- Invalid cron expressions are now caught by `runnel deploy`, with the field that is wrong, instead of at the first tick.

## Fixes

- A schedule removed from code was still shown in the dashboard until the next deploy.
