Features
L(last day of month) in the day-of-month field — e.g.0 0 12 L * *, leap-year aware, and combinable with explicit days (15,L). (#396, closes #147 — thanks @antonidasyang)missedExecutionToleranceoption (ms, default1000): a heartbeat that wakes a little late still runs its slot instead of being reported as missed. Always capped to the gap to the next slot. (#534, closes #485)startTimeoutoption for background tasks (ms, default5000). (#535)
Fixes
- Rewrote
getNextMatchfor correctness around DST: no more ~1-year overshoot when a daily time falls in the spring-forward gap. (#533, closes #518) - Background task start failures now reject with the real cause (e.g. unsupported TypeScript syntax, missing file) instead of an opaque timeout, and a failed/timed-out start no longer leaves an orphaned daemon running. (#535, closes #484)
- Long-timer drift no longer produces spurious "missed execution" warnings / skipped runs on daily/weekly schedules. (#534, closes #485)
Compatibility
- Supported Node.js is now >= 20 (was >= 20.11), tested on Node 20, 22 and 24. (#538)
Docs
Behavior note
missedExecutionTolerancedefaults to1000ms, so a scheduled run that wakes up to ~1s late now executes instead of emittingexecution:missed. This is a bug-fix improvement, not an API break.
Full Changelog: v4.2.1...v4.3.0