Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Pairing GSAP with Lenis helps when the two systems disagree about where the page is. Lenis smooths the scroll motion, and GSAP’s ScrollTrigger ties animations to scroll positions. If each runs on its own clock, scroll-linked effects can lag behind the visible motion or stutter as the page moves. The fix is a shared loop: Lenis announces each scroll so ScrollTrigger can update, and GSAP’s ticker drives Lenis every frame. That synchronization gives you coherent motion. It does not repair weak choreography, too many effects, or animation that ignores users who prefer reduced motion.
What each library does
GSAP is an animation library. Its core tweens and timelines change element properties over time. ScrollTrigger is a GSAP plugin that connects that animation progress, or callbacks, to scroll positions. You can make a timeline play as a section moves through the viewport, pin an element while content passes beneath it, or scrub an animation forward and back with the scrollbar. ScrollTrigger reads the scroll position of the page; it does not change how the page scrolls.
Lenis is a separate smooth-scrolling library. It wraps the browser’s own scrolling rather than replacing it. The Lenis project describes the approach this way:
Runs on native scroll — wraps the browser’s own scroll, so position: sticky, anchor links, and accessibility keep working.
Attribute that statement to the Lenis project documentation, not to an individual. The practical consequence is that Lenis changes the feel of the wheel and trackpad motion, while the browser still owns the scroll position. That is also why the two libraries need explicit coordination: ScrollTrigger must read the position Lenis is actually showing, and Lenis must advance on the same frames GSAP uses.
#1 Best Overall
- CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
- WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
- A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents
The integration pattern
The Lenis project’s GSAP ScrollTrigger example uses three lines of wiring. Install both packages with your package manager rather than loading CDN builds, then check the current Lenis API before copying anything. The project’s CDN examples showed Lenis 1.3.26 when checked on 7 October 2026, so confirm the version you install against the Lenis project repository.
- Install and import the packages. In a project using npm, run
npm install gsap lenis. Import GSAP and ScrollTrigger, then register the plugin once before any ScrollTrigger code runs:import gsap from 'gsap'; import { ScrollTrigger } from 'gsap/ScrollTrigger'; import Lenis from 'lenis'; import 'lenis/dist/lenis.css'; gsap.registerPlugin(ScrollTrigger);The stylesheet import is the path the Lenis documentation recommends. Adjust the import syntax if your bundler or framework uses a different convention.
- Create the Lenis instance and tell ScrollTrigger about each scroll.
const lenis = new Lenis(); lenis.on('scroll', ScrollTrigger.update);Each time Lenis emits a scroll event, ScrollTrigger recalculates its progress against the position Lenis has reached.
- Drive Lenis from the GSAP ticker.
gsap.ticker.add((time) => { lenis.raf(time * 1000); });GSAP’s ticker calls this function every frame and passes the elapsed time in seconds. Lenis’s
rafmethod expects milliseconds, so the callback multiplies by 1000. - Set lag smoothing, then decide what it affects.
gsap.ticker.lagSmoothing(0);The Lenis example includes this line. Read the next section before keeping it.
Why the ScrollTrigger update runs on Lenis’s scroll event
Without the listener, ScrollTrigger only sees the native scroll events that the browser reports. Lenis moves the page in its own steps, so the scroll position ScrollTrigger reads can trail what the user sees. Forwarding Lenis’s scroll event to ScrollTrigger.update keeps the two in agreement on each frame.
Why the time value is multiplied by 1000
GSAP reports ticker time in seconds. Lenis’s raf(time) takes milliseconds. Passing seconds directly would make Lenis advance at a very different rate, which shows up as sluggish or erratic motion. Keep the * 1000 in the callback.
Rank #2
- CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
- SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
What gsap.ticker.lagSmoothing(0) changes
By default, GSAP limits how much time it counts after the browser stalls, which keeps animations from jumping ahead after a long pause. The Lenis example sets that limit to zero. Be aware of the scope: GSAP’s ticker is global, so the setting applies to every tween, timeline, and delayed call on the page, not only to Lenis-driven scroll effects. It changes how GSAP responds when rendering stalls. It does not speed up the device or raise the actual frame rate, so do not expect it to fix a slow page. Set it deliberately, check the other animations on the page after adding it, and remove it if unrelated animations start behaving differently. The GSAP reference for the ticker is at gsap.ticker documentation.
Do you need Lenis with GSAP?
No. ScrollTrigger works on native browser scrolling, and GSAP describes it as not scroll-jacking. You use Lenis when you want the smoothed scroll feel that it adds, and you accept the extra loop and its trade-offs. The choice is about how the page should feel and which integration surface your project prefers.
There are three realistic setups:
| Option | What it is | Touch behavior | Integration surface |
|---|---|---|---|
| ScrollTrigger on native scroll | GSAP plugin that ties animations to scroll position without a smoothing layer | Native touch scrolling; no added smoothing layer | GSAP only; scrollerProxy() is available if you later add a third-party smoother |
| Lenis with ScrollTrigger | Separate smooth-scroll library that wraps native scroll, with the loop shown above | Governed by Lenis options such as syncTouch; the Lenis documentation notes iOS behavior before version 16 may be unexpected |
Explicit ScrollTrigger.update and lenis.raf wiring; documented React, Vue, Framer, and snap packages |
| GSAP ScrollSmoother | GSAP-native smoother built on ScrollTrigger and native scroll technology; it moves a content wrapper to catch up with the native position | Not applied to touch-only devices by default, according to GSAP | Stays within GSAP’s plugin set; no separate loop to wire |
Compare the table against your project before choosing. If you already use a framework and want Lenis’s packages, Lenis fits. If you want to stay entirely within GSAP’s plugins, check ScrollSmoother and its current licensing terms on the ScrollSmoother documentation. This article does not cover licensing or access terms for either option; confirm them on the GSAP site before committing.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Rank #3
- Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
- Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
- Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
- In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
- Ultra-thin bezels: Maximize your viewing experience with thin bezels.
Why your GSAP scroll animations feel jittery
Jitter usually has a structural cause rather than a single bug. Check these in order.
- Two animation loops. If you enable Lenis’s
autoRafoption and also calllenis.raffrom a GSAP ticker for the same instance, the two loops compete. Choose one owner. The documented GSAP setup uses the ticker, so removeautoRafwhen you use it. - Stale trigger positions. ScrollTrigger calculates start and end positions when triggers are created and when the scroller resizes. It does not keep recalculating as the DOM moves. If fonts, images, or late-loaded content change the layout after setup, the triggers use old measurements. Call
ScrollTrigger.refresh()after the layout settles, for example afterdocument.fonts.readyresolves and after images you depend on have loaded. - Nested scroll areas. Inner scrollable containers can conflict with the page-level smoother. Lenis’s
allowNestedScrolloption handles this, but the Lenis documentation warns that checking the DOM tree on every scroll event can affect performance. Itsdata-lenis-preventattribute orpreventcallback are alternatives that avoid that cost. Configure nested containers deliberately rather than enabling every option. - Iframes in the scroll path. Smooth scrolling over an iframe is limited because iframes do not forward wheel events. If your scroll effect depends on an embedded frame, test that area separately.
- Too many simultaneous effects. Several pinned sections, scrubbed timelines, and parallax layers can compete for the same frames. Removing an effect is often a bigger improvement than changing a setting.
None of these steps guarantees a particular frame rate. They remove structural conflicts so the animation has a single, consistent clock and accurate positions to read.
Tune triggers against the real layout
Do not copy start, end, or scrub values from examples without checking them against your own layout. During development, turn on markers: true in the ScrollTrigger configuration. The markers show where each trigger starts and ends, which makes mismatches between your intended motion and the real page visible. Adjust the values until the markers sit where the animation should begin and finish, then remove the markers before release.
Rank #4
- CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
- SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
- MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
- KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
- INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient
ScrollTrigger also documents pinning, snapping, callbacks, custom scrollers, and media-query support. Use the media-query support to give different layouts their own trigger values rather than forcing one configuration onto phones and desktops. The ScrollTrigger reference is at ScrollTrigger documentation.
Free tools Windows power users keep installed
One-click scans. No signup required.
Reduced motion and accessibility
Lenis honors the reduced-motion preference by default through its respectReducedMotion: true option. When the user requests reduced motion, Lenis disables smoothing and makes programmatic scrolls immediate. That covers the scroll feel, but it does not change the animations you wrote in GSAP. Those still run unless you adapt them.
Adapt the authored animations as well. You can read Lenis’s prefersReducedMotion state, or use ScrollTrigger’s media-query support to skip pins, scrubbed motion, or large movements when the preference is set. Keep essential content visible and reachable without the animation, and confirm that focus, keyboard navigation, and anchor links still behave correctly. Lenis supports anchor links through its anchors option, which must be enabled.
Best Value
- 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
- 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
- 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.
Known limits of the Lenis setup
The Lenis documentation lists several limitations that affect whether this setup suits a given page:
- CSS
scroll-snaprequires Lenis’s snap plugin. - Smooth scrolling over iframes is limited because iframes do not forward wheel events.
syncTouchmay behave unexpectedly on iOS before version 16.- Nested scroll containers need correct configuration before they behave predictably.
Treat these as design constraints. A marketing page with a few pinned sections is a different case from a long documentation page with embedded tools and nested panels.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11A practical sequence for a new project
- Decide which two or three scroll effects carry meaning, and remove the rest.
- Choose one smoothing approach: native ScrollTrigger, Lenis with the ticker loop, or ScrollSmoother.
- Wire the chosen setup once, with a single animation-loop owner.
- Add markers, tune
start,end, andscrubagainst the layout, then remove the markers. - Add refresh calls after fonts and images load and after any layout change that affects trigger positions.
- Test with reduced motion enabled, keyboard navigation, anchor links, and any nested or embedded scroll areas.
The sequence above describes an approach rather than a benchmark, and the results depend on your page and devices.
Quick Recap
“
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

