👉 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:activeouidlescreenState:lockedouunlocked
✨ 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.