Packages

node-cron

4.6.0 · 5 Jul 2026ISC5.7M / weekRepositoryHomepagenpmAtom feed

Upgrading node-cron from 4.3.0 to 4.6.0

4 releases in betweenevery note read

0
changes to make
0
advisories fixed
16
new
21
fixes

Release by release

  1. 4.6.0

    5 Jul 20265 new · 19 fixes
    • new

      Add cron.shutdown(timeout?) for graceful process teardown

    • new

      Add unref option for heartbeat timers

    • new

      day-of-month: Quartz-style W, L-n and ? modifiers

    • new

      Emit task:failed when a background daemon exits unexpectedly

  2. 4.5.0

    21 Jun 20268 new · 1 fix
    • new

      lastRun() introspection getter on ScheduledTask: returns { date, result } after a successful execution, { date, error } after a failed one, or null before the first run.

    • new

      Extended day-of-week tokens: <weekday>#<nth> (nth weekday of the month, e.g. 1#1 for the first Monday) and <weekday>L (last weekday of the month, e.g. 5L for the last Friday).

    • new

      Cache Intl.DateTimeFormat instances per timezone instead of rebuilding on every call.

    • new

      Parse the cron expression once per TimeMatcher instead of re-parsing in MatcherWalker.

  3. 4.4.1nothing new or fixed in the note

  4. 4.4.0

    18 Jun 20263 new · 1 fix
    • new

      Distributed run coordination — opt-in distributed: true runs a task on a single instance per fire across a fleet (the #477 use case). Ships a built-in NODE_CRON_RUN env-var default (one designated runner, no dependencies) and a pluggable RunCoordinator (via setRunCoordinator, or the per-task runCoordinator option) for high-availability, per-fire coordination (e.g. a Redis lock). Adds the distributedTtl option and an execution:skipped event carrying a reason ('not-elected' | 'coordinator-error'). Works for inline and background tasks. (#549, closes #477)

    • new

      Task introspection on ScheduledTask: getNextRuns(n) (preview the next N run times), match(date), msToNext(), isBusy(), runsLeft() and getPattern().

    • new

      cron.parse(expression) and cron.validateDetailed(expression) — decompose an expression into its fields, or get every field-level problem (without throwing) for tooling and richer error messages.

    • fixed

      getNextMatch no longer scans every time of day on a day that matches the day-of-month but not the weekday. A dense expression constrained by both (e.g. * * * 15 * 1) could take minutes to resolve; it is now instant.

4 other lines we could not sort, mostly version bumps
  • Replace chai and sinon with native vitest assertions

    4.6.0
  • Renamed internal functions interprete to interpret and appendSeccondExpression to appendSecondExpression.

    4.5.0
  • Rewritten README and package metadata to surface scheduling capabilities (overlap prevention, distributed coordination, background tasks).

    4.5.0
  • Renamed the distributedTtl task option to distributedLease (same meaning: the safety lease, in ms, for lease-based run coordinators). distributedTtl was the only abbreviation in the options API and shipped just days ago in 4.4.0, so it's removed without an alias. If you adopted distributedTtl from 4.4.0, rename it to distributedLease.

    4.4.1

2 internal lines (docs, tests, tooling) left out.