NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1231 most downloaded on npm
A lightweight carousel library with fluid motion and great swipe precision
Last release 1 months ago
21 Aug 2026
Release timing varies
gaps range from 9 days to 10 months
Nearly every release is documented
notes for 56 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
240 releases · first in 2019
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Embla Carousel v.3 is here, and here's all you need to know before upgrading.
Embla Carousel v.3 is here, and here's all you need to know before upgrading.
{ axis: 'x' | 'y' }.loop: false when content isn't enough for the loop effect to work.{ containScroll: '' | 'trimSnaps' | 'keepSnaps' }.{ selectedClass: '' }.{ draggableClass: '' }.{ draggingClass: '' }.{ inViewThreshold: 0.5 }. Pass a number between 0 and 1 representing percentage of each slide size that needs to be visible in the carousel viewport in order to be considered in view. Ex: 0.5 = 50% of a slide needs to be in view.slidesInView() - Get a list of slide indexes within the carousel viewport.slidesNotInView() - Get a list of slide indexes not within the carousel viewport.dragStart has been renamed to pointerDown.dragEnd has been renamed to pointerUp.scrollBy() has been removed.scrollToProgress() has been removed.target : boolean for the API method scrollProgress() has been removed.containScroll is now a string. An empty string equals the previous behavior when it was false. The previous true value is now named 'trimSnaps'.changeOptions() has been renamed to reInit().scrollSnapList() now returns an array of numbers representing the scroll progress for each snap point. Indexes and slide nodes per snap point has been removed.This release comes with more tools to manipulate the carousels `scrollProgress`.
This release comes with more tools to manipulate the carousels scrollProgress.
scrollProgressIt's now possible to get the scroll progress of either the carousels current scroll location or its target scroll location. Get the scroll progress of the carousels current scroll location:
embla.scrollProgress()
Get the scroll progress of the carousels target scroll location
const target = true
embla.scrollProgress(target)
scrollByIt's now possible to pass a second boolean parameter if you want the carousel to snap to the closest snap position. Passing true will snap the carousel while false will scroll by the exact given amount.
const snapToClosest = true
embla.scrollBy(0.2, snapToClosest)
scrollToProgressAs discussed in issue #26 this feature allows for setting the absolute scroll progress directly as compared to scrollBy which adds to the current scroll progress. Like scrollBy, it also accepts a second boolean parameter if you want the carousel to snap to the closest snap position. Passing true will snap the carousel while false will scroll to the exact given progress.
const snapToClosest = true
embla.scrollToProgress(0.2, snapToClosest)
Thanks a bunch @xiel for this feature request.
Enjoy 🎉!
The percent alignment is a new feature. This feature was specified and requested in issue #49.
The percent alignment is a new feature. This feature was specified and requested in issue #49.
const options = { align: 0.2 }
const embla = EmblaCarousel(emblaNode, options)
This feature allows users to specify percentage alignment by passing a number, where a fraction like 0.2 represents 20% of the viewport size. Percentage will be measured from the start edge of the viewport.
Nothing published for this version
The settle event is a new feature. This feature was specified and requested in issue #48.
The settle event is a new feature. This feature was specified and requested in issue #48.
embla.on('settle', () => {
console.log(`The carousel has stopped scrolling.`)
})
The settle event allows users to hook onto when the carousel has stopped scrolling.
It solves issue #27. When Android devices fired the mousemove event during touch interactions, Embla threw a console error. This patch comes with a fi
This patch resolves one bug:
Nothing published for this version
Nothing published for this version
Nothing published for this version
The API method scrollBy() is a new feature. This feature was specified in issue #23 and requested in issue #21.
The API method scrollBy() is a new feature. This feature was specified in issue #23 and requested in issue #21.
embla.scrollBy(0.5)
The scrollBy()method allows users to manipulate the current scroll progress by passing a number as an argument. Scroll to target is smooth.
Nothing published for this version
Nothing published for this version
Nothing published for this version
The options section in the readme has been updated with expandable details for each option:
The options section in the readme has been updated with expandable details for each option:
<img width="978" alt="expandable-options" src="https://user-images.githubusercontent.com/11529148/71546060-faecac00-2992-11ea-8a8a-f37161a6f5d2.png">
It solves issue #37 and cancels any drag interaction when contextmenu is opened.
This patch resolves two bugs:
Nothing published for this version
Nothing published for this version
Nothing published for this version
The API method clickAllowed() is a new feature. This feature was requested in issue #22 and #24.
The API method clickAllowed() is a new feature. This feature was requested in issue #22 and #24.
embla.clickAllowed()
This method is an opt-in feature. Here is how it works: It returns false if:
Mouse Pointers
Touch Pointers
Otherwise it will return true.
Outdated NPM packages were updated in this release.
Outdated NPM packages were updated in this release.
Nothing published for this version
This release is a fix for the containScroll bug as described in issue #30.
This release is a fix for the containScroll bug as described in issue #30.
Nothing published for this version
Nothing published for this version
The API method scrollProgress() is a new feature. Implemented as discussed in issue #21.
The API method scrollProgress() is a new feature. Implemented as discussed in issue #21.
embla.scrollProgress()
See this CodeSandbox for example usage.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
When using the option containScroll Embla will automatically merge any excessive snap points that share the same snap position as discussed in issue #
When using the option containScroll Embla will automatically merge any excessive snap points that share the same snap position as discussed in issue #19. This affects following API methods:
canScrollPrev()canScrollNext()scrollSnapList()Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The scroll event has been added as a new feature.
The scroll event has been added as a new feature.
embla.on('scroll', () => console.log('Carousel is scrolling'))
Nothing published for this version
Nothing published for this version
Nothing published for this version
The API methods canScrollNext() and canScrollPrev() always returned false when loop: true. This solves the issue and always returns true for both thes
The API methods canScrollNext() and canScrollPrev() always returned false when loop: true. This solves the issue and always returns true for both these methods when loop: true.
Issue #15.
Added API demo links to CodeSandbox examples.
Added API demo links to CodeSandbox examples.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
containScroll is now a feature. It contains slides to the carousel viewport to prevent excessive scrolling at the beginning or the end.
containScroll is now a feature. It contains slides to the carousel viewport to prevent excessive scrolling at the beginning or the end.
Your coding agent can read these notes before it upgrades. Set up the MCP server →