Embla Carousel
Embla Carousel is a lightweight, dependency-free carousel library built for smooth, fluid motion and precision swiping. With a framework-agnostic design, it supports React, Vue, Svelte, Solid, and more, offering complete control without unnecessary bloat. It has garnered over 7,900 GitHub stars and is actively maintained with strong community support.
carouselsliderswipetouchlightweight
๐ฎ Playground
Loading playground...
Use cases
- โขProduct image galleries and carousels for e-commerce websites
- โขProject showcases and image sliders for portfolio sites
- โขTouch gesture-based content navigation in mobile-first web applications
- โขArticle or video slideshows for news and media platforms
- โขLightweight carousel solutions for bundle size-sensitive projects
Good for
- โFramework-agnostic design supporting all major frameworks including JavaScript, React, Vue, Svelte, and Solid
- โZero dependencies with minimal bundle size (very small gzipped footprint)
- โExceptional user experience with smooth animations and precise touch/swipe control
- โHighly extensible and customizable through plugin system and reactive utilities
- โFull TypeScript support with active community and sponsor-backed stable maintenance
Not good for
- โRequires more initial setup and custom code compared to all-in-one carousel solutions
- โAdvanced features (autoplay, thumbnails, etc.) require separate plugin installation and configuration with a learning curve
Installation
$npm install embla-carousel-react
Example
import useEmblaCarousel from "embla-carousel-react"
export default function Demo() {
const [emblaRef] = useEmblaCarousel()
return (
<div ref={emblaRef}>
<div className="flex">
<div>Slide 1</div>
<div>Slide 2</div>
<div>Slide 3</div>
</div>
</div>
)
}Comparison
"Lighter than Swiper, more modern than react-slick."
Trust Metrics
8K
GitHub Stars
6.8M
Weekly Downloads
Last Commit:Jan 21, 2026
Used by
shadcn/uiCal.comVercel