Changelog
Release notes and updates for dnd kit
v0.4.0
Event type system redesign — Replaced DragDropEvents with DragDropEventMap and DragDropEventHandlers, following the DOM EventMap pattern for improved type safety.
Per-entity plugin configuration — Draggable entities now accept a plugins property for entity-specific plugin configuration. The feedback property has moved from the Draggable entity to the Feedback plugin configuration. Sortable uses the same generic mechanism instead of custom registration.
Virtualization improvements — Entity identity changes are now batched and deferred to a microtask to prevent collision oscillation during virtualized sorting.
Feedback plugin enhancements — Added keyboardTransition option to customize or disable CSS transitions on keyboard moves. The feedback option now supports a callback form for dynamically choosing the feedback type. DropAnimationFunction context now includes source.
AutoScroller updates — Added acceleration (default: 25) and threshold (default: 0.2) options to control scroll speed and activation zone, with per-axis configuration via {x, y}.
Sortable plugin improvements — plugins now accepts Customizable<Plugins>, a function form that extends defaults without losing built-in Sortable plugins.
Bug fixes:
- Fixed
onDragStartfiring beforeonDragOverfor elements that are both draggable and droppable - Resolved DTS build errors with TypeScript 5.9 on Node 20
- Fixed plugin registration order when deduplicating configured plugins
- Fixed
useDeepSignalcallingflushSyncfrom a React lifecycle method - Svelte: Removed
OptimisticSortingPluginfrom defaults to prevent conflicts with Svelte 5 reconciliation - Vue: Fixed sortable type narrowing and re-exported drag event type aliases
- Added LICENSE file to all published packages
v0.3.2
Fixed CSS cascade layer ordering so the Feedback plugin no longer overrides styles from CSS frameworks that use cascade layers (such as Tailwind CSS v4). The @layer block is now named dnd-kit and injected with the lowest priority.
v0.3.1
Fixed onDragOver firing before onDragStart when a drag operation began over a droppable target.
v0.3.0
Functional configuration — Allow plugins, sensors, and modifiers to accept a function that receives the defaults, making it easy to extend or configure them without replacing the entire array.
const manager = new DragDropManager({
plugins: (defaults) => [...defaults, MyPlugin],
});Sortable type guard — Added isSortableOperation type guard and exported SortableDraggable/SortableDroppable types for typed access to sortable-specific properties.
Configurable drop animation — The DragOverlay component now accepts a dropAnimation prop to disable or customize the drop animation.
Bug fixes:
- Fixed auto-scroll trigger zones and drag overlay positioning during pinch-to-zoom in Safari
- Fixed
moveandswaphelpers for computed sortable IDs and optimistic sorting reconciliation - Fixed PointerSensor crash on Android caused by unhandled
pointercancelevents
v0.2.4
Event type aliases — Exposed ergonomic type aliases for drag and drop event handlers: CollisionEvent, BeforeDragStartEvent, DragStartEvent, DragMoveEvent, DragOverEvent, and DragEndEvent.
Accessibility — Respect prefers-reduced-motion media query across all animations including keyboard drag, drop animation, and sortable swap transitions.
Configurable drop animation API — The Feedback plugin now accepts a dropAnimation option: pass {duration, easing}, a custom function, or null to disable.
Bug fixes:
- Fixed Feedback plugin style injection in Shadow DOM environments
- Fixed table cell width handling during drag operations using sub-pixel precision
v0.2.3
Fixed a bug where custom PointerSensor options passed to bind() were not being respected by activationConstraints().
v0.2.2
Fixed inverted preventActivation default option on KeyboardSensor.
v0.2.1
Fixed PointerSensor defaults.preventActivation not being applied when other sensor options were provided.
v0.2.0
Refactored PointerSensor — New composable activation constraints API with PointerActivationConstraints.Delay and PointerActivationConstraints.Distance. Improved defaults for different input types (mouse, touch, text inputs).
Conditional sensor activation — Added preventActivation option to PointerSensor and KeyboardSensor to conditionally prevent sensor activation on interactive elements.
Cross-iframe support — PointerSensor now binds listeners across same-origin documents for drag operations that span iframes.
Bug fixes:
- Fixed useDragDropManager returning
nullon first mount
v0.1.x
Initial beta releases establishing the core API:
- DragDropManager with plugin architecture
- Draggable, droppable, and sortable primitives
- Framework integrations for React, Vue, Svelte, and Solid
- Pointer and keyboard sensors
- Collision detection algorithms
- Modifiers and accessibility plugins
- Feedback plugin with drag overlays
- Auto-scroll support