---
title: "Lighter Swiper alternatives for React"
description: "Looking for a lighter Swiper alternative in React? Embla and keen-slider for real carousels, react-horizontal-scrolling-menu for menu-shaped rows. Sizes compared."
canonical: "https://react-horizontal-scrolling-menu.dev/compare/swiper-alternatives"
image: "https://react-horizontal-scrolling-menu.dev/og.png"
---

[Compare](https://react-horizontal-scrolling-menu.dev/compare.md)/Swiper alternatives

# Swiper alternatives for React, by what you’re actually escaping

Nobody leaves Swiper because it is bad — it is the most complete slider there is. People leave over weight (≈40 kB before modules), over inheriting its DOM and CSS, or because their "slider" was never really slides. Each complaint has a different best answer.

|  | Swiper | Embla | keen-slider | react-horizontal-scrolling-menu |
| --- | --- | --- | --- | --- |
| Bundle (core, min+gzip) | ≈40 kB | ≈8 kB | ≈7 kB | ≈5.7 kB |
| Model | Slides, batteries included | Slides, headless | Slides, minimal engine | Items in a native scroll row |
| Effects & modules | Richest available | Plugins / DIY | Some built in | None — recipes instead |
| Owns the gesture layer | Yes (transforms) | Yes (transforms) | Yes (transforms) | No — browser scrolls |
| Per-item visibility | Slide-index events | Slide-index events | Slide-index events | Built in (useIsVisible) |
| Best swap when | — | You style everything anyway | Minimal slider, no React lock-in | The "slides" are clickable items |

Sizes are approximate cores — Swiper’s grows with imported modules, which also means a trimmed Swiper build is smaller than its reputation.

## Escaping the kilobytes: Embla or keen-slider

If the product is a real carousel — snapping, one page of slides at a time — the lightweight engines are drop-in-close:

-   **[Embla](https://react-horizontal-scrolling-menu.dev/compare/embla-vs-swiper.md)** (≈8 kB): headless, superb physics, first-class React hook, the engine under shadcn/ui's carousel. You bring all markup and CSS — which is the point.
-   **keen-slider** (≈7 kB): a minimal framework-agnostic engine, good when the same slider must ship to React and non-React surfaces.

Both keep the transform-based slide model, so effects like fade or coverflow stay DIY — if you rely on those, a trimmed Swiper build is honestly the better answer than re-implementing them.

## Escaping the slide model: the menu-shaped case

The other exit is for builds where Swiper's slide semantics were never load-bearing: category rows, logo walls, tab strips, chip bars, product rails. The tells are configuration like `slidesPerView: 'auto'` plus `freeMode: true` — that pair is Swiper being asked to impersonate native scrolling.

[react-horizontal-scrolling-menu](https://react-horizontal-scrolling-menu.dev/index.md) (≈5.7 kB) is that native scrolling, plus the parts the browser doesn't ship: [per-item visibility](https://react-horizontal-scrolling-menu.dev/examples/simple.md), [scroll-to-item](https://react-horizontal-scrolling-menu.dev/examples/scroll-to-item.md), edge-aware arrows and [drag that doesn't break clicks](https://react-horizontal-scrolling-menu.dev/examples/mouse-drag.md). No effects, no snapping, no gesture emulation — see the [Netflix-row](https://react-horizontal-scrolling-menu.dev/netflix-row.md), [tabs](https://react-horizontal-scrolling-menu.dev/scrollable-tabs.md) and [chip-bar](https://react-horizontal-scrolling-menu.dev/filter-chips.md) pages, or the [full table](https://react-horizontal-scrolling-menu.dev/compare.md).

## A fair warning in both directions

Migrating off Swiper to save weight and then hand-building autoplay, pagination, a11y announcements and effects is how a 40 kB problem becomes a person-month problem. Swap to a lighter engine when your usage is genuinely a subset — and to a scrolling menu only when the slide semantics were fake all along. If you use Swiper’s depth, keep Swiper.

[Compare](https://react-horizontal-scrolling-menu.dev/compare.md) · [Browse all examples](https://react-horizontal-scrolling-menu.dev/examples.md) · [GitHub](https://github.com/asmyshlyaev177/react-horizontal-scrolling-menu)

---

More examples: <https://react-horizontal-scrolling-menu.dev/examples.md>
Library summary for LLMs: <https://react-horizontal-scrolling-menu.dev/llms.txt>
