<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macOS: 26.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/EnvironmentValues/dismissImmersiveSpace",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI17EnvironmentValuesVAAE21dismissImmersiveSpaceAA07DismissfG6ActionVvp"
  },
  "title" : "dismissImmersiveSpace"
}
-->

# dismissImmersiveSpace

An immersive space dismissal action stored in a view’s environment.

```
var dismissImmersiveSpace: DismissImmersiveSpaceAction { get }
```

## Discussion

Use this environment value to get a
[`DismissImmersiveSpaceAction`](/documentation/SwiftUI/DismissImmersiveSpaceAction) instance for a given [`Environment`](/documentation/SwiftUI/Environment).
Then call the instance to dismiss a space. You call the instance
directly because it defines a
[`callAsFunction()`](/documentation/SwiftUI/DismissImmersiveSpaceAction/callAsFunction()) method that Swift calls
when you call the instance.

On macOS, this may be used to dismiss a remote immersive space declared
with [`RemoteImmersiveSpace`](/documentation/SwiftUI/RemoteImmersiveSpace).

For example, you can define a button that dismisses an immersive space:

```
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            DismissImmersiveSpaceButton()
        }
        ImmersiveSpace(id: "solarSystem") {
            SolarSystemView()
        }
    }
}

struct DismissImmersiveSpaceButton: View {
    @Environment(\.dismissImmersiveSpace) private var dismissImmersiveSpace

    var body: some View {
        Button("Dismiss") {
            Task {
                await dismissImmersiveSpace()
            }
        }
    }
}
```

The asynchronous call returns after the system finishes dismissing
the space. Unlike the call to [`openImmersiveSpace`](/documentation/SwiftUI/EnvironmentValues/openImmersiveSpace)
that you use to open the space — which requires an identifier,
a value, or both to specify which space to open — the dismiss action
requires no parameters because there can be only one immersive space
open at a time. The call closes the space that is currently open, if
any.

---

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)