clauderic/dnd-kit

The modern toolkit for building drag and drop interfaces

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 37 minutes ago
Added to GitGenius on February 18th, 2025
Created on November 26th, 2020
Open Issues & Pull Requests: 127 (+0)
Number of forks: 915
Total Stargazers: 17,564 (+0)
Total Subscribers: 36 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 461.8 days
Mean response time: 578.5 days
90th percentile: 1359.9 days
Tracked items: 765

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 100% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "experimental" is answered fastest, typically in about 2 days, while "more information required" waits about 52 months. 48% of tracked open issues have had no activity in three months. Only 4% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 87
New in 7 days: 1
Closed in 7 days: 0
Avg open age: 145 days
Stale 30+ days: 62
Stale 90+ days: 52

Recent activity

Opened in 7 days: 1
Closed in 7 days: 0
Comments in 7 days: 1
Events in 7 days: 1

Top labels

  • triage:done (98)
  • bug (84)
  • react (61)
  • dom (31)
  • enhancement (24)
  • needs reproduction case (24)
  • question (24)
  • documentation (23)

Detailed Description

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.

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. Beyond clauderic's primary involvement, timagixe and RubenZx have contributed significantly to triage and development activities.