TopGit
GitHub Repo Review

egjs Flicking: A JavaScript Carousel Component

naver/egjs-flicking
ETopGit review image for naver/egjs-flicking
Review by Topgit.dev for naver/egjs-flicking, with GitHub repository stats and README context.
Quick verdict

@egjs/flicking is NAVER's carousel component for sliders that need circular looping, momentum-based free scroll, and virtual rendering for large panel counts. It ships framework wrappers for React and Vue 3 plus a separate plugins package for AutoPlay, Fade, Parallax, Arrow, and Pagination. Reach for it if you need SSR in Next.js or Nuxt and full TypeScript types; skip it if a five-line CSS slider already covers your case.

Stars
โ˜… 2.9k
Forks
โ‘‚ 137
Contributors
๐Ÿ‘ฅ 31
Language
TypeScript
License
MIT
Topic
Frontend
Updated
Sep 2026

Introducing egjs Flicking

@egjs/flicking is an open-source JavaScript carousel component built by NAVER, with core, React, and Vue 3 packages published separately. The README lists circular mode for looping, free scroll for momentum-based native scrolling, and virtual scroll that renders only visible panels. It's written in TypeScript with a fully typed API, and NAVER documents SSR support for Next.js and Nuxt.

Core Features of Flicking

  • โœ“Circular mode loops panels continuously without a visible jump at the wrap-around point.
  • โœ“Free scroll gives momentum-based native scrolling instead of only snapping fixed to each panel.
  • โœ“Virtual scroll renders only the panels currently visible, aimed at large panel counts.
  • โœ“SSR ready โ€” the README lists compatibility with Next.js and Nuxt.
  • โœ“A separate @egjs/flicking-plugins package adds AutoPlay, Fade, Parallax, Arrow, and Pagination without bloating the core bundle.
  • โœ“Written in TypeScript with a fully typed API.
  • โœ“Dedicated @egjs/react-flicking and @egjs/vue3-flicking packages wrap the core library for React and Vue 3 respectively.
  • โœ“Distributed via npm and three CDNs (jsDelivr, unpkg, cdnjs) for non-bundled use.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history โ†—

Installation and Setup

Install the core package with `npm install --save @egjs/flicking`, then import the CSS alongside the JS import โ€” the README's ES Modules example imports both `@egjs/flicking` and `@egjs/flicking/dist/flicking.css`. If you're not using a bundler, the README lists three CDNs: jsDelivr, unpkg, and cdnjs, plus a pre-packaged `flicking.pkgd.min.js` build for the plain-script-tag case. React and Vue 3 projects install the separate `@egjs/react-flicking` or `@egjs/vue3-flicking` packages instead of wrapping the core package by hand.

Quick Start with Flicking

The README's quick-start initializes Flicking against a container element: `import Flicking from "@egjs/flicking"; import "@egjs/flicking/dist/flicking.css"; const flicking = new Flicking("#my-flicking", { circular: true });`. It notes the HTML structure requirement only matters when you're not using one of the framework wrappers โ€” React and Vue 3 projects skip manual DOM setup and use the `@egjs/react-flicking` or `@egjs/vue3-flicking` components instead. The CDN path mirrors this: load `flicking.pkgd.min.js` and the CSS via script/link tags, then call `new Flicking(...)` the same way.

Strengths

  • โœ“Circular mode and virtual scroll are both handled by the library itself, not left as a DIY implementation detail.
  • โœ“SSR support for Next.js and Nuxt is documented directly, instead of requiring a client-only workaround.
  • โœ“One core engine shared across vanilla JS, React (@egjs/react-flicking), and Vue 3 (@egjs/vue3-flicking) means the same mental model transfers across projects.
  • โœ“A fully typed TypeScript API, which matters if you're already catching prop errors at compile time elsewhere in the codebase.
  • โœ“MIT license with no usage restrictions, and the project is maintained by NAVER rather than a single hobbyist maintainer.

Considerations for Use

  • โ–ณThe README's browser-support table lists compatibility levels ('Latest', 'Latest', 'Latest', '7+', '4+') without labeling which browsers the numbers belong to, so exact minimum-version support isn't clearly documented here.
  • โ–ณNo live example is embedded in the README itself โ€” you have to leave GitHub to see Flicking actually run, via the linked demos and API docs.
  • โ–ณThe package table only covers @egjs/flicking, @egjs/flicking-plugins, @egjs/react-flicking, and @egjs/vue3-flicking; there's no dedicated Angular wrapper listed, even though 'angular' appears as a repo topic.
  • โ–ณThe project has a modest following; the README is the main documentation surface, so third-party tutorials or Stack Overflow coverage may be limited as a result.
  • โ–ณThe README doesn't state a current version number or changelog inline, so you won't know what release you're installing without checking npm directly.

Other Carousel Libraries

Swiper โ€” a vanilla-JS carousel with a large built-in module set covering effects and layouts that Flicking splits into its separate plugins package.Embla Carousel โ€” a headless carousel engine that leaves markup and styling entirely to you, unlike Flicking's bundled CSS.Splide โ€” a dependency-free carousel with accessibility (ARIA) handling built into the core rather than split out into a plugin.react-slick โ€” a React-only wrapper around slick-carousel, narrower than Flicking's shared core across vanilla JS, React, and Vue 3.

Common Questions

What frameworks does egjs Flicking support?

egjs Flicking ships a framework-agnostic core plus dedicated @egjs/react-flicking and @egjs/vue3-flicking packages for React and Vue 3, per the README's package table. Angular appears as a repo topic, but no separate Angular wrapper package is listed there.

Does egjs Flicking support server-side rendering?

egjs Flicking's README lists SSR readiness as a feature, specifically citing compatibility with Next.js and Nuxt.

What is the license for egjs Flicking?

egjs Flicking is released under the MIT license, per its GitHub repository.

Can egjs Flicking handle large datasets efficiently?

egjs Flicking includes a virtual-scroll mode that, per the README, renders only the panels currently visible rather than mounting every panel in the DOM at once, which is aimed at exactly this case.

Does egjs Flicking offer infinite looping functionality?

egjs Flicking includes a circular mode that loops panels continuously without a visible jump at the wrap-around point, according to the README.

How does egjs Flicking support AI development?

egjs Flicking's README calls out an 'AI-native' direction for the project: clearer TypeScript types, error messages, and documentation organized by use case, aimed at making the library easier for both developers and AI coding tools to use correctly. It also points to a separate llms.txt guide for AI agents.

The problem it solves

Most homegrown carousel code handles a handful of slides fine, then jumps or stutters once you add circular looping or once the panel count grows into the hundreds and every panel stays mounted in the DOM. @egjs/flicking's README addresses both: a circular mode that loops without a visible seam at the wrap-around point, and a virtual-scroll mode that renders only the panels currently on screen. It also documents SSR support for Next.js and Nuxt instead of leaving server rendering as an afterthought, which matters if the carousel sits above the fold on a page that needs to be indexed.

Best use cases

  • โ€ขBuilding a product carousel or hero banner in a Next.js or Nuxt app where SSR needs to produce real markup, not a client-only mount.
  • โ€ขRendering a panel list that runs into the hundreds โ€” a media gallery or catalog grid โ€” where virtual scroll keeps the DOM from bloating.
  • โ€ขAdding a circular, infinite-loop carousel without hand-writing wrap-around logic yourself.
  • โ€ขSharing one carousel implementation across a React app and a Vue 3 app via the separate @egjs/react-flicking and @egjs/vue3-flicking packages instead of maintaining two.
  • โ€ขLayering effects like AutoPlay, Fade, or Parallax onto the base carousel through the @egjs/flicking-plugins package rather than writing custom animation code.

Who should try it โ€” and who should skip

Reach for egjs Flicking if you're building a carousel that needs circular looping, SSR in Next.js or Nuxt, or virtual rendering for a long panel list, and you want the same core across vanilla JS, React, and Vue 3 projects. Skip it if you need Angular support specifically โ€” the README's package table doesn't list a dedicated Angular wrapper โ€” or if a plain CSS scroll-snap carousel already covers a simple, small panel count without any of this machinery.

Related repositories

Source & attribution

Facts and quotes sourced from the naver/egjs-flicking GitHub repository and its README.

GitHub data ยท last synced Aug 12, 2026Reviewed by Henry
โ† Back to TopGit

Is egjs-flicking worth your time?

ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of egjs-flicking.

GitHub