github clauderic/dnd-kit @dnd-kit/dom@0.3.0

Minor Changes

  • 6a59647 Thanks @clauderic! - 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.

    // Add a plugin alongside the defaults
    const manager = new DragDropManager({
      plugins: (defaults) => [...defaults, MyPlugin],
    });
    // Configure a default plugin in React
    <DragDropProvider
      plugins={(defaults) => [
        ...defaults,
        Feedback.configure({dropAnimation: null}),
      ]}
    />

    Previously, passing plugins, sensors, or modifiers would replace the defaults entirely, requiring consumers to import and spread defaultPreset. The function form receives the default values as an argument, so consumers can add, remove, or configure individual entries without needing to know or maintain the full default list.

  • 68e44de Thanks @clauderic! - Add isSortableOperation type guard and export SortableDraggable/SortableDroppable types.

    isSortableOperation(operation) narrows a DragOperationSnapshot so that source is typed as SortableDraggable and target as SortableDroppable, providing typed access to sortable-specific properties like index, initialIndex, group, and initialGroup.

    Re-exported from all framework packages (@dnd-kit/react/sortable, @dnd-kit/vue/sortable, @dnd-kit/svelte/sortable, @dnd-kit/solid/sortable).

Patch Changes

  • 5d64078 Thanks @clauderic! - Add dropAnimation prop to the DragOverlay component to allow consumers to disable or customize the drop animation that plays when a drag operation ends. Set to null to disable, pass {duration, easing} to customize timing, or provide a custom animation function for full control.

  • 863ce2b Thanks @clauderic! - Fix auto-scroll trigger zones and boundaries during pinch-to-zoom.

    Updated getViewportBoundingRectangle, getVisibleBoundingRectangle, and getScrollPosition to use the Visual Viewport API, so that scroll detection and element visibility clipping are based on the actual visible area rather than the layout viewport. This fixes auto-scroll not triggering near the visible edges and stopping before reaching the end of scrollable content when the page is zoomed in.

  • 863ce2b Thanks @clauderic! - Fix drag overlay and debug overlay mispositioning in Safari during pinch-to-zoom.

    Safari anchors position: fixed elements to the visual viewport rather than the layout viewport during pinch-to-zoom. Added a getFixedPositionOffset() utility that compensates for this by adding visualViewport.offsetLeft/Top to the CSS left/top values of fixed-positioned overlays.

  • e8ae539 Thanks @clauderic! - Fix the move and swap helpers to support computed sortable IDs and optimistic sorting reconciliation for grouped records.

    When the ID-based lookup fails (e.g. when using computed IDs like id={\sortable-${item.id}`} that don't match data items), the helpers now fall back to sortable index properties (initialIndex, index, group, initialGroup) to determine the correct positions. Additionally, grouped records now support optimistic sorting reconciliation—when source.id === target.id` after optimistic sorting, the helpers use the sortable indices to determine the intended move.

    Added initialIndex, group, and initialGroup getters to SortableDraggable, and index and group getters to SortableDroppable, so these properties are accessible from the operation's source and target in drag events.

  • 41d7e27 Thanks @rjur11! - Fixed PointerSensor crash on Android caused by unhandled pointercancel events.

  • Updated dependencies [6a59647]:

    • @dnd-kit/abstract@0.3.0
    • @dnd-kit/collision@0.3.0
    • @dnd-kit/geometry@0.3.0
    • @dnd-kit/state@0.3.0

Don't miss a new dnd-kit release

NewReleases is sending notifications on new releases.