Changelog

Release notes and updates for dnd kit

v0.5.0

v0.5.0
Minor
June 2026

Independently disable dragging and dropping — The sortable disabled option now accepts an object form to disable dragging and dropping separately, while preserving the existing boolean behavior. Supported by useSortable, createSortable, and the Sortable class across all framework integrations.

useSortable({
  id,
  index,
  // Item can't be dragged, but others can still be dropped on it
  disabled: {draggable: true, droppable: false},
});

Non-contiguous sortable indexes — The OptimisticSortingPlugin now supports sortable items with gaps in their index sequence.

Bug fixes:

  • Allowed pointer dragging from descendants of interactive draggable elements, such as text inside sortable anchor elements
  • Fixed drag overlay flickering after drop
  • Fixed a TypeError in parseScale/parseTranslate on browsers that don’t support the individual scale/translate CSS properties (Chromium < 104)
  • Fixed the plugin configurator() utility supplying an incorrect options type in its return type
  • Fixed the move helper for grouped records with numeric group IDs
  • Fixed a TypeError in the move and swap helpers when items contain null values
  • React: Fixed useDraggable and useSortable reassigning sensors on every render when sensors was passed as an inline array, which could disrupt in-progress sensor activation
  • Solid: Fixed DragDropProvider evaluating its children twice on initial mount
  • Vue: Fixed an onUnmounted warning emitted by DragOverlay
  • Included sourcemap files in published packages to fix bundler warnings about missing .map files

v0.4.0

v0.4.0
Minor
April 2026

Event type system redesign — Replaced DragDropEvents with DragDropEventMap and DragDropEventHandlers, following the DOM EventMap pattern for improved type safety.

Per-entity plugin configurationDraggable 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 improvementsplugins now accepts Customizable<Plugins>, a function form that extends defaults without losing built-in Sortable plugins.

Bug fixes:

  • Fixed onDragStart firing before onDragOver for 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 useDeepSignal calling flushSync from a React lifecycle method
  • Svelte: Removed OptimisticSortingPlugin from 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

v0.3.2
Patch
February 2026

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

v0.3.1
Patch
February 2026

Fixed onDragOver firing before onDragStart when a drag operation began over a droppable target.

v0.3.0

v0.3.0
Minor
February 2026

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 move and swap helpers for computed sortable IDs and optimistic sorting reconciliation
  • Fixed PointerSensor crash on Android caused by unhandled pointercancel events

v0.2.4

v0.2.4
Minor
February 2026

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

v0.2.3
Patch
January 2026

Fixed a bug where custom PointerSensor options passed to bind() were not being respected by activationConstraints().

v0.2.2

v0.2.2
Patch
January 2026

Fixed inverted preventActivation default option on KeyboardSensor.

v0.2.1

v0.2.1
Patch
December 2025

Fixed PointerSensor defaults.preventActivation not being applied when other sensor options were provided.

v0.2.0

v0.2.0
Minor
December 2025

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 supportPointerSensor now binds listeners across same-origin documents for drag operations that span iframes.

Bug fixes:

v0.1.x

v0.1.x
Minor
April – August 2025

Initial beta releases establishing the core API: