dnd-kit is a modern toolkit for building drag and drop interfaces, written in TypeScript and maintained primarily by clauderic. The project describes itself as a lightweight, performant, accessible, and extensible solution for web-based drag and drop functionality. It has grown to 17,309 stars as of the most recent tracking period and maintains an active development presence with clauderic accounting for 1,561 tracked events among contributors.
The architecture is built in layers to support multiple frameworks. At the foundation sits @dnd-kit/abstract, a framework-agnostic core, followed by @dnd-kit/dom, which provides a DOM implementation. On top of these foundations are thin adapters for specific frameworks including React, Vue, Svelte, SolidJS, and vanilla JavaScript. This layered approach allows developers to use dnd-kit with their preferred framework while maintaining a consistent underlying implementation.
The toolkit supports a broad range of use cases including lists, grids, multiple containers, nested contexts, variable sized items, virtualized lists, and 2D games. It includes built-in support for multiple input methods through pointer, mouse, touch, and keyboard sensors. The package ecosystem includes @dnd-kit/collision for collision detection, @dnd-kit/geometry for geometry utilities, @dnd-kit/helpers for helper functions, @dnd-kit/state for reactive state management, and @dnd-kit/dom/sortable as a specialized layer for building sortable interfaces.
Accessibility is a core consideration in dnd-kit's design, with keyboard support, sensible default ARIA attributes, customizable screen reader instructions, and built-in live regions. The toolkit is designed with performance in mind to support smooth animations, and it offers full customization and extensibility across animations, transitions, behaviors, styles, sensors, collision detection algorithms, and key bindings.
The project operates as a monorepo managed with Turborepo and bun. Issue and pull request response latency data tracked across 771 items shows a median response time of 10,675.9 hours and a mean of 13,425.7 hours. The most active issue labels are triage:done with 88 occurrences, bug with 66, and react with 52. Beyond clauderic's primary involvement, timagixe and RubenZx have contributed significantly to triage and development activities. The repository shares overlapping contributors with major projects including microsoft/vscode, microsoft/typescript, and rust-lang/rust, indicating its relevance within the broader developer ecosystem.