# darkroomengineering/lenis

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/darkroomengineering-lenis).**

13,217 stars · 521 forks · TypeScript · mit

## Links

- GitHub: https://github.com/darkroomengineering/lenis
- Homepage: https://lenis.darkroom.engineering
- awesome-repositories: https://awesome-repositories.com/repository/darkroomengineering-lenis.md

## Topics

`performance` `react` `scroll` `smooth` `smooth-scroll` `snap` `vanilla` `vue`

## Description

Lenis is a lightweight JavaScript library designed to provide fluid, momentum-based scrolling experiences for web interfaces. It functions as a frontend utility that decouples visual scroll position from the browser's native state, allowing for custom easing and duration while preserving standard browser accessibility, search functionality, and layout measurement tools.

The library distinguishes itself by normalizing input from mouse wheels and touch gestures into a unified stream, ensuring consistent physics across different devices. It operates by intercepting native scroll events and applying visual transformations to content containers, which allows for precise control over movement without altering the underlying document flow.

Beyond basic navigation, the tool supports the definition of vertical and horizontal movement constraints for both the entire viewport and specific page elements. It also provides integration hooks for external motion libraries, enabling the synchronization of scroll physics with complex, high-precision animations.

## Tags

### Web Development

- [Smooth Scroll Engines](https://awesome-repositories.com/f/web-development/routing-systems/routing-utilities/scroll-management/smooth-scroll-engines.md) — A lightweight JavaScript library for creating fluid, momentum-based scrolling experiences while maintaining native browser performance. ([source](https://lenis.darkroom.engineering))
- [Animation Frameworks](https://awesome-repositories.com/f/web-development/interactive-web-frameworks/animation-frameworks.md) — Integrates with external motion libraries to synchronize scroll physics with complex, high-precision animations. ([source](https://lenis.darkroom.engineering))

### User Interface & Experience

- [Scroll](https://awesome-repositories.com/f/user-interface-experience/physics-engines/scroll.md) — Provides a decoupled physics engine that calculates momentum and friction for fluid scrolling experiences.
- [Scroll State Controllers](https://awesome-repositories.com/f/user-interface-experience/scroll-interaction-handlers/scroll-state-controllers.md) — Intercepts native scroll events to decouple visual scroll position from the browser's actual state.
- [Input Normalization Utilities](https://awesome-repositories.com/f/user-interface-experience/input-normalization-utilities.md) — Normalizes mouse wheel and touch gestures into a unified stream for consistent interaction physics.
- [Scroll Containers](https://awesome-repositories.com/f/user-interface-experience/scroll-containers.md) — Allows configuration of vertical and horizontal movement constraints for specific page elements or the entire viewport. ([source](https://lenis.darkroom.engineering))
- [DOM Transformation Overlays](https://awesome-repositories.com/f/user-interface-experience/visual-overlays/dom-transformation-overlays.md) — Applies visual transformations to content containers without altering the underlying document flow or accessibility.
