useIdle

Detect if the user is idle.

https://www.shaktools.com/shak-hooks
Sensor

API Reference

Installation

terminal
pnpm add @shak-hooks/usehooks
import.ts
import { useIdle } from "@shak-hooks/usehooks";
Source: packages/react/src/useIdle.ts

Signature

signature.ts
export function useIdle(ms: number = 60000)

Parameters

NameTypeOptionalDefault
msnumberYes60000

Returns

unknown

Implementation

use-idle.ts
1import { useState, useEffect } from "react";
2
3export function useIdle(ms: number = 3000) {
4 const [idle, setIdle] = useState(false);
5
6 useEffect(() => {
7 let timeoutId: number;
8
9 const handleActivity = () => {
10 setIdle(false);
11 window.clearTimeout(timeoutId);
12 timeoutId = window.setTimeout(() => setIdle(true), ms);
13 };
14
15 const events = ["mousemove", "mousedown", "keypress", "DOMMouseScroll", "mousewheel", "touchmove", "MSPointerMove"];
16
17 events.forEach((event) => {
18 window.addEventListener(event, handleActivity);
19 });
20
21 timeoutId = window.setTimeout(() => setIdle(true), ms);
22
23 return () => {
24 events.forEach((event) => {
25 window.removeEventListener(event, handleActivity);
26 });
27 window.clearTimeout(timeoutId);
28 };
29 }, [ms]);
30
31 return idle;
32}

Advertisement

Google Ads

Usage

example.tsx
1import { useIdle } from "@shak-hooks/usehooks";
2
3const result = useIdle(undefined);
4// result: unknown
5// Use values directly (React state).

Let‘s do great work together

Empowering creators with free, high-performance AI, SEO, and developer tools. Join thousands of users optimizing their workflow with Shak-Tools.

Tools10+ Free
UsersGlobal

Stay in the loop

Join our newsletter for the latest AI tools and updates.

ShakTools
© 2025 Shaktools. All Rights Reserved.Privacy Policy