react-beautiful-dnd vs react-sortable-hoc vs react-sortable-tree vs react-easy-sort
React Drag-and-Drop Libraries Comparison
1 Year
react-beautiful-dndreact-sortable-hocreact-sortable-treereact-easy-sortSimilar Packages:
What's React Drag-and-Drop Libraries?

Drag-and-drop libraries for React provide developers with the ability to create interactive interfaces where users can easily move items around. These libraries simplify the implementation of drag-and-drop functionality, allowing for a more dynamic user experience. Each library offers unique features and design principles, catering to different use cases, such as simple sorting, complex tree structures, or customizable drag-and-drop interactions. Note that react-beautiful-dnd has been deprecated and is no longer actively maintained, so it is recommended to consider alternatives like react-easy-sort, react-sortable-hoc, or react-sortable-tree for long-term projects.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
react-beautiful-dnd1,777,53633,7031.39 MB643-Apache-2.0
react-sortable-hoc497,01710,852-2944 years agoMIT
react-sortable-tree54,4964,938-3425 years agoMIT
react-easy-sort46,166186324 kB11a year agoMIT
Feature Comparison: react-beautiful-dnd vs react-sortable-hoc vs react-sortable-tree vs react-easy-sort

Complexity and Use Case

  • react-beautiful-dnd:

    react-beautiful-dnd is designed for complex drag-and-drop interfaces, supporting nested lists and multiple draggable items. It provides a rich API that allows for advanced use cases, such as drag-and-drop between different lists, making it suitable for applications like Kanban boards. However, as it is deprecated, developers are encouraged to look for alternatives like react-easy-sort or react-sortable-hoc for ongoing projects.

  • react-sortable-hoc:

    react-sortable-hoc offers a balance between simplicity and flexibility, allowing developers to create sortable lists and grids with ease. It is well-suited for applications that require custom drag-and-drop behavior without the complexity of a full-fledged solution.

  • react-sortable-tree:

    react-sortable-tree specializes in tree structures, providing built-in support for hierarchical data manipulation. It is perfect for applications that need to visualize and manage nested data, such as file explorers or organizational charts.

  • react-easy-sort:

    react-easy-sort is focused on simplicity and ease of use, making it ideal for basic sortable lists. It is less feature-rich compared to others but excels in scenarios where minimal configuration and quick setup are required.

Customization and Extensibility

  • react-beautiful-dnd:

    react-beautiful-dnd allows for extensive customization of drag-and-drop interactions, including animations and styling. It supports custom drag previews and drop effects, enabling developers to create a unique user experience tailored to their application's needs. However, as it is deprecated, developers should transition to supported libraries like react-sortable-hoc or react-sortable-tree for future use.

  • react-sortable-hoc:

    react-sortable-hoc provides a flexible API that allows for significant customization of the drag-and-drop experience. Developers can easily override default behaviors and styles, making it adaptable to various design requirements.

  • react-sortable-tree:

    react-sortable-tree offers customization options for tree nodes and drag-and-drop behaviors. Developers can define how nodes are rendered and how interactions are handled, making it suitable for applications with specific design needs.

  • react-easy-sort:

    react-easy-sort is straightforward but offers limited customization options. It is best for developers who prioritize simplicity over extensive customization, making it less suitable for complex interfaces that require unique behaviors.

Performance

  • react-beautiful-dnd:

    react-beautiful-dnd is optimized for performance, utilizing a virtualized rendering approach to minimize re-renders during drag-and-drop operations. This ensures a smooth user experience even with large lists or complex interactions. However, given that it is deprecated, developers should consider react-sortable-hoc or react-sortable-tree for long-term performance optimizations.

  • react-sortable-hoc:

    react-sortable-hoc is designed to handle performance efficiently, especially in sortable lists. It minimizes re-renders by only updating the necessary components during drag-and-drop actions, ensuring a responsive interface.

  • react-sortable-tree:

    react-sortable-tree is built to manage performance in tree structures, but it can become less efficient with very large trees. Developers may need to implement optimizations, such as virtualization, for better performance in extensive datasets.

  • react-easy-sort:

    react-easy-sort is lightweight and performs well for basic use cases. However, it may not be suitable for applications with extensive data sets or complex interactions due to its simplicity and lack of advanced optimizations.

Accessibility

  • react-beautiful-dnd:

    react-beautiful-dnd prioritizes accessibility by following WAI-ARIA standards, ensuring that drag-and-drop interactions are usable by all users, including those relying on assistive technologies. It provides keyboard navigation support and screen reader compatibility. However, as it is deprecated, developers should explore alternatives like react-sortable-hoc for long-term accessibility support.

  • react-sortable-hoc:

    react-sortable-hoc does not inherently focus on accessibility, so developers may need to implement additional features to ensure compliance with accessibility standards. It is suitable for applications where accessibility is a secondary consideration.

  • react-sortable-tree:

    react-sortable-tree includes some accessibility features, but like react-sortable-hoc, it may require additional work to meet comprehensive accessibility standards. It is important for developers to consider accessibility when implementing tree structures.

  • react-easy-sort:

    react-easy-sort has basic accessibility features but may not fully comply with WAI-ARIA standards. It is best for applications where accessibility is not a primary concern, given its simplicity.

Learning Curve

  • react-beautiful-dnd:

    react-beautiful-dnd has a moderate learning curve due to its comprehensive API and advanced features. Developers may need time to fully understand its capabilities and best practices for implementation. As it is deprecated, it is recommended to explore alternatives like react-sortable-hoc for new projects.

  • react-sortable-hoc:

    react-sortable-hoc has a moderate learning curve, offering a balance between ease of use and flexibility. Developers familiar with higher-order components in React will find it straightforward to integrate.

  • react-sortable-tree:

    react-sortable-tree may have a steeper learning curve due to its focus on tree structures and hierarchical data. Developers need to understand how to manage nested data effectively to utilize its full potential.

  • react-easy-sort:

    react-easy-sort is very easy to learn and implement, making it ideal for beginners or those looking for a quick solution to add sortable functionality without much overhead.

How to Choose: react-beautiful-dnd vs react-sortable-hoc vs react-sortable-tree vs react-easy-sort
  • react-beautiful-dnd:

    Choose react-beautiful-dnd if you need a highly customizable and accessible drag-and-drop solution that adheres to the WAI-ARIA standards. It is ideal for applications requiring complex drag-and-drop interactions with a focus on user experience and accessibility. However, since it has been deprecated, consider using react-easy-sort, react-sortable-hoc, or react-sortable-tree for future-proofing your project.

  • react-sortable-hoc:

    Select react-sortable-hoc for a flexible and powerful solution that allows you to create sortable lists and grids with minimal setup. It is suitable for applications that require more control over the drag-and-drop behavior and offers higher-order components for easy integration.

  • react-sortable-tree:

    Use react-sortable-tree if you need to implement a tree structure with drag-and-drop capabilities. This library is specifically designed for hierarchical data and provides features like node dragging, drop targets, and customizable tree nodes.

  • react-easy-sort:

    Opt for react-easy-sort if you want a lightweight solution for simple sortable lists. It is easy to implement and provides a straightforward API for basic drag-and-drop functionality without the overhead of more complex libraries.

README for react-beautiful-dnd

⚠️ Maintenance & support

This library continues to be relied upon heavily by Atlassian products, but we are focused on other priorities right now and have no current plans for further feature development or improvements.

It will continue to be here on GitHub and we will still make critical updates (e.g. security fixes, if any) as required, but will not be actively monitoring or replying to issues and pull requests.

We recommend that you don’t raise issues or pull requests, as they will not be reviewed or actioned until further notice.


react beautiful dnd logo

react-beautiful-dnd (rbd)

Beautiful and accessible drag and drop for lists with React

CircleCI branch npm

quote application example

Play with this example if you want!

Core characteristics

  • Beautiful and natural movement of items 💐
  • Accessible: powerful keyboard and screen reader support ♿️
  • Extremely performant 🚀
  • Clean and powerful api which is simple to get started with
  • Plays extremely well with standard browser interactions
  • Unopinionated styling
  • No creation of additional wrapper dom nodes - flexbox and focus management friendly!

Get started 👩‍🏫

We have created a free course on egghead.io 🥚 to help you get started with react-beautiful-dnd as quickly as possible.

course-logo

Currently supported feature set ✅

  • Vertical lists ↕
  • Horizontal lists ↔
  • Movement between lists (▤ ↔ ▤)
  • Virtual list support 👾 - unlocking 10,000 items @ 60fps
  • Combining items
  • Mouse 🐭, keyboard 🎹♿️ and touch 👉📱 (mobile, tablet and so on) support
  • Multi drag support
  • Incredible screen reader support ♿️ - we provide an amazing experience for english screen readers out of the box 📦. We also provide complete customisation control and internationalisation support for those who need it 💖
  • Conditional dragging and conditional dropping
  • Multiple independent lists on the one page
  • Flexible item sizes - the draggable items can have different heights (vertical lists) or widths (horizontal lists)
  • Add and remove items during a drag
  • Compatible with semantic <table> reordering - table pattern
  • Auto scrolling - automatically scroll containers and the window as required during a drag (even with keyboard 🔥)
  • Custom drag handles - you can drag a whole item by just a part of it
  • Able to move the dragging item to another element while dragging (clone, portal) - Reparenting your <Draggable />
  • Create scripted drag and drop experiences 🎮
  • Allows extensions to support for any input type you like 🕹
  • 🌲 Tree support through the @atlaskit/tree package
  • A <Droppable /> list can be a scroll container (without a scrollable parent) or be the child of a scroll container (that also does not have a scrollable parent)
  • Independent nested lists - a list can be a child of another list, but you cannot drag items from the parent list into a child list
  • Server side rendering (SSR) compatible - see resetServerContext()
  • Plays well with nested interactive elements by default

Motivation 🤔

react-beautiful-dnd exists to create beautiful drag and drop for lists that anyone can use - even people who cannot see. For a good overview of the history and motivations of the project you can take a look at these external resources:

Not for everyone ✌️

There are a lot of libraries out there that allow for drag and drop interactions within React. Most notable of these is the amazing react-dnd. It does an incredible job at providing a great set of drag and drop primitives which work especially well with the wildly inconsistent html5 drag and drop feature. react-beautiful-dnd is a higher level abstraction specifically built for lists (vertical, horizontal, movement between lists, nested lists and so on). Within that subset of functionality react-beautiful-dnd offers a powerful, natural and beautiful drag and drop experience. However, it does not provide the breadth of functionality offered by react-dnd. So react-beautiful-dnd might not be for you depending on what your use case is.

Documentation 📖

About 👋

Sensors 🔉

The ways in which somebody can start and control a drag

API 🏋️‍

diagram

Guides 🗺

Patterns 👷‍

Support 👩‍⚕️

Read this in other languages 🌎

Creator ✍️

Alex Reardon @alexandereardon

Alex is no longer personally maintaning this project. The other wonderful maintainers are carrying this project forward.

Maintainers

Collaborators 🤝