Skip to main content

Installation

Get started with React Native Reanimated DnD in your project.

Prerequisites

Before installing React Native Reanimated DnD, ensure you have the following dependencies:

Required Dependencies

  1. React Native Reanimated 3.x
  2. React Native Gesture Handler 2.x

These are peer dependencies and must be installed separately.

Installation Steps

1. Install the Package

npm install react-native-reanimated-dnd

or with yarn:

yarn add react-native-reanimated-dnd

2. Install Peer Dependencies

Install React Native Reanimated and Gesture Handler if you haven't already:

npm install react-native-reanimated react-native-gesture-handler

or with yarn:

yarn add react-native-reanimated react-native-gesture-handler

3. Platform Setup

For React Native CLI Projects

iOS Setup

For iOS, you need to run pod install:

cd ios && pod install
Android Setup

For Android, the dependencies should be automatically linked. If you encounter issues, ensure your android/app/build.gradle includes:

implementation 'com.swmansion.reanimated:reanimated:3.x.x'
implementation 'com.swmansion.gesturehandler:react-native-gesture-handler:2.x.x'

For Expo Projects

If you're using Expo, you'll need to install the dependencies through Expo:

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

Note: You'll need to use a development build or eject to a bare workflow to use this library, as it requires native code that's not available in Expo Go.

Creating a Development Build

If you're using Expo SDK 46+, create a development build:

# Install the library
npx expo install react-native-reanimated-dnd react-native-reanimated react-native-gesture-handler

# Create a development build
npx expo run:ios
# or
npx expo run:android
Expo Configuration

Add the Reanimated plugin to your app.json or app.config.js:

{
"expo": {
"plugins": [
"react-native-reanimated/plugin"
]
}
}

Or if using app.config.js:

export default {
expo: {
plugins: [
'react-native-reanimated/plugin'
]
}
};

4. Configure Reanimated

Add the Reanimated plugin to your babel.config.js:

module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
'react-native-reanimated/plugin', // This must be last
],
};

Important: The Reanimated plugin must be the last item in the plugins array.

5. Configure Gesture Handler

For React Native 0.60+

Add the following to the top of your index.js (or App.js):

import 'react-native-gesture-handler';

For Expo

The gesture handler import is handled automatically in Expo projects, but you still need to ensure GestureHandlerRootView wraps your app:

import { GestureHandlerRootView } from 'react-native-gesture-handler';

export default function App() {
return (
<GestureHandlerRootView style={{ flex: 1 }}>
{/* Your app content */}
</GestureHandlerRootView>
);
}

Verification

To verify the installation, create a simple test component:

import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import {
DropProvider,
Draggable,
Droppable
} from 'react-native-reanimated-dnd';

export default function InstallationTest() {
return (
<GestureHandlerRootView style={styles.container}>
<DropProvider>
<View style={styles.content}>
<Text style={styles.title}>Installation Test</Text>

<Draggable data={{ id: '1', name: 'Test Item' }}>
<View style={styles.draggable}>
<Text>Drag me!</Text>
</View>
</Draggable>

<Droppable onDrop={(data) => console.log('Dropped:', data)}>
<View style={styles.droppable}>
<Text>Drop here!</Text>
</View>
</Droppable>
</View>
</DropProvider>
</GestureHandlerRootView>
);
}

const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f5f5f5',
},
content: {
flex: 1,
padding: 20,
justifyContent: 'center',
alignItems: 'center',
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 40,
color: '#333',
},
draggable: {
width: 100,
height: 100,
backgroundColor: '#4CAF50',
borderRadius: 10,
justifyContent: 'center',
alignItems: 'center',
marginBottom: 40,
},
droppable: {
width: 200,
height: 100,
backgroundColor: '#2196F3',
borderRadius: 10,
justifyContent: 'center',
alignItems: 'center',
borderWidth: 2,
borderStyle: 'dashed',
borderColor: '#1976D2',
},
});

If you can drag the green box and drop it on the blue area, your installation is successful!

Troubleshooting

Common Issues

1. "Cannot read property 'install' of undefined"

This usually means React Native Reanimated is not properly installed. Ensure you:

  • Added the Reanimated plugin to babel.config.js
  • Restarted your Metro bundler
  • Rebuilt your app

2. "RNGestureHandlerModule is null"

This indicates React Native Gesture Handler is not properly linked:

  • For iOS: Run cd ios && pod install
  • For Android: Ensure the package is properly linked
  • For Expo: Make sure you're using a development build, not Expo Go
  • Restart your app completely

3. Metro bundler issues

If you encounter Metro bundler issues, try:

# Clear Metro cache
npx react-native start --reset-cache

# For Expo
npx expo start -c

4. TypeScript errors

If you're using TypeScript and encounter type errors, ensure you have the latest type definitions:

npm install @types/react @types/react-native

5. Expo Go Limitations

This library requires native code and cannot run in Expo Go. You must:

  • Use a development build (npx expo run:ios or npx expo run:android)
  • Or eject to a bare workflow
  • Or use EAS Build for production apps

Platform-Specific Issues

iOS

  • Ensure you're using Xcode 12+ for React Native 0.64+
  • If you encounter build errors, try cleaning your build folder in Xcode
  • For M1 Macs, you might need to run arch -x86_64 pod install

Android

  • Ensure your Android SDK is up to date
  • If you encounter Gradle issues, try cleaning your project:
    cd android && ./gradlew clean

Expo Development Builds

  • Make sure you've created a development build after adding the library
  • Verify the Reanimated plugin is in your app.json or app.config.js
  • Check that you're not trying to run in Expo Go

Version Compatibility

React Native Reanimated DnDReact NativeReanimatedGesture HandlerExpo SDK
1.x.x0.64+3.x.x2.x.x46+

Next Steps

Once installation is complete:

  1. Quick Start - Build your first drag-and-drop interface
  2. Basic Concepts - Understand the core concepts
  3. Setup Provider - Configure the DropProvider
  4. API Reference - Explore all available components

Getting Help

If you encounter issues during installation:

  1. Check the troubleshooting section above
  2. Search existing GitHub issues
  3. Create a new issue with:
    • Your React Native version
    • Your platform (iOS/Android)
    • Whether you're using Expo or React Native CLI
    • Complete error messages
    • Steps to reproduce