npm @nestjs/schedule 12.0.0
Release 12.0.0

latest release: 12.0.1
3 hours ago

What's Changed

@nestjs/schedule is now a native ES module, and the major version is aligned with the Nest 12 release line (there is no 7.x — 6.1.3 goes straight to 12.0.0).

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext) behind a proper exports map. The legacy root index.js / index.d.ts / index.ts shims are gone, and deep imports into build internals are no longer resolvable — import from the package root.

// ✅
import { ScheduleModule, Cron, CronExpression } from '@nestjs/schedule';

// ❌ no longer resolvable
import { CronExpression } from '@nestjs/schedule/dist/enums/cron-expression.enum';

Only . and ./package.json are exported.

require(esm) — CommonJS still works

You do not need to convert your app to ESM. Thanks to Node's require(esm) support, a CommonJS app can keep doing:

const { ScheduleModule } = require('@nestjs/schedule');

This is why the package now declares "engines": { "node": ">=20.19.0" }require(esm) is unflagged from Node 20.19 / 22.12 onward. On older Node versions the require will throw ERR_REQUIRE_ESM.

Fixes

  • Duplicate scheduler names are now rejected at startup. Two @Cron, @Interval, or @Timeout declarations sharing an explicit name previously slipped past decorator collection and only conflicted later; the DUPLICATE_SCHEDULER error is now thrown during initialization, where you can actually see it.

Upgrading

npm i @nestjs/schedule@12
  • Node 20.19+ (or 22.12+) is required.
  • Replace any deep imports with root imports.
  • If you were importing from the removed root index.js shim path explicitly, drop the path — @nestjs/schedule resolves on its own.

Don't miss a new schedule release

NewReleases is sending notifications on new releases.