👉 A Idle Detection API permite que aplicações detectem se o usuário está ativo ou inativo (idle), observando sinais como movimento do mouse, clicks e digitação — mesmo quando a aba não está em foco.

⚡️ É útil para otimizar performance (pausando processos pesados), liberar locks colaborativos, ocultar/exibir UI baseado em presença, ou indicar status em chats e dashboards.

⚠️ Por ser uma API sensível à privacidade, ela exige permissão explícita do usuário antes do uso:

const permission = await IdleDetector.requestPermission();
if (permission !== "granted") return;

const idle = new IdleDetector();

idle.addEventListener("change", () => {
  const { userState, screenState } = idle;
  console.log(`${userState} - ${screenState}`);
});

await idle.start({
  threshold: 60_000,
  signal: new AbortController().signal,
});

📋 Os estados possíveis são:

  • userState: active ou idle
  • screenState: locked ou unlocked

✨ A Idle Detection API se parece com a Page Visibility API, mas detecta presença do usuário mesmo sem foco na página.

🧪 O suporte é limitado a Chromium (Chrome, Edge) e a adoção segue baixa. Firefox e Safari não pretendem implementar por preocupações de privacidade. Para casos cross-browser, considere alternativas como detectar inatividade via eventos do DOM (mousemove, keydown) ou o polyfill idle.ts.

LoFM.