# react-native-reanimated-carousel

> A performant, customizable carousel for React Native powered by Reanimated.

Latest version **5.1.1** (published 2026-08-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install react-native-reanimated-carousel
pnpm add react-native-reanimated-carousel
yarn add react-native-reanimated-carousel
bun add react-native-reanimated-carousel
```

Provides the command `rnrc-v5-codemod`.

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 5.1.1 |
| Published | 2026-08-08 |
| First published | 2021-09-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 1.2 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3434 |
| Author | Doho |
| Maintainers | caspian.zhao |
| Keywords | react-native, ios, android |

## Links

- npm: https://www.npmjs.com/package/react-native-reanimated-carousel
- Repository: https://github.com/dohooo/react-native-reanimated-carousel
- Homepage: https://rn-carousel.dev/
- Issues: https://github.com/dohooo/react-native-reanimated-carousel/issues
- npm.io page: https://npm.io/package/react-native-reanimated-carousel

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 5.1.1 (latest) — 2026-08-08
- 5.0.0-beta.8 (beta) — 2026-07-22
- 4.0.0-canary.23 (canary) — 2025-02-09
- 4.0.0-alpha.12 (alpha) — 2024-05-06
- 5.1.0 — 2026-08-04
- 5.0.0 — 2026-07-25
- 5.0.0-beta.7 — 2026-07-21
- 5.0.0-beta.6 — 2026-07-18
- 5.0.0-beta.5 — 2026-03-02
- 5.0.0-beta.4 — 2026-02-08
- 5.0.0-beta.3 — 2025-12-13
- 5.0.0-beta.2 — 2025-12-12
- 5.0.0-beta.1 — 2025-12-11
- 5.0.0-beta.0 — 2025-09-23
- 4.0.3 — 2025-08-08
- … 113 more at https://npm.io/package/react-native-reanimated-carousel/versions

## README

# react-native-reanimated-carousel

<img src="assets/home-banner.png" width="100%"/>

![platforms](https://img.shields.io/badge/platforms-Android%20%7C%20iOS%20%7C%20Web-brightgreen.svg?style=flat-square&colorB=191A17)
[![npm](https://img.shields.io/npm/v/react-native-reanimated-carousel.svg?style=flat-square)](https://www.npmjs.com/package/react-native-reanimated-carousel)
[![npm](https://img.shields.io/npm/dm/react-native-reanimated-carousel.svg?style=flat-square&colorB=007ec6)](https://www.npmjs.com/package/react-native-reanimated-carousel)
[![github issues](https://img.shields.io/github/issues/dohooo/react-native-reanimated-carousel.svg?style=flat-square)](https://github.com/dohooo/react-native-reanimated-carousel/issues)
[![discord chat](https://img.shields.io/badge/chat-discord-blue?style=flat&logo=discord)](https://discord.gg/KsXRuDs43y)

A performant, customizable carousel for React Native, powered by Reanimated and Gesture Handler.

- [Getting started](https://rn-carousel.dev/usage)
- [API reference](https://rn-carousel.dev/props)
- [Examples](https://rn-carousel.dev/Examples/summary)
- [Migrating from v4](https://rn-carousel.dev/migration-v5)

## Migrating from v4

Read https://rn-carousel.dev/migration-v5.md and upgrade react-native-reanimated-carousel to v5 in this project, then summarize what changed for my review.

## v5 highlights

- A smaller, named-only API with descriptive TypeScript types.
- Container sizing through `style`, with optional `itemSize` for a custom page distance.
- Explicit `layout`, `itemAnimation`, `snapMode`, and `orientation` contracts.
- Continuous logical `progress` plus signed pixel-level `scrollOffsetValue`.
- One `Pagination` component with loop-aware interpolation and accessible interactive dots.
- Stable item identity through `keyExtractor`, horizontal RTL normalization, and package `exports`.

## Installation

Expo projects should let Expo select compatible Reanimated and Worklets versions:

```bash
npx expo install react-native-reanimated-carousel react-native-reanimated react-native-worklets react-native-gesture-handler
```

React Native Community CLI projects can use their package manager:

```bash
yarn add react-native-reanimated-carousel react-native-reanimated react-native-worklets react-native-gesture-handler
```

Follow the official setup instructions for [Reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started) and [Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation).

## Quick start

```tsx
import * as React from "react";
import { Text, useWindowDimensions, View } from "react-native";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { Carousel } from "react-native-reanimated-carousel";

const data = ["First", "Second", "Third"];

export default function App() {
  const { width } = useWindowDimensions();

  return (
    <GestureHandlerRootView style={{ flex: 1 }}>
      <View style={{ flex: 1, justifyContent: "center" }}>
        <Carousel
          style={{ width, height: 200 }}
          data={data}
          renderItem={({ item }) => (
            <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
              <Text>{item}</Text>
            </View>
          )}
        />
      </View>
    </GestureHandlerRootView>
  );
}
```

`loop` defaults to `false` in v5. Add `loop` when infinite wrapping is part of the product behavior.

## Version compatibility

| Carousel | Expo SDK | React Native | Reanimated | Gesture Handler | Worklets |
|---|---|---|---|---|---|
| **v5** | **54–57 validated** | **0.80+** | **4.1.0+** | **>=2.9.0 <4.0.0** | **0.5.0+** |
| v4.x (EOL) | 50–53 | 0.70.3+ | 3.0.0+ | 2.9.0+ | — |
| v3.x (EOL) | 47–49 | 0.66.0+ | 2.0.0+ | 2.0.0+ | — |

Reanimated and Worklets must be a compatible pair. Expo users should use `expo install`; other projects should consult the [Reanimated compatibility table](https://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility).

## Sponsors

<p align="center">
  <img src="https://github.com/dohooo/sponsors/blob/master/sponsors.png?raw=true"/>
</p>

## License

MIT

---
_Source: https://npm.io/package/react-native-reanimated-carousel · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
