React Native Reanimated DnD ๐ฏ
A drag-and-drop library that finally works on React Native โจ
Powerful, performant, and built for the modern React Native developer




๐ Why This Library?
After countless attempts with drag-and-drop solutions that don't work or are simply outdated, this is something that finally works. And it is not just another DnD library, but a complete ecosystem built from the ground up for React Native, offering a best-in-class developer experience and production-ready performance.
Highly feature-packed with every interaction pattern you'll ever need, yet simple enough to get started in minutes. Built for developers who demand both power and simplicity.
โจ Features
- ๐ High Performance - Built with Reanimated 4 and Worklets for buttery-smooth 60fps animations
- ๐๏ธ New Architecture Ready - Built for the modern React Native architecture used by Expo SDK 55+
- ๐ฆ Expo Compatible - Tested against Expo SDK 55 and React Native 0.83
- ๐ชถ Tiny Bundle Size - Only 70kb unpacked size, won't bloat your app
- ๐ฏ Flexible API - From simple drag-and-drop to complex sortable lists
- ๐ฑ React Native First - Designed specifically for mobile, not ported from web
- ๐ง TypeScript Ready - Full type safety with comprehensive definitions
- ๐จ Infinitely Customizable - Every animation, behavior, and style is configurable
- ๐ฆ Complete Component Suite - Draggable, Droppable, Sortable, and more
- ๐ช Smart Collision Detection - Multiple algorithms (center, intersect, contain)
- ๐ Vertical & Horizontal Sortable Lists - Drag and drop to sort lists in any direction with automatic scrolling
- ๐ฒ Sortable Grids - 2D grid drag-and-drop with flexible layouts, insert and swap modes
- โ Dynamic Heights - Sortable lists with variable item heights
- โก FlatList Performance - Optional FlatList rendering for large datasets with virtualization
- ๐ญ Drag Handles - Precise control with dedicated drag areas
- ๐ฌ Custom Animations - Spring, timing, or bring your own animation functions
- ๐ Pixel-Perfect Positioning - 9-point alignment system with custom offsets
- ๐ฆ Boundary Constraints - Keep draggables within specific areas
- โก State Management - Complete lifecycle tracking and callbacks
- ๐ฏ Developer Experience - Intuitive APIs, helpful warnings, and extensive examples
๐ฑ Interactive Examples
See it in action! A comprehensive example app with 18 interactive demos showcasing every feature and use case.
๐ฎ Try the Example App
๐ฑ Scan & Play
Scan with Expo Go to try the demo instantly
๐ Quick Start
- Install Expo Go on your phone (SDK 55)
- Scan the QR code with your camera
- Explore 18 interactive examples!
Or browse the code:
๐ View Example App โ
๐ Complete Documentation

Comprehensive guides, API reference, and interactive examples
The example app includes:
- ๐ต Sortable Music Queue - Complete list reordering with drag handles
- โ Horizontal Sortable - Reorderable horizontal scrolling list
- ๐ฒ Sortable Grid - 2D grid reordering with insert/swap modes
- โ Dynamic Heights - Sortable list with variable item heights
- ๐ฏ Basic Drag & Drop - Drag items to drop zones with pre-drag delay
- ๐ช Drag Handles - Dedicated drag regions for precise control
- ๐ฌ Custom Animations - Spring, timing, bounce & easing curves
- โจ Active Drop Styles - Visual feedback on hover
- ๐ Alignment & Offset - Precise drop positioning with offsets
- ๐ฆ Boundary Constraints - Axis-locked and bounded dragging
- ๐ฏ Collision Detection - Center, intersect & contain algorithms
- ๐บ๏ธ Dropped Items Map - Track items across multiple zones
- โก Drag State - State enum & onStateChange lifecycle
- โ๏ธ Custom Draggable - useDraggable hook implementation
๐ฌ Demo Showcase
๐ต Sortable Music Queue
Vertical list reordering with drag handles
https://github.com/user-attachments/assets/6493c05f-571c-416d-b81d-90bee98738b4
Features: Auto-scrolling โข Drag handles โข Smooth transitions
โ Horizontal Sortable
Reorderable horizontal scrolling list
https://github.com/user-attachments/assets/909c687e-146d-4233-a6e9-4bc3e7b69a35
Features: Horizontal scroll โข Handle & full item modes
๐ฒ Grid Sortable
2D grid reordering with insert & swap
https://github.com/user-attachments/assets/9647af01-098c-485f-92ba-cfc39d1bba0c
Features: Grid layout โข Insert & swap modes
โ Dynamic Heights
Sortable list with variable item heights
https://github.com/user-attachments/assets/b53078ca-51ab-4675-9389-e8fe69492370
Features: Variable heights โข Expand/collapse โข Auto-scroll
๐ฏ Basic Drag & Drop
Drag items to drop zones
https://github.com/user-attachments/assets/05859d25-6749-41b7-ae7e-cad5f864a268
Features: Drop zones โข Pre-drag delay โข Visual feedback
๐ญ Drag Handles
Dedicated regions for drag control
https://github.com/user-attachments/assets/f8be7bea-0f24-4446-83be-06ede43fa02a
Features: Full handle โข Bar handle โข Header handle
โจ Active Drop Styles
Visual hover effects on drop zones
https://github.com/user-attachments/assets/d4124110-6eb7-4a15-8f97-3e58b392d62e
Feedback: Pulse effect โข Glow effect โข Hover states
๐ Alignment & Offset
Precise drop positioning with offsets
https://github.com/user-attachments/assets/07fd39d0-a0d8-471c-86be-b73d70027163
Features: 9-point alignment โข X/Y offset controls
๐ฆ Bounded Dragging
Constrain movement within boundaries
https://github.com/user-attachments/assets/ce43a226-ec42-49c1-b528-df6599d294e1
Constraints: Container bounds โข Axis-locked โข Custom limits
๐ช Collision Detection
Center, intersect & contain algorithms
https://github.com/user-attachments/assets/1ac1860a-acc1-469a-ae3e-644a22393b86
Algorithms: Center โข Intersect โข Contain
๐บ๏ธ Dropped Items Map
Track items across multiple zones
https://github.com/user-attachments/assets/e4effc88-7161-4c5c-af6e-c06152cfbd09
Features: Multi-zone tracking โข Real-time mapping
โก Drag State
State lifecycle tracking & callbacks
https://github.com/user-attachments/assets/bceb9e7c-8f29-4630-81b0-945a7bcf29c5
States: Idle โข Dragging โข Dropped
๐ Installation
npm install react-native-reanimated-dnd
Peer Dependencies
npm install react-native-reanimated react-native-gesture-handler react-native-worklets
Follow the setup guides:
Make sure your Babel config uses "react-native-worklets/plugin" as the last plugin and that your app is running on the New Architecture, which is required by Reanimated 4.
๐ Requirements
Data Structure
All items in your data array MUST have an id property of type string:
interface YourDataType {
id: string; // Required!
// ... your other properties
}
This is essential for the library to track items during reordering.
Example:
// โ
Good - Each item has a unique string id
const tasks = [
{ id: "1", title: "Learn React Native", completed: false },
{ id: "2", title: "Build an app", completed: false },
{ id: "3", title: "Deploy to store", completed: true },
];
// โ Bad - Missing id properties
const badTasks = [{ title: "Task 1" }, { title: "Task 2" }];
// โ Bad - Non-string ids
const badTasksWithNumbers = [
{ id: 1, title: "Task 1" },
{ id: 2, title: "Task 2" },
];
The library includes runtime validation in development mode that will warn you if items are missing valid ID properties.
State Management Guidelines
IMPORTANT: Sortable components maintain their own internal state for optimal performance and animation consistency.
Do NOT Do This
- Never update external state (arrays, Redux, Zustand, etc.) directly in
onMove callbacks
- Never call
setItems(), setTasks(), or similar functions during drag operations
- Never manually splice or reorder external arrays in response to drag events
Correct Approach
- Use
onMove for logging, analytics, or side effects only
- Use
onDrop with allPositions parameter for read-only position tracking
- Let sortable components handle their internal reordering automatically
- Use external state only for the initial data and for non-reordering updates
Future Features
Programmatic list operations (add, update, delete, reorder items) that work correctly with internal state management will be added in upcoming releases. This will provide safe methods to modify sortable lists externally.
๐โโ๏ธ Quick Start
Basic Drag & Drop