explicit-timer-delay

June 13, 2026 ยท View on GitHub

๐Ÿ“ Enforce or disallow explicit delay argument for setTimeout() and setInterval().

๐Ÿ’ผ This rule is enabled in the following configs: โœ… recommended, โ˜‘๏ธ unopinionated.

๐Ÿ”ง This rule is automatically fixable by the --fix CLI option.

When using setTimeout() or setInterval(), the delay parameter is optional and defaults to 0. This rule allows you to enforce whether the delay argument should always be explicitly provided or omitted when it's 0.

Examples

// โŒ
setTimeout(() => console.log('Hello'));

// โœ…
setTimeout(() => console.log('Hello'), 0);
// โŒ
setInterval(callback);

// โœ…
setInterval(callback, 0);
// โŒ
window.setTimeout(() => console.log('Hello'));

// โœ…
window.setTimeout(() => console.log('Hello'), 0);
// โŒ
globalThis.setInterval(callback);

// โœ…
globalThis.setInterval(callback, 0);
// โœ…
setTimeout(() => console.log('Hello'), 1000);
setInterval(callback, 100);

Options

Type: string
Default: 'always'

  • 'always' (default)
    • Require explicit delay argument for clarity.
  • 'never'
    • Disallow explicit 0 delay, prefer implicit default. Non-zero delays are still allowed.

'never'

{
	'unicorn/explicit-timer-delay': ['error', 'never']
}
// โŒ
setTimeout(() => console.log('Hello'), 0);

// โœ…
setTimeout(() => console.log('Hello'));
// โŒ
setInterval(callback, 0);

// โœ…
setInterval(callback);
// โŒ
window.setTimeout(() => console.log('Hello'), 0);

// โœ…
window.setTimeout(() => console.log('Hello'));
// โŒ
globalThis.setInterval(callback, 0);

// โœ…
globalThis.setInterval(callback);
// โœ…
setTimeout(() => console.log('Hello'), 1000);
globalThis.setInterval(callback, 100);