Ensuring a component is only rendered on the client side in NextJS got easier with this hook
import { Fragment, useEffect, useState } from "react" export default function requireHydration(WrappedComponent: any) { return function Component(props: any) { const [isHydrated, setIsHydrated] = useState(false) useEffect(() => { setIsHydrated(true) }, []) if (!isHydrated) return <Fragment /> return <WrappedComponent {...props} /> } }