usePageInView
usePageInView is a tiny utility hook for tracking page/document visibility. This is useful for improving performance by pausing animations, video playback, or other activity when the user navigates to another tab, and resuming on return.
This saves CPU cycles, improves battery life, and helps ensure a smooth user experience.
Usage
Import from "motion/react":
import { usePageInView } from "motion/react"
usePageInView returns true when the current page is the user's active tab, and defaults to true on the server and initial client render before a measurement can be made.
const isPageInView = usePageInView()
This state can be used to pause animations or videos when the page is hidden:
const videoRef = useRef(null) const isInView = usePageInView() useEffect(() => { const videoElement = videoRef.current if (!videoElement) return if (isInView) { videoElement.play() } else { videoElement.pause() } }, [isInView])
Or starting/stopping animation loops created with useAnimationFrame.
useAnimationFrame(isPageInView ? update : undefined)
usePageInView is a tiny utility hook for tracking page/document visibility. This is useful for improving performance by pausing animations, video playback, or other activity when the user navigates to another tab, and resuming on return.
This saves CPU cycles, improves battery life, and helps ensure a smooth user experience.
Usage
Import from "motion/react":
import { usePageInView } from "motion/react"
usePageInView returns true when the current page is the user's active tab, and defaults to true on the server and initial client render before a measurement can be made.
const isPageInView = usePageInView()
This state can be used to pause animations or videos when the page is hidden:
const videoRef = useRef(null) const isInView = usePageInView() useEffect(() => { const videoElement = videoRef.current if (!videoElement) return if (isInView) { videoElement.play() } else { videoElement.pause() } }, [isInView])
Or starting/stopping animation loops created with useAnimationFrame.
useAnimationFrame(isPageInView ? update : undefined)
usePageInView is a tiny utility hook for tracking page/document visibility. This is useful for improving performance by pausing animations, video playback, or other activity when the user navigates to another tab, and resuming on return.
This saves CPU cycles, improves battery life, and helps ensure a smooth user experience.
Usage
Import from "motion/react":
import { usePageInView } from "motion/react"
usePageInView returns true when the current page is the user's active tab, and defaults to true on the server and initial client render before a measurement can be made.
const isPageInView = usePageInView()
This state can be used to pause animations or videos when the page is hidden:
const videoRef = useRef(null) const isInView = usePageInView() useEffect(() => { const videoElement = videoRef.current if (!videoElement) return if (isInView) { videoElement.play() } else { videoElement.pause() } }, [isInView])
Or starting/stopping animation loops created with useAnimationFrame.
useAnimationFrame(isPageInView ? update : undefined)

