Beautiful drag and drop: a year in review

Alex Reardon
4 min readAug 10, 2018

--

One year ago, we at Atlassian released react-beautiful-dnd with the aim of creating a more beautiful and accessible drag and drop experience for the web 🎂🎉

react-beautiful-dnd announcement blog: Rethinking drag and drop

I wanted to take this opportunity to reflect on how far we have come in the last year, and the direction we are heading in.

A few statistics

Grown to 170,000 monthly npm downloads (source: npm trends)
8550 stars on github (source: bestofjs)

Humble beginnings

In our original release of react-beautiful-dnd we only supported vertical reordering within single lists, with a mouse and a keyboard. That’s it!

At that point the library was very limited. However, we had big dreams and continued to press forward

Pressing forward

Over the course of a year we continued to add more improvements and features to the library. Here are some highlights — at least for me!

New features 🤩

Horizontal reordering
Moving between lists (with keyboard and mouse)
Touch support 📱
Auto scrolling (with mouse, touch and keyboard)

Screen reader support

We added first class screen reader support, which when combined with keyboard dragging, allows drag and drop to be performed by people with visual impairments ❤️

Multi drag support 💃
Support for reordering semantic <table> rows

Small improvements 🔬

There has been a constant stream of small improvements to make the library more stable, flexible and robust. As a result of this we have maintained a near zero bug count for the project

Getting started course 👨‍🏫

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

Performance engineering 🚀

We have invested considerable effort into making react-beautiful-dnd extremely fast. We have a number of big wins in this space:

Engineering health 👩‍⚕️

There is way too many things to list individually here. So I will try to name a few categories

  • Testing: over 1,100 unit tests, as well as browser tests
  • Validated code: prettier, eslint, flow
  • Clarity: Aggressive refactoring to reduce internal friction
  • Bundles: more bundle options, build to break on bundle size regressions, bundle size reductions
  • Build: significant build improvements, including a 50% reduction in build times
  • Documentation: massive efforts to improve clarity
  • Development warnings: printing warnings in development builds when we detect a consumer is making a mistake in their usage

Where to from here?

Right now we are working on a large project to allow changes to a list while a drag is occurring, as well as a ‘grouping’ mode where you can hover over an item to group on it. Once this larger piece of work is finished there is a long list of features and improvements we are hoping to work on. They are focused around creating an even more beautiful, performant and robust experience for users. They include:

  • Support for nested scroll containers
  • Virtual list support
  • Animated placeholders
  • Programatic dragging API
  • A standalone website with embedded examples
  • More work on improving performance (I think I have a problem)

Thanks for everything so far! 🎉

This last year has been challenging and exhilarating. I am really excited for the future of react-beautiful-dnd and it’s place in creating a more beautiful and accessible drag and drop experience for the web.

Thank you to Atlassian and all of our external contributors who have invested so much effort and love to get react-beautiful-dnd to where it is today.

If you are looking to get started using, or contributing to react-beautiful-dnd the best place to go is to the project repository.

Cheers

More where this came from

This story is published in Noteworthy, where thousands come every day to learn about the people & ideas shaping the products we love.

Follow our publication to see more product & design stories featured by the Journal team.

--

--