jerrar670/surf-website1 file

Implement Lenis Scroll

Instructions for implementing Lenis smooth scrolling in a Next.js or React application.

Specification
Skill ID
jerrar670/surf-website/implement_lenis_scroll
Publisher
jerrar670
Repository
surf-website
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

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/lenis

2. 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 requestAnimationFrame is optimized.
  • Scroll Restoration: Lenis usually handles this, but verify scrollRestoration works 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.

Use this skill