---
title: MatterAddDeviceExtensionRequestHandler
framework: mattersupport
role: symbol
role_heading: Class
path: mattersupport/matteradddeviceextensionrequesthandler
---

# MatterAddDeviceExtensionRequestHandler

The object that handles configuration and commissioning of a device into an ecosystem.

## Declaration

```swift
@objc class MatterAddDeviceExtensionRequestHandler
```

## Mentioned in

Adding Matter support to your ecosystem

## Overview

Overview This class facilitates the user interface flow during the setup of a new Matter device. Subclass this class and override its methods, except for beginRequest(with:). The principal class for the app’s extension declared by the NSPrincipalClass in the extension plist must inherit from this base class. If the MatterAddDeviceRequest.Topology object in the request has two or more homes, the user interface flow displays a picker to allow selection of a home. If the object contains one home, that home is the selected home and the user interface flow doesn’t display a picker. If the object contains no home, then the user interface flow doesn’t display a picker, and any methods take a home parameter receive nil. note: Don’t call super within the overridden method.

## Topics

### Creating the request handler

- [init()](mattersupport/matteradddeviceextensionrequesthandler/init().md)

### Configuring and validating the device

- [configureDevice(named:in:)](mattersupport/matteradddeviceextensionrequesthandler/configuredevice(named:in:).md)
- [validateDeviceCredential(_:)](mattersupport/matteradddeviceextensionrequesthandler/validatedevicecredential(_:).md)
- [MatterAddDeviceExtensionRequestHandler.DeviceCredential](mattersupport/matteradddeviceextensionrequesthandler/devicecredential.md)
- [rooms(in:)](mattersupport/matteradddeviceextensionrequesthandler/rooms(in:).md)

### Commissioning the device

- [commissionDevice(in:onboardingPayload:commissioningID:)](mattersupport/matteradddeviceextensionrequesthandler/commissiondevice(in:onboardingpayload:commissioningid:).md)

### Selecting the Thread network

- [selectThreadNetwork(from:)](mattersupport/matteradddeviceextensionrequesthandler/selectthreadnetwork(from:).md)
- [MatterAddDeviceExtensionRequestHandler.ThreadScanResult](mattersupport/matteradddeviceextensionrequesthandler/threadscanresult.md)
- [MatterAddDeviceExtensionRequestHandler.ThreadNetworkAssociation](mattersupport/matteradddeviceextensionrequesthandler/threadnetworkassociation.md)

### Selecting the Wi-Fi network

- [selectWiFiNetwork(from:)](mattersupport/matteradddeviceextensionrequesthandler/selectwifinetwork(from:).md)
- [MatterAddDeviceExtensionRequestHandler.WiFiScanResult](mattersupport/matteradddeviceextensionrequesthandler/wifiscanresult.md)
- [MatterAddDeviceExtensionRequestHandler.WiFiNetworkAssociation](mattersupport/matteradddeviceextensionrequesthandler/wifinetworkassociation.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Adding a device

- [Adding Matter support to your ecosystem](mattersupport/adding-matter-support-to-your-ecosystem.md)
- [MatterAddDeviceRequest](mattersupport/matteradddevicerequest.md)
