---
title: Drag and drop
framework: swiftui
role: collectionGroup
role_heading: API Collection
path: swiftui/drag-and-drop
---

# Drag and drop

Enable people to move or duplicate items by dragging them from one location to another.

## Overview

Overview Drag and drop offers people a convenient way to move content from one part of your app to another, from one app to another, or to reorder content using an intuitive dragging gesture. Support this feature in your app by adding view modifiers to potential source and destination views within your app’s interface.

In your modifiers, provide or accept types that conform to the Transferable protocol, or that conform to NSItemProviderReading and/or NSItemProviderWriting. In Swift, prefer using transferable items. For design guidance, see Drag and drop in the Human Interface Guidelines.

## Topics

### Essentials

- [Adopting drag and drop using SwiftUI](swiftui/adopting-drag-and-drop-using-swiftui.md)
- [Making a view into a drag source](swiftui/making-a-view-into-a-drag-source.md)
- [Reordering items in lists, stacks, grids, and custom layouts](swiftui/reordering-items-in-lists-stacks-grids-and-custom-layouts.md)

### Configuring drag-and-drop behavior

- [dragConfiguration(_:)](swiftui/view/dragconfiguration(_:).md)
- [DragConfiguration](swiftui/dragconfiguration.md)
- [dropConfiguration(_:)](swiftui/view/dropconfiguration(_:).md)
- [DropConfiguration](swiftui/dropconfiguration.md)
- [dragContainer(for:in:_:)](swiftui/view/dragcontainer(for:in:_:).md)
- [dragContainer(for:itemID:in:_:)](swiftui/view/dragcontainer(for:itemid:in:_:).md)
- [dragContainerSelection(_:containerNamespace:)](swiftui/view/dragcontainerselection(_:containernamespace:).md)

### Moving items

- [DragSession](swiftui/dragsession.md)
- [DropSession](swiftui/dropsession.md)

### Moving transferable items

- [draggable(_:)](swiftui/view/draggable(_:).md)
- [draggable(_:preview:)](swiftui/view/draggable(_:preview:).md)
- [draggable(_:containerNamespace:_:)](swiftui/view/draggable(_:containernamespace:_:).md)
- [draggable(_:id:containerNamespace:_:)](swiftui/view/draggable(_:id:containernamespace:_:).md)
- [draggable(_:id:item:containerNamespace:)](swiftui/view/draggable(_:id:item:containernamespace:).md)
- [draggable(_:item:containerNamespace:)](swiftui/view/draggable(_:item:containernamespace:).md)
- [draggable(containerItemID:containerNamespace:)](swiftui/view/draggable(containeritemid:containernamespace:).md)

### Moving items using item providers

- [itemProvider(_:)](swiftui/view/itemprovider(_:).md)
- [onDrag(_:preview:)](swiftui/view/ondrag(_:preview:).md)
- [onDrag(_:)](swiftui/view/ondrag(_:).md)
- [onDrop(of:isTargeted:perform:)](swiftui/view/ondrop(of:istargeted:perform:).md)
- [onDrop(of:delegate:)](swiftui/view/ondrop(of:delegate:).md)
- [DropDelegate](swiftui/dropdelegate.md)
- [DropProposal](swiftui/dropproposal.md)
- [DropOperation](swiftui/dropoperation.md)
- [DropInfo](swiftui/dropinfo.md)

### Reordering items

- [Making a card game with drag, drop, and reordering in SwiftUI](swiftui/making-a-card-game-with-drag-drop-and-reordering-in-swiftui.md)
- [reorderable()](swiftui/dynamicviewcontent/reorderable().md)
- [reorderable(collectionID:)](swiftui/dynamicviewcontent/reorderable(collectionid:).md)
- [ReorderableSingleCollectionIdentifier](swiftui/reorderablesinglecollectionidentifier.md)
- [reorderContainer(for:isEnabled:move:)](swiftui/view/reordercontainer(for:isenabled:move:).md)
- [reorderContainer(for:in:isEnabled:move:)](swiftui/view/reordercontainer(for:in:isenabled:move:).md)
- [reorderContainer(for:itemID:isEnabled:move:)](swiftui/view/reordercontainer(for:itemid:isenabled:move:).md)
- [reorderContainer(for:itemID:in:isEnabled:move:)](swiftui/view/reordercontainer(for:itemid:in:isenabled:move:).md)
- [reorderDestination(for:in:)](swiftui/dropsession/reorderdestination(for:in:).md)
- [reorderDestination(for:itemID:in:)](swiftui/dropsession/reorderdestination(for:itemid:in:).md)
- [ReorderDifference](swiftui/reorderdifference.md)

### Describing preview formations

- [dragPreviewsFormation(_:)](swiftui/view/dragpreviewsformation(_:).md)
- [dropPreviewsFormation(_:)](swiftui/view/droppreviewsformation(_:).md)
- [DragDropPreviewsFormation](swiftui/dragdroppreviewsformation.md)

### Configuring spring loading

- [springLoadingBehavior(_:)](swiftui/view/springloadingbehavior(_:).md)
- [springLoadingBehavior](swiftui/environmentvalues/springloadingbehavior.md)
- [SpringLoadingBehavior](swiftui/springloadingbehavior.md)

## See Also

### Event handling

- [Gestures](swiftui/gestures.md)
- [Input events](swiftui/input-events.md)
- [Clipboard](swiftui/clipboard.md)
- [Focus](swiftui/focus.md)
- [System events](swiftui/system-events.md)
