---
title: "workoutSession(_:didDisconnectFromRemoteDeviceWithError:)"
framework: healthkit
role: symbol
role_heading: Instance Method
path: "healthkit/hkworkoutsessiondelegate/workoutsession(_:diddisconnectfromremotedevicewitherror:)"
---

# workoutSession(_:didDisconnectFromRemoteDeviceWithError:)

Tells the delegate that the mirrored workout session disconnected from the primary session.

## Declaration

```swift
optional func workoutSession(_ workoutSession: HKWorkoutSession, didDisconnectFromRemoteDeviceWithError error: (any Error)?)
```

## Parameters

- `workoutSession`: The mirrored workout session that disconnected.
- `error`: If an error caused the disconnection, then this parameter contains the error value. Otherwise, it’s nil.

## Discussion

Discussion After the system calls this method, the provided workout session is no longer valid, and you can no longer use it. func clearWorkoutSession() {     state = .notRunning     session = nil }

nonisolated func workoutSession(_ workoutSession: HKWorkoutSession, didDisconnectFromRemoteDeviceWithError error: Error?) {     Task {         // Clear the old session.         await clearWorkoutSession()     }

logger.debug("*** Remote workout session disconnected. ***")     if let error {         fatalError("*** Disconnected with an error: \(error.localizedDescription) ***")     } } If the primary workout session is still running, it automatically tries to reconnect. If successful, the companion iOS device calls the workoutSessionMirroringStartHandler block again, passing in a new, valid HKWorkoutSession instance.

## See Also

### Working with mirrored sessions

- [workoutSession(_:didReceiveDataFromRemoteWorkoutSession:)](healthkit/hkworkoutsessiondelegate/workoutsession(_:didreceivedatafromremoteworkoutsession:).md)
