<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/EditMode",
  "metadataVersion" : "0.1.0",
  "role" : "Enumeration",
  "symbol" : {
    "kind" : "Enumeration",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI8EditModeO"
  },
  "title" : "EditMode"
}
-->

# EditMode

A mode that indicates whether the user can edit a view’s content.

```
enum EditMode
```

## Overview

You receive an optional binding to the edit mode state when you
read the [`editMode`](/documentation/SwiftUI/EnvironmentValues/editMode) environment value. The binding
contains an `EditMode` value that indicates whether edit mode is active,
and that you can use to change the mode. To learn how to read an environment
value, see [`EnvironmentValues`](/documentation/SwiftUI/EnvironmentValues).

Certain built-in views automatically alter their appearance and behavior
in edit mode. For example, a [`List`](/documentation/SwiftUI/List) with a [`ForEach`](/documentation/SwiftUI/ForEach) that’s
configured with the [`onDelete(perform:)`](/documentation/SwiftUI/DynamicViewContent/onDelete(perform:)) or
[`onMove(perform:)`](/documentation/SwiftUI/DynamicViewContent/onMove(perform:)) modifier provides controls to
delete or move list items while in edit mode. On devices without an attached
keyboard and mouse or trackpad, people can make multiple selections in lists
only when edit mode is active.

You can also customize your own views to react to edit mode.
The following example replaces a read-only [`Text`](/documentation/SwiftUI/Text) view with
an editable [`TextField`](/documentation/SwiftUI/TextField), checking for edit mode by
testing the wrapped value’s [`isEditing`](/documentation/SwiftUI/EditMode/isEditing) property:

```
@Environment(\.editMode) private var editMode
@State private var name = "Maria Ruiz"

var body: some View {
    Form {
        if editMode?.wrappedValue.isEditing == true {
            TextField("Name", text: $name)
        } else {
            Text(name)
        }
    }
    .animation(nil, value: editMode?.wrappedValue)
    .toolbar { // Assumes embedding this view in a NavigationView.
        EditButton()
    }
}
```

You can set the edit mode through the binding, or you can
rely on an [`EditButton`](/documentation/SwiftUI/EditButton) to do that for you, as the example above
demonstrates. The button activates edit mode when the user
taps it, and disables the mode when the user taps again.

## Topics

### Getting edit modes

[`EditMode.active`](/documentation/SwiftUI/EditMode/active)

The user can edit the view content.

[`EditMode.inactive`](/documentation/SwiftUI/EditMode/inactive)

The user can’t edit the view content.

[`EditMode.transient`](/documentation/SwiftUI/EditMode/transient)

The view is in a temporary edit mode.

### Checking for editing mode

[`isEditing`](/documentation/SwiftUI/EditMode/isEditing)

Indicates whether a view is being edited.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)