<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RoomPlan",
  "identifier" : "/documentation/RoomPlan/RoomCaptureSessionDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "RoomPlan"
    ],
    "preciseIdentifier" : "s:8RoomPlan0A22CaptureSessionDelegateP"
  },
  "title" : "RoomCaptureSessionDelegate"
}
-->

# RoomCaptureSessionDelegate

A specification of important events in the room-scanning process.

```
protocol RoomCaptureSessionDelegate : AnyObject
```

## Overview

The room-capture session’s [`delegate`](/documentation/RoomPlan/RoomCaptureSession/delegate) property is of this type.

## Topics

### Beginning a session

[`func captureSession(RoomCaptureSession, didStartWith: RoomCaptureSession.Configuration)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didStartWith:))

Notifies the delegate when the session starts.

### Updating a session

[`func captureSession(RoomCaptureSession, didAdd: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didAdd:))

Notifies the delegate of newly added surfaces and objects.

[`func captureSession(RoomCaptureSession, didRemove: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didRemove:))

Notifies the delegate when the session removes surfaces and objects.

[`func captureSession(RoomCaptureSession, didChange: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didChange:))

Notifies the delegate when the session changes the dimensions and the transform properties of surfaces and objects.

[`func captureSession(RoomCaptureSession, didUpdate: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didUpdate:))

Notifies the delegate when the session updates the scan results.

### Coaching the user

[`func captureSession(RoomCaptureSession, didProvide: RoomCaptureSession.Instruction)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didProvide:))

Notifies the delegate of an instruction to display to the user.

### Completing a session

[`func captureSession(RoomCaptureSession, didEndWith: CapturedRoomData, error: (any Error)?)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didEndWith:error:))

Notifies the delegate of completion with either scan results or an error.

### Default implementations

[`func captureSession(RoomCaptureSession, didStartWith: RoomCaptureSession.Configuration)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didStartWith:)-3c74n)

Provides a default, blank implementation for when the session starts.

[`func captureSession(RoomCaptureSession, didUpdate: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didUpdate:)-77zyg)

Provides a default, blank implementation for when the session updates surfaces and objects during a scan.

[`func captureSession(RoomCaptureSession, didRemove: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didRemove:)-9gs76)

Provides a default, blank implementation for when the session removes surfaces and objects.

[`func captureSession(RoomCaptureSession, didChange: CapturedRoom)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didChange:)-gv3t)

Provides a default, blank implementation for when the capture session updates the dimensions and the transform properties during a scan.

[`func captureSession(RoomCaptureSession, didProvide: RoomCaptureSession.Instruction)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didProvide:)-5hvhl)

Provides a default, blank implementation for when the capture session provides a user instruction.

[`func captureSession(RoomCaptureSession, didEndWith: CapturedRoomData, error: (any Error)?)`](/documentation/RoomPlan/RoomCaptureSessionDelegate/captureSession(_:didEndWith:error:)-5f0mc)

Provides a default, blank implementation for when the capture session provides raw scan results.



---

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)