Skip to main content

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.

JobLibraries that fitWhy (from the matrix)
Simple reorderable listreact-native-reorderable-list, react-native-draggable-flatlist, react-native-drax, react-native-reanimated-dndAll 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 gridreact-native-sortables, react-native-drax, react-native-reanimated-dndsortables 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 layoutreact-native-sortablessortables is the only library here that documents a flex (wrapping) layout (Sortable.Flex). drax doesn't support it.
Free-form drop zonesreact-native-drax, react-native-reanimated-dndBoth 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 listsNone documents it as stableIn 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 supportreact-native-draxdrax 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 / LegendListreact-native-draxdrax 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.

CriterionDraxdraggable-flatlistreanimated-dndsortablesreorderable-list
Latest version (date) npm1.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 dl101,1111,943,449121,547622,279378,523
GitHub stars / open issues + PRs gh716 / 352,197 / 2321,075 / 9981 / 21326 / 13
Last push to repo gh2026-10-302026-01-212026-07-302026-09-262026-10-18
License ghMITMITMITMITMIT

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.

CriterionDraxdraggable-flatlistreanimated-dndsortablesreorderable-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 Native0.78 (required by Reanimated 4 RA-compat)>=0.64.0 npm>=0.80.0 npm* npm* npm
ArchitectureNew Architecture only (Reanimated 4 RA-compat); "New Architecture compatible (Fabric)" R-draxNot documented. Open New-Arch flicker issues #602, #621New Architecture ("built for … Expo SDK 55+") R-RDNDOld and New R-SNot documented: unverified
ExpoExpo CLI badge R-drax. Expo Router example app R-draxNot documented: unverified"Tested against Expo SDK 55 and React Native 0.83" R-RDND"Expo compatible" R-SNot documented: unverified
iOS / AndroidYes R-draxNot stated explicitly: unverifiedYes (mobile-first) R-RDNDYes ("iOS and Android") sortables docsYes (README badges) R-RL
WebYes R-drax, G-webNot documented: unverifiedNot claimed ("designed specifically for mobile, not ported from web") R-RDNDWeb example app in repo R-S; support level unverifiedNot claimed (badges iOS/Android only) R-RL

Layouts​

As of 30 Oct 2026.

CriterionDraxdraggable-flatlistreanimated-dndsortablesreorderable-list
Free-form drag to drop zonesYes (DraxView drag/receive) R-drax, API-viewNot documented (README describes a FlatList component)Yes (Draggable, Droppable) R-RDNDNot documentedNot documented
Sortable vertical listYes (DraxList) R-draxYes R-DFLYes R-RDNDunverified (README lists Grid and Flex only)Yes R-RL
Horizontal listYes (horizontal) API-listNot documented (props are spread to FlatList): unverifiedYes R-RDNDunverifiedYes R-RL
Sortable grid / multi-columnYes (numColumns) API-listNot documentedYes (insert and swap) R-RDNDYes (Sortable.Grid) R-SNo (numColumns listed as unsupported) R-RL
Variable / mixed item sizesYes: mixed-size grid (getItemSpan on useSortableList, packGrid) R-draxNot documentedVariable-height lists R-RDNDItems with different dimensions R-Sunverified
Flex (wrapping) layoutNo drax-tableNot documentedNot documentedYes (Sortable.Flex) R-SNot documented
Underlying list / virtualizationAny list: FlatList, FlashList, LegendList R-draxFlatList R-DFLOptional FlatList rendering with virtualization R-RDNDunverifiedFlatList R-RL

Interaction features​

As of 30 Oct 2026.

For how drax handles these, see drag handles, collision algorithms and drop zone acceptance.

CriterionDraxdraggable-flatlistreanimated-dndsortablesreorderable-list
Drag handlesYes (DraxHandle) R-draxVia the drag() callback from any element R-DFLYes R-RDNDYes (Sortable.Handle) D-S-handleVia the useReorderableDrag hook R-RL
Auto-scroll while draggingYes (DraxScrollView; list auto-scroll) R-draxYes (autoscrollThreshold, autoscrollSpeed) R-DFLYes R-RDNDYes R-SYes (autoscroll* props) R-RL
Move items between listsExperimental (SortableBoardContainer) R-drax, drax-tableNested lists in one scroll container; transfer between lists not documented R-DFLTrack items across multiple drop zones R-RDND; cross-list sortable unverifiedNot documentedNested lists; transfer not documented R-RL
Axis lock / drag boundsYes (lockToMainAxis, lockDragX/YPosition, dragBoundsRef) API-list, API-viewunverified (dragItemOverflow only) R-DFLYes ("axis-locked and bounded dragging") R-RDNDunverifiedunverified
Collision modescenter / intersect / contain R-draxNot documentedcenter / intersect / contain R-RDNDNot documentedNot documented
Drop acceptance / capacityacceptsDrag + capacity R-drax, API-viewn/aunverifiedn/an/a
Reorder strategiesinsert / swap API-listNot documentedinsert / swap (grid) R-RDNDinsertion / swapping R-SNot documented
Drop indicator / placeholderYes (renderDropIndicator on SortableContainer) R-draxrenderPlaceholder R-DFLNot documentedYes D-S-dropYes (renderDropIndicator) R-RL
Item add/remove animationsitemEntering / itemExiting API-listitemEnteringAnimation / itemExitingAnimation R-DFLunverifiedYes (layout animations for add/remove) R-SYes ("Layout Animations") R-RL
Haptic feedbackNo drax-tableNot documentedNot documentedYes, optional (via several haptics libraries) R-SNot documented

Accessibility and developer experience​

As of 30 Oct 2026.

CriterionDraxdraggable-flatlistreanimated-dndsortablesreorderable-list
Built-in accessibilityAuto-generated labels/hints/role on sortable list items + reduced motion G-a11yNot documentedGuidance guide; labels set manually D-RDND-a11yNot documentedNot documented
TypeScript types shippedYes npm (written in TS R-drax)Yes npmYes npm, R-RDNDYes npm, R-SYes npm
Dedicated docs siteYes (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.

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.

Links: README · npm

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).

Links: docs · GitHub · npm

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).

Links: docs · GitHub · npm

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).

Links: README · npm

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.

Try react-native-drax​