
Security News
Vite Releases Technical Preview of Rolldown-Vite, a Rust-Based Bundler
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
react-idle-timer
Advanced tools
The react-idle-timer package is a React component that helps you detect and manage idle state in your application. It allows you to perform actions based on user inactivity, such as logging out the user, showing a warning message, or triggering any other custom behavior.
Detecting Idle State
This feature allows you to detect when the user becomes idle. The `useIdleTimer` hook is used to set a timeout (in this case, 15 minutes) and a callback function (`handleOnIdle`) that gets called when the user is idle.
import React from 'react';
import { useIdleTimer } from 'react-idle-timer';
const App = () => {
const handleOnIdle = () => {
console.log('User is idle');
};
const { getRemainingTime, getLastActiveTime } = useIdleTimer({
timeout: 1000 * 60 * 15,
onIdle: handleOnIdle,
debounce: 500
});
return (
<div>
<p>Remaining time: {getRemainingTime()}</p>
<p>Last active time: {getLastActiveTime()}</p>
</div>
);
};
export default App;
Resetting Idle Timer
This feature allows you to manually reset the idle timer. The `reset` function from the `useIdleTimer` hook can be called to reset the timer, for example, when a user performs a specific action like clicking a button.
import React from 'react';
import { useIdleTimer } from 'react-idle-timer';
const App = () => {
const { reset } = useIdleTimer({
timeout: 1000 * 60 * 15,
onIdle: () => console.log('User is idle'),
debounce: 500
});
return (
<div>
<button onClick={reset}>Reset Timer</button>
</div>
);
};
export default App;
Pausing and Resuming Idle Timer
This feature allows you to pause and resume the idle timer. The `pause` and `resume` functions from the `useIdleTimer` hook can be used to control the timer based on specific user actions.
import React from 'react';
import { useIdleTimer } from 'react-idle-timer';
const App = () => {
const { pause, resume } = useIdleTimer({
timeout: 1000 * 60 * 15,
onIdle: () => console.log('User is idle'),
debounce: 500
});
return (
<div>
<button onClick={pause}>Pause Timer</button>
<button onClick={resume}>Resume Timer</button>
</div>
);
};
export default App;
The idle-js package is a lightweight JavaScript library for detecting user inactivity. It provides similar functionality to react-idle-timer but is not specifically designed for React. It can be used in any JavaScript application to detect idle state and perform actions based on user inactivity.
The react-idle package is another React component for detecting user inactivity. It offers similar features to react-idle-timer, such as detecting idle state and performing actions based on user inactivity. However, it may have a different API and set of features compared to react-idle-timer.
ā”ļø Support for React 16
š Support for Isomorphic React
Version 4.1.0
brings two of the most requested features to IdleTimer
:
āļø You can now use IdleTimer
as a generic activity monitor via the new onAction
event handler. We recommend using one of the built in debounce
or throttle
properties if you dont need every single update. It really improves performance.
āļø Added a property stopOnIdle
that allows developer intervention between the idle and active states. Good for waiting for an async task to complete before restarting the IdleTimer
. If this option is set, you will have to call reset()
manually to restart IdleTimer
.
For the full patch notes please refer to the CHANGELOG
yarn add react-idle-timer
or
npm install react-idle-timer --save
Run
yarn example
to build and run the exampleexample
. The example is a create-react-app project. IdleTimer is implemented in the App Component.
import React, { Component } from 'react'
import IdleTimer from 'react-idle-timer'
import App from './App'
export default class YourApp extends Component {
constructor(props) {
super(props)
this.idleTimer = null
this.onAction = this._onAction.bind(this)
this.onActive = this._onActive.bind(this)
this.onIdle = this._onIdle.bind(this)
}
render() {
return (
<div>
<IdleTimer
ref={ref => { this.idleTimer = ref }}
element={document}
onActive={this.onActive}
onIdle={this.onIdle}
onAction={this.onAction}
debounce={250}
timeout={1000 * 60 * 15} />
{/* your app here */}
</div>
)
}
_onAction(e) {
console.log('user did something', e)
}
_onActive(e) {
console.log('user is active', e)
console.log('time remaining', this.idleTimer.getRemainingTime())
}
_onIdle(e) {
console.log('user is idle', e)
console.log('last active', this.idleTimer.getLastActiveTime())
}
}
There are a few breaking changes in version 4:
IdleTimer
. Unless you are really good with shouldComponentUpdate
you should avoid using IdleTimer
as a wrapper component.startOnLoad
has been renamed to startOnMount
in order to make more sense in a React context.activeAction
has been renamed to onActive
.idleAction
has been renamed to onIdle
.To build the source code generated html docs run
yarn docs
and opendocs/index.html
in any browser. A markdown version is available here.
These events are bound by default:
onActive
function with delay in milliseconds. Defaults to 0
. Cannot be set if throttle
is set.onActive
function with delay in milliseconds. Defaults to 0
. Cannot be set if debounce
is set.true
. Set to false
to wait for user action before starting timer.false
. If set to true you will need to manually call reset()
to restart the timer.true
.true
.Timestamp
the user was last active4.1.1
onIdle
event was not firing when stopOnIdle
is setFAQs
Activity detection for React.js
The npm package react-idle-timer receives a total of 704,151 weekly downloads. As such, react-idle-timer popularity was classified as popular.
We found that react-idle-timer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago.Ā It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
Research
Security News
A malicious npm typosquat uses remote commands to silently delete entire project directories after a single mistyped install.
Research
Security News
Malicious PyPI package semantic-types steals Solana private keys via transitive dependency installs using monkey patching and blockchain exfiltration.