
Security News
Meet Socket at Black Hat Europe and BSides London 2025
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.
raf-plus is the same as window.requestAnimationFrame but better, which will only invokes the passed function at most once per animation frame.
The
window.requestAnimationFramemethod tells the browser that you wish to perform an animation and requests that the browser call a specified function to update an animation before the next repaint.
-- MDN
However, it does not manage the queue. For example:
const heavyAnimation = () => {
// A animation function with heavy operations
}
document.addEventListener('scroll', e => requestAnimation(heavyAnimation), false)
The scroll event may fire more than once within one frame, so the heavyAnimation function may be called more than once before next repaint, but repetitively call heavyAnimation at one animation frame is unnecessary and waste of resources!!!
The raf-plus help you manage requestAnimation's queue by ignoring the duplicate callback function in same animation frame. For comparison:
const { requestAnimationFrame } from 'raf-plus'
const animationTwice = () => console.log('I will be invoked twice!')
const animationOnce = () => console.log('Although call twice, I will be invoked once')
// call same animation within one animation frame
// lead to animation twice
window.requestAnimationFrame(animationTwice)
window.requestAnimationFrame(animationTwice)
// call same animation within one animation frame
// but only invoke once
requestAnimationFrame(animationOnce)
requestAnimationFrame(animationOnce)
$ npm install --save raf-plus
or
$ yarn add raf-plus
The raf-plus only exports two methods
requestAnimationFrame(callback)The same as requestAnimationFrame. Be aware that raf-plus uses === operator to compare two callbacks, so passing anonymous function won't invoke the management!
const { requestAnimationFrame } from 'raf-plus'
const animation = timeStamp => {
// animation
}
// animation will be invoked once within one frame
requestAnimationFrame(animation)
requestAnimationFrame(animation)
// animation will be invoked twice cause the function are not equal
requestAnimationFrame(timeStamp => { /* animation */})
requestAnimationFrame(timeStamp => { /* animation */})
cancelAnimationFrame(callback)The same as cancelAnimationFrame.
const { requestAnimationFrame, cancelAnimationFrame } from 'raf-plus'
const animation = timeStamp => {
// animation
}
const requestId = requestAnimationFrame(animation)
cancelAnimationFrame(requestId)
MIT
FAQs
better requestAnimationFrame
The npm package raf-plus receives a total of 1 weekly downloads. As such, raf-plus popularity was classified as not popular.
We found that raf-plus 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
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.