- User visibility (tab active/inactive)
- Window focus state (window focused/blurred)
- optional:
- Mouse interactions (clicks, movement)
- Keyboard input
- Touch events
- Scrolling
npm install use-user-presence
# or
pnpm add use-user-presence
import { useUserPresence } from "use-user-presence";
function UserPresent() {
const { isPresent } = useUserPresence();
return (
<div>
{isPresent ? (
<span>Present</span>
) : (
<span>Away</span>
)}
</div>
);
}
To activate user interaction tracking, set some number in inactivityTimeoutMs
parameter when initializing the presence hook:
import { useUserPresence } from "use-user-presence";
function UserPresent() {
const { isPresent } = useUserPresence({
inactivityTimeoutMs: 60000 // 1 minute
});
return (
<div>
{isPresent ? (
<span>Present</span>
) : (
<span>Away</span>
)}
</div>
);
}