# Como funciona a Idle Detection API?

> Neste drop falo como a Idle Detection API funciona e como usufruir desse recurso em nossas aplicações web.

- Canonical: https://betomuniz.com/blog/como-funciona-a-idle-detection-api
- Published: 2020-10-07
- Updated: 2026-04-21T17:44:00.000Z
- Language: pt

---

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:

```javascript
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](https://developer.mozilla.org/en-US/docs/Web/API/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](https://github.com/dropbox/idle.ts).
