Getting Started
Type
Document
Status
Published
Created
Apr 22, 2026
Updated
Jul 25, 2026
Updated by
Dosu Bot

React Native Reanimated Carousel#


import { Badges } from '@/components/Badges'
import { Callout } from 'nextra/components'

v5 is here. Install `react-native-reanimated-carousel` with Reanimated 4.1 or newer and React Native Worklets. Upgrading from v4? Read the [v5 migration guide](/migration-v5).
![Cover Image](../../../assets/home-banner.png)

A performant carousel for React Native powered by Reanimated. ⚡️

Features#

  • The best performance you can get. 🚀
  • Fully configurable. ⚙️
  • Support for both iOS & Android & Web. 📱
  • Support for RTL layout. 🌍
  • Smooth gesture interactions & snapping animations. 🏎
  • Support to customise the animation style. 🎨
  • Powered by Reanimated 4 and React Native Worklets. 🎉
  • Compatible with Expo. 🎩
  • Accessibility support. ♿️
  • Written in TypeScript. 🌳

Installation#

Using Expo? Let Expo select compatible Reanimated and Worklets versions:

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

Using React Native Community CLI?

yarn add react-native-reanimated-carousel react-native-reanimated react-native-worklets react-native-gesture-handler
**React Native Gesture Handler** needs extra steps to finalize its installation, please follow their [installation instructions](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation). Please **make sure** to wrap your App with `GestureHandlerRootView` when you've upgraded to React Native Gesture Handler ^2.

React Native Reanimated 4 requires a compatible react-native-worklets version. Follow the Reanimated installation guide and compatibility table. Community CLI projects must use the react-native-worklets/plugin Babel plugin as documented there.

Once the native dependencies are configured, this is a complete minimal example:

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>
  );
}

Continue with Usage for sizing and pagination, or open the full Props reference.

Special thanks#

Getting Started | Dosu