ScheduleModule

Enables cron jobs, intervals, and timeouts via declarative decorators.

Since NestJS 10/11 Spec ↗

Syntax

ScheduleModule.forRoot() | @Cron(expr) | @Interval(ms) | @Timeout(ms)

Parameters

NameTypeRequiredDescription
expr string | CronExpression No A cron expression for @Cron scheduling.

Returns

DynamicModule — A module enabling the scheduler registry.

Examples

import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';

@Module({ imports: [ScheduleModule.forRoot()] })
export class AppModule {}
import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression, Interval } from '@nestjs/schedule';

@Injectable()
export class TasksService {
  private log = new Logger(TasksService.name);

  @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
  nightly() {
    this.log.log('Running nightly job');
  }

  @Interval(10_000)
  heartbeat() {
    this.log.debug('tick');
  }
}

Notes

Install @nestjs/schedule. Jobs run in the app process, so use a distributed lock or queue for multi-instance deployments. Manage jobs dynamically through SchedulerRegistry.