On this page
Overview
dnd-kit is a toolkit for drag-and-drop interfaces spanning lists, grids, multiple containers, nested contexts, variable sizes, and virtualized lists. A framework-agnostic core and DOM layer sit below React, Vue, Svelte, and Solid adapters, with customizable sensors, collisions, animations, keyboard behavior, ARIA attributes, and live regions.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Compose drag lifecycle with DragDropProvider and draggable/droppable hooks
The React adapter exposes DragDropProvider, useDraggable, and useDroppable so drag state and start/move/over/end events can participate in the component tree.
Support pointer, mouse, touch, and keyboard input
The project lists multiple input methods as a built-in capability, and the React package re-exports KeyboardSensor and PointerSensor from the DOM layer for configurable input behavior.
Best fit
Fits design systems and complex editors that need shared drag-and-drop primitives
It is useful for kanban boards, sortable lists, dashboard builders, and editors where input, accessibility, and collision behavior should be standardized rather than rebuilt per component.
Sources: [1]
Before adoption
React adapter 0.5.0 requires React and React DOM 18 or 19
Package metadata for @dnd-kit/react 0.5.0 declares React and React DOM ^18.0.0 || ^19.0.0 as peer dependencies.
Sources: [2]
Version 0.5.0 changes sortable disabled controls and sensor handling
The release adds object-form disabled controls for independently disabling drag and drop and fixes inline sensor arrays being reassigned on every render.
Sources: [4]
Official sources
- [1]dnd-kit React 0.5.0 README(2026-10-05)
- [2]@dnd-kit/react 0.5.0 package metadata(2026-10-05)
- [3]@dnd-kit/react core exports(2026-10-05)
- [4]@dnd-kit/react 0.5.0 release(2026-10-05)
- [5]dnd-kit MIT license(2026-10-05)
Supplemental curator note
Current dnd-kit is layered as a framework-agnostic core, DOM implementation, and framework adapters. Avoid assuming older @dnd-kit/core examples match the current React package.
Try it in 3 steps
- 1
Install pinned dnd-kit React 0.5.0
Create an isolated npm project with the React adapter and exact peer dependencies.
demo=$(mktemp -d "${TMPDIR:-/tmp}/dnd-kit.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact @dnd-kit/react@0.5.0 react@19.2.0 react-dom@19.2.0 - 2
Verify the package version
Require the installed React adapter to match the reviewed version.
test "$(node -e "console.log(JSON.parse(require('fs').readFileSync('node_modules/@dnd-kit/react/package.json')).version)")" = '0.5.0' - 3
Check drag-and-drop API exports
Verify the main provider and hooks without generating browser input.
test "$(node --input-type=module -e "import * as D from '@dnd-kit/react'; console.log(['DragDropProvider','useDraggable','useDroppable'].every(k=>k in D))")" = 'true'
Growth
Growth trends · Last 30 days
17,693 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 9
- Open PRs
- 44
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- react
- draggable
- droppable
- sortable
- drag-and-drop
- drag
- Stars
- 17,693
- Forks
- 920
- Watchers
- 41
- Open issues
- 89
- Contributors
- 65
- Owner type
- User
- Primary language
- TypeScript
- License
- MIT
- Repository last updated
- Sep 12, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Linaria12,350 Stars
3 shared tag(s) · 1 shared category(s) · Same language
keep CSS-in-JS authoring while extracting styles to static CSS at build time
TypeScript - IMask5,182 Stars
3 shared tag(s) · 1 shared category(s) · Same language
apply phone, number, date, and other input masks while separating displayed, unmasked, and typed values
TypeScript - Floating UI32,756 Stars
4 shared tag(s) · 1 shared category(s) · Same language
low-level positioning and interaction primitives for tooltips, popovers, dropdowns, and other floating elements
TypeScript - Headless UI28,767 Stars
4 shared tag(s) · 1 shared category(s) · Same language
unstyled accessible UI components for React and Vue that supply interaction behavior while leaving visual design to the app
TypeScript - Radix Primitives19,360 Stars
4 shared tag(s) · 1 shared category(s) · Same language
low-level React UI components that provide accessibility, behavior, and composition while leaving styling to the application
TypeScript - react-window17,208 Stars
4 shared tag(s) · 1 shared category(s) · Same language
React virtualization library that renders only the visible portion of large lists and grids to reduce DOM work
TypeScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.