React Native drag and drop libraries compared
The react-native-drax maintainers at NuclearPasta maintain this page, so we have a stake in one of the five libraries compared here. To make the comparison checkable, every cell in the matrix links to its source. All data is as of 30 Oct 2026. If you find a mistake, please open a GitHub issue.
Quick answer: which library fits which job
Each recommendation below comes only from the feature matrix. If another library fits a job better than react-native-drax, the table names it.
| Job | Libraries that fit | Why (from the matrix) |
|---|---|---|
| Simple reorderable list | react-native-reorderable-list, react-native-draggable-flatlist, react-native-drax, react-native-reanimated-dnd | All four document a sortable vertical list. reorderable-list and draggable-flatlist are FlatList-based list components with a drop indicator or placeholder. For drax, see sortable list in React Native. |
| Sortable grid | react-native-sortables, react-native-drax, react-native-reanimated-dnd | sortables has Sortable.Grid. drax has numColumns and a mixed-size grid (sortable grid guide, mixed-size grid example). reanimated-dnd documents grids with insert and swap. reorderable-list says it doesn't support multi-column lists. |
| Flex / wrapping layout | react-native-sortables | sortables is the only library here that documents a flex (wrapping) layout (Sortable.Flex). drax doesn't support it. |
| Free-form drop zones | react-native-drax, react-native-reanimated-dnd | Both document draggable and droppable primitives, and both document center / intersect / contain collision modes. drax also documents drop acceptance and capacity (drop zone acceptance). |
| Moving items between lists | None documents it as stable | In drax, cross-container drag is Experimental (drag between lists (experimental)). reanimated-dnd tracks items across multiple drop zones. draggable-flatlist and reorderable-list document nested lists, not moving items between them. Prototype this before you commit to a library. |
| Web support | react-native-drax | drax is the only library here that documents web support (web support). The sortables repo has a web example app. reanimated-dnd and reorderable-list don't claim web support. |
| FlashList / LegendList | react-native-drax | drax documents support for any list component, naming FlatList, FlashList and LegendList R-drax (DraxList API). |
Feature matrix
How to read the cells:
- Yes / No: the cited source says so explicitly.
- Not documented (or Not stated): the cited source doesn't mention the feature. That isn't the same as "No". The feature may exist and just not be documented.
- unverified: we couldn't confirm the cell from a source. Don't rely on it until it's checked.
- n/a: the criterion doesn't apply to that kind of library. For example, a list component has no free-form drop-acceptance setting.
Column abbreviations: draggable-flatlist = react-native-draggable-flatlist, reanimated-dnd = react-native-reanimated-dnd, sortables = react-native-sortables, reorderable-list = react-native-reorderable-list.
Maintenance and adoption
As of 30 Oct 2026. Download counts cover 2026-09-29 to 2026-10-28.
| Criterion | Drax | draggable-flatlist | reanimated-dnd | sortables | reorderable-list |
|---|---|---|---|---|---|
| Latest version (date) npm | 1.1.0 (2026-03-23) | 4.0.3 (2025-05-06) | 2.0.0 (2026-03-16) | 1.10.1 (2026-09-26) | 0.18.2 (2026-10-18) |
| npm downloads, last month dl | 101,111 | 1,943,449 | 121,547 | 622,279 | 378,523 |
| GitHub stars / open issues + PRs gh | 716 / 35 | 2,197 / 232 | 1,075 / 9 | 981 / 21 | 326 / 13 |
| Last push to repo gh | 2026-10-30 | 2026-01-21 | 2026-07-30 | 2026-09-26 | 2026-10-18 |
| License gh | MIT | MIT | MIT | MIT | MIT |
What these signals tell you, and what they don't:
- Downloads show how widely a package is installed. They don't measure quality or fit for your use case. Automated installs (CI, for example) count too.
- Stars show interest at some point in time, not current activity.
- Open issues + PRs comes from GitHub's
open_issues_count, which counts open pull requests as well as issues. A high number can mean heavy use, a slow triage process, or both. A low number doesn't guarantee few bugs. - Last push shows recent repository activity. A push isn't a release, so read it alongside the latest version date.
Requirements and platforms
As of 30 Oct 2026.
Reanimated 4 supports only the New Architecture (RA-compat). So any library that requires Reanimated 4 can't be used in an app that's still on the Old Architecture. This row decides which libraries are open to Old Architecture apps.
| Criterion | Drax | draggable-flatlist | reanimated-dnd | sortables | reorderable-list |
|---|---|---|---|---|---|
| Reanimated peer npm | ^4.0.0 | >=2.8.0 | >=4.2.0 (+ react-native-worklets >=0.7.0) | >=3.0.0 | >=3.12.0 |
| Gesture Handler peer npm | >=2.0.0 (v3 recommended R-drax) | >=2.0.0 | >=2.28.0 | >=2.0.0 | >=2.12.0 |
| Minimum React Native | 0.78 (required by Reanimated 4 RA-compat) | >=0.64.0 npm | >=0.80.0 npm | * npm | * npm |
| Architecture | New Architecture only (Reanimated 4 RA-compat); "New Architecture compatible (Fabric)" R-drax | Not documented. Open New-Arch flicker issues #602, #621 | New Architecture ("built for … Expo SDK 55+") R-RDND | Old and New R-S | Not documented: unverified |
| Expo | Expo CLI badge R-drax. Expo Router example app R-drax | Not documented: unverified | "Tested against Expo SDK 55 and React Native 0.83" R-RDND | "Expo compatible" R-S | Not documented: unverified |
| iOS / Android | Yes R-drax | Not stated explicitly: unverified | Yes (mobile-first) R-RDND | Yes ("iOS and Android") sortables docs | Yes (README badges) R-RL |
| Web | Yes R-drax, G-web | Not documented: unverified | Not claimed ("designed specifically for mobile, not ported from web") R-RDND | Web example app in repo R-S; support level unverified | Not claimed (badges iOS/Android only) R-RL |
Layouts
As of 30 Oct 2026.
| Criterion | Drax | draggable-flatlist | reanimated-dnd | sortables | reorderable-list |
|---|---|---|---|---|---|
| Free-form drag to drop zones | Yes (DraxView drag/receive) R-drax, API-view | Not documented (README describes a FlatList component) | Yes (Draggable, Droppable) R-RDND | Not documented | Not documented |
| Sortable vertical list | Yes (DraxList) R-drax | Yes R-DFL | Yes R-RDND | unverified (README lists Grid and Flex only) | Yes R-RL |
| Horizontal list | Yes (horizontal) API-list | Not documented (props are spread to FlatList): unverified | Yes R-RDND | unverified | Yes R-RL |
| Sortable grid / multi-column | Yes (numColumns) API-list | Not documented | Yes (insert and swap) R-RDND | Yes (Sortable.Grid) R-S | No (numColumns listed as unsupported) R-RL |
| Variable / mixed item sizes | Yes: mixed-size grid (getItemSpan on useSortableList, packGrid) R-drax | Not documented | Variable-height lists R-RDND | Items with different dimensions R-S | unverified |
| Flex (wrapping) layout | No drax-table | Not documented | Not documented | Yes (Sortable.Flex) R-S | Not documented |
| Underlying list / virtualization | Any list: FlatList, FlashList, LegendList R-drax | FlatList R-DFL | Optional FlatList rendering with virtualization R-RDND | unverified | FlatList R-RL |
Interaction features
As of 30 Oct 2026.
For how drax handles these, see drag handles, collision algorithms and drop zone acceptance.
| Criterion | Drax | draggable-flatlist | reanimated-dnd | sortables | reorderable-list |
|---|---|---|---|---|---|
| Drag handles | Yes (DraxHandle) R-drax | Via the drag() callback from any element R-DFL | Yes R-RDND | Yes (Sortable.Handle) D-S-handle | Via the useReorderableDrag hook R-RL |
| Auto-scroll while dragging | Yes (DraxScrollView; list auto-scroll) R-drax | Yes (autoscrollThreshold, autoscrollSpeed) R-DFL | Yes R-RDND | Yes R-S | Yes (autoscroll* props) R-RL |
| Move items between lists | Experimental (SortableBoardContainer) R-drax, drax-table | Nested lists in one scroll container; transfer between lists not documented R-DFL | Track items across multiple drop zones R-RDND; cross-list sortable unverified | Not documented | Nested lists; transfer not documented R-RL |
| Axis lock / drag bounds | Yes (lockToMainAxis, lockDragX/YPosition, dragBoundsRef) API-list, API-view | unverified (dragItemOverflow only) R-DFL | Yes ("axis-locked and bounded dragging") R-RDND | unverified | unverified |
| Collision modes | center / intersect / contain R-drax | Not documented | center / intersect / contain R-RDND | Not documented | Not documented |
| Drop acceptance / capacity | acceptsDrag + capacity R-drax, API-view | n/a | unverified | n/a | n/a |
| Reorder strategies | insert / swap API-list | Not documented | insert / swap (grid) R-RDND | insertion / swapping R-S | Not documented |
| Drop indicator / placeholder | Yes (renderDropIndicator on SortableContainer) R-drax | renderPlaceholder R-DFL | Not documented | Yes D-S-drop | Yes (renderDropIndicator) R-RL |
| Item add/remove animations | itemEntering / itemExiting API-list | itemEnteringAnimation / itemExitingAnimation R-DFL | unverified | Yes (layout animations for add/remove) R-S | Yes ("Layout Animations") R-RL |
| Haptic feedback | No drax-table | Not documented | Not documented | Yes, optional (via several haptics libraries) R-S | Not documented |
Accessibility and developer experience
As of 30 Oct 2026.
| Criterion | Drax | draggable-flatlist | reanimated-dnd | sortables | reorderable-list |
|---|---|---|---|---|---|
| Built-in accessibility | Auto-generated labels/hints/role on sortable list items + reduced motion G-a11y | Not documented | Guidance guide; labels set manually D-RDND-a11y | Not documented | Not documented |
| TypeScript types shipped | Yes npm (written in TS R-drax) | Yes npm | Yes npm, R-RDND | Yes npm, R-S | Yes npm |
| Dedicated docs site | Yes (docs) | No (README) | Yes (docs) | Yes (docs) | No (README) |
For drax's accessibility features, see accessibility and reduced motion.
Sources
Every source below was loaded on 30 Oct 2026.
- npm:
https://registry.npmjs.org/<package>/latestfor the version, peer dependencies andtypes. Release dates come fromhttps://registry.npmjs.org/<package>→time. - dl:
https://api.npmjs.org/downloads/point/last-month/<package>, for the window 2026-09-29 to 2026-10-28. - gh:
https://api.github.com/repos/<owner>/<repo>, read on 30 Oct 2026.open_issues_countincludes pull requests. - R-drax: react-native-drax README
- API-list: DraxList API
- API-view: DraxView API
- G-a11y: drax accessibility guide
- G-web: drax web support guide
- drax-table: drax docs root comparison table. This is self-reported by the drax maintainers.
- R-DFL: react-native-draggable-flatlist README
- R-RDND: react-native-reanimated-dnd README
- D-RDND-a11y: reanimated-dnd accessibility guide
- R-S: react-native-sortables README
- D-S-handle: sortables Handle docs
- D-S-drop: sortables drop indicator example
- R-RL: react-native-reorderable-list README
- RA-compat: Reanimated compatibility table
Library profiles
react-native-drax
What it's for: free-form drag-and-drop (draggable views and drop zones) plus sortable lists and grids, in one library.
Where it's strongest: drop zones with center / intersect / contain collision modes and acceptsDrag + capacity. Sortable lists that work on any list component (FlatList, FlashList, LegendList). Grids with numColumns and mixed item sizes. Documented web support. Auto-generated accessibility labels and reduced-motion handling on sortable list items. For the design behind it, see how Drax stays at 60fps.
Limits: moving items between lists is Experimental. There's no flex (wrapping) layout and no haptic feedback. Because drax depends on Reanimated 4, it runs only on the New Architecture.
Requirements: Reanimated ^4.0.0, Gesture Handler >=2.0.0 (v3 recommended) and React Native 0.78 (required by Reanimated 4). Version 1.0.0 was a full rewrite, released 2026-03-22, and 1.1.0 followed on 2026-03-23. Docs for the unreleased 2.x line are at next; planned features are listed in the roadmap.
Links: react-native-drax docs · GitHub · npm
react-native-draggable-flatlist
What it's for: a drag-to-reorder FlatList.
Where it's strongest: it's the most-downloaded library in this comparison, with 1,943,449 npm downloads from 2026-09-29 to 2026-10-28. Its README documents handles via a drag() callback, auto-scroll (autoscrollThreshold, autoscrollSpeed), renderPlaceholder, and item entering and exiting animations.
Limits: grids, free-form drop zones and moving items between lists aren't documented. Architecture support isn't documented either, and New Architecture flicker issues #602 and #621 are open. The latest release is 4.0.3 (2025-05-06). On 30 Oct 2026, the repo had 232 open issues + PRs.
Requirements: Reanimated >=2.8.0, Gesture Handler >=2.0.0, React Native >=0.64.0.
react-native-reanimated-dnd
What it's for: free-form drag-and-drop (Draggable, Droppable) plus sortable lists and grids. It's the library closest to drax in scope.
Where it's strongest: grids with insert and swap, center / intersect / contain collision modes, "axis-locked and bounded dragging", variable-height lists, optional FlatList rendering with virtualization, and a dedicated accessibility guide (labels are set manually).
Limits: it doesn't claim web support ("designed specifically for mobile, not ported from web"). A drop indicator isn't documented. Because it needs Reanimated 4, it runs on the New Architecture only.
Requirements: v2 needs Reanimated >=4.2.0, react-native-worklets >=0.7.0, Gesture Handler >=2.28.0 and React Native >=0.80.0. It's "tested against Expo SDK 55 and React Native 0.83". The latest release is 2.0.0 (2026-03-16).
react-native-sortables
What it's for: sortable grid and flex layouts (Sortable.Grid, Sortable.Flex).
Where it's strongest: it's the only library in this comparison that documents a flex (wrapping) layout and optional haptic feedback. It supports both the Old and New Architecture, and its README says it's "Expo compatible". It also documents handles, a drop indicator, insertion and swapping, items with different dimensions, and add/remove layout animations.
Limits: the README lists only Grid and Flex layouts. Free-form drop zones and moving items between lists aren't documented. The repo has a web example app.
Requirements: Reanimated >=3.0.0 (works with Reanimated 3 or 4), Gesture Handler >=2.0.0, React Native *. The latest release is 1.10.1 (2026-09-26).
react-native-reorderable-list
What it's for: a FlatList-based reorderable list.
Where it's strongest: a built-in drop indicator (renderDropIndicator), nested lists, handles via the useReorderableDrag hook, autoscroll* props and layout animations. It supports vertical and horizontal lists.
Limits: numColumns isn't supported, so there are no grids. Moving items between lists isn't documented, and it doesn't claim web support (its badges list iOS and Android only). It's pre-1.0 (0.x), and its README says the API isn't stable yet.
Requirements: Reanimated >=3.12.0, Gesture Handler >=2.12.0, React Native *. The latest release is 0.18.2 (2026-10-18).
Older libraries
These two are listed so you can find them if you're searching for them. We don't recommend either for a new app unless you check its current state first. They aren't in the matrix.
- react-native-sortable-list: latest version 0.0.25 (2022-04-08) npm.
- react-native-drag-sort: latest version 2.4.4 (2021-07-29) npm.
Requirements at a glance (New Architecture, Reanimated, Expo)
The Reanimated version a library requires decides whether you can use it on the Old Architecture (RA-compat):
- Reanimated 4 or later, New Architecture only: react-native-drax (^4.0.0) and react-native-reanimated-dnd (>=4.2.0).
- Reanimated 3 or later, which works on both architectures: react-native-sortables (>=3.0.0; documents Old and New) and react-native-reorderable-list (>=3.12.0). react-native-draggable-flatlist's peer range starts lower (>=2.8.0), so it also accepts Reanimated 3. Except for sortables, these libraries don't document which architectures they support. Their peer ranges allow Reanimated 3, but that alone doesn't confirm they run on either architecture.
The deciding constraint is this: React Native 0.82+ and Expo SDK 55+ always run the New Architecture (React Native 0.82 release notes, Expo New Architecture guide). On those versions, the Old Architecture question doesn't come up. It only matters for apps still on older React Native versions that haven't migrated.
How this comparison was made
Conflict of interest: the react-native-drax maintainers wrote this page, and we built one of the libraries it compares. To keep that in check, every cell cites a public source. Cells we couldn't confirm are marked "unverified" rather than filled in, and the quick-answer table recommends other libraries where the matrix shows they fit better.
Sources: each library's README and docs site, the npm registry API (versions, peer dependencies, types and release dates), the npm downloads API (window 2026-09-29 to 2026-10-28), and the GitHub API (stars, open issues + PRs, last push and license). For drax, a few cells come from the drax docs root table, which is self-reported.
As of: 30 Oct 2026. We refresh the data at least quarterly and update the dates on each block when we do.
Report a correction: if a cell is wrong or out of date, especially for a library you maintain, open an issue on GitHub and include a link to the source.
Switching from another library
If you're moving from react-native-draggable-flatlist or another library, list the features you use today and check each one against the matrix rows above, especially architecture, grid support and moving items between lists. If drax covers them, install react-native-drax and rebuild one list first before you migrate the rest.