Implement Lenis Scroll
Instructions for implementing Lenis smooth scrolling in a Next.js or React application.
- Skill ID
- jerrar670/surf-website/implement_lenis_scroll
- Publisher
- jerrar670
- Repository
- surf-website
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
jerrar670/surf-website/implement_lenis_scrollInstalls these files- SKILL.md
What this skill tells the agent
Implement Lenis Smooth Scroll
This skill guides you through adding buttery smooth scrolling to a React/Next.js application using @studio-freight/lenis (or the newer lenis package).
Prerequisites
- A React or Next.js project.
Steps
1. Install Dependencies
Install the Lenis package.
npm install lenis
# OR depending on version preference
npm install @studio-freight/lenis2. Create the Lenis Hook/Component
It's best to encapsulate Lenis in a reusable component or hook.
Option A: Global Component (Recommended for Next.js App Router) Create src/lib/lenis.ts or src/components/SmoothScroll.tsx.
// src/components/SmoothScroll.tsx
'use client'
import { ReactNode, useEffect } from 'react'
import Lenis from 'lenis'
export default function SmoothScroll({ children }: { children: ReactNode }) {
useEffect(() => {
const lenis = new Lenis({
duration: 1.2,
easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
orientation: 'vertical',
gestureOrientation: 'vertical',
smoothWheel: true,
})
function raf(time: number) {
lenis.raf(time)
requestAnimationFrame(raf)
}
requestAnimationFrame(raf)
return () => {
lenis.destroy()
}
}, [])
return <>{children}</>
}3. Integrate into Layout
Wrap your main application or layout content with the component.
Next.js App Router (`layout.tsx`):
import SmoothScroll from '@/components/SmoothScroll'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<SmoothScroll>
{children}
</SmoothScroll>
</body>
</html>
)
}Best Practices
- Performance: Ensure
requestAnimationFrameis optimized. - Scroll Restoration: Lenis usually handles this, but verify
scrollRestorationworks as expected in Next.js. - GSAP Integration: If using ScrollTrigger, ensure you update ScrollTrigger on Lenis scroll. ``
typescript // Inside useEffect // lenis.on('scroll', ScrollTrigger.update) // gsap.ticker.add((time)=>{lenis.raf(time * 1000)}) // gsap.ticker.lagSmoothing(0)``
Use this skill in a project
Open any RiverX project, search the Skills panel for jerrar670/surf-website/implement_lenis_scroll, and install it in one click.
