Draggable is a JavaScript library that provides a comprehensive API for implementing custom drag and drop interactions.
The library abstracts native browser drag, mouse, touch, and force touch events into a unified interface, handling the heavy lifting of creating mirrors, emitting events, and managing sensor detection. Developers can extend dragging behavior by hooking into the event lifecycle and add custom drag detection through sensors. The core Draggable module provides the foundation, while additional modules—Sortable, Droppable, and Swappable—build on top of it to provide specialized functionality with a consistent API.
Draggable suits projects requiring fine-grained control over drag and drop interactions rather than out-of-the-box sorting behavior. It works across modern versions of Chrome, Firefox, Opera, Safari, and Edge, and is built with ES6 as a first-class target. The library is available via npm, yarn, or CDN.
The project is no longer maintained by its original authors at Shopify, with maintenance passed to new collaborators and additional maintainers actively being sought. Almost all open issues are raised by outside users rather than the core team, indicating a substantial base of adopters reporting real-world use. Issues and pull requests often wait weeks or longer for a first response. Work in the issue tracker is dominated by feature requests and enhancement requests.