diff --git a/src/darwin/Framework/CHIP/MTRDefines.h b/src/darwin/Framework/CHIP/MTRDefines.h
index add0689..00ff4b9 100644
--- a/src/darwin/Framework/CHIP/MTRDefines.h
+++ b/src/darwin/Framework/CHIP/MTRDefines.h
@@ -67,7 +67,7 @@
 #if MTR_ENABLE_PROVISIONAL
 #define MTR_PROVISIONALLY_AVAILABLE MTR_NEWLY_AVAILABLE
 #else
-#define MTR_PROVISIONALLY_AVAILABLE NS_UNAVAILABLE MTR_HIDDEN
+#define MTR_PROVISIONALLY_AVAILABLE API_UNAVAILABLE(ios, macos, tvos, watchos) MTR_HIDDEN
 #endif
 
 #ifndef MTR_PER_CONTROLLER_STORAGE_ENABLED
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-swift.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-swift.zapt
new file mode 100644
index 0000000..2fc3162
--- /dev/null
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters-swift.zapt
@@ -0,0 +1,15 @@
+{{> header excludeZapComment=true}}
+
+private let clusterQueue = DispatchQueue(label: "MTRCluster completion dispatch")
+
+{{#zcl_clusters}}
+{{#if (isSupported (asUpperCamelCase name preserveAcronyms=true))}}
+{{swiftAvailability (asUpperCamelCase name preserveAcronyms=true) minimalRelease="Future"}}
+extension MTRCluster{{asUpperCamelCase name preserveAcronyms=true}} {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+{{/if}}
+{{/zcl_clusters}}
\ No newline at end of file
diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml
index bd7f01d..563f58e 100644
--- a/src/darwin/Framework/CHIP/templates/availability.yaml
+++ b/src/darwin/Framework/CHIP/templates/availability.yaml
@@ -74,10 +74,10 @@
 
 - release: "Initial release"
   versions:
-      ios: "16.1"
-      macos: "13.0"
-      watchos: "9.1"
-      tvos: "16.1"
+      iOS: "16.1"
+      macOS: "13.0"
+      watchOS: "9.1"
+      tvOS: "16.1"
   introduced:
       clusters:
           - Identify
@@ -4722,10 +4722,10 @@
 
 - release: "First dot-release"
   versions:
-      ios: "16.2"
-      macos: "13.1"
-      watchos: "9.2"
-      tvos: "16.2"
+      iOS: "16.2"
+      macOS: "13.1"
+      watchOS: "9.2"
+      tvOS: "16.2"
   introduced:
       attributes:
           TestCluster:
@@ -4778,10 +4778,10 @@
 
 - release: "First major API revamp"
   versions:
-      ios: "16.4"
-      macos: "13.3"
-      watchos: "9.4"
-      tvos: "16.4"
+      iOS: "16.4"
+      macOS: "13.3"
+      watchOS: "9.4"
+      tvOS: "16.4"
   introduced:
       clusters:
           - OTASoftwareUpdateProvider
@@ -6723,10 +6723,10 @@
 
 - release: "First after major API revamp"
   versions:
-      ios: "16.5"
-      macos: "13.4"
-      watchos: "9.5"
-      tvos: "16.5"
+      iOS: "16.5"
+      macOS: "13.4"
+      watchOS: "9.5"
+      tvOS: "16.5"
   introduced:
       ids:
           attributes:
@@ -7031,10 +7031,10 @@
 
 - release: "Fall 2023"
   versions:
-      ios: "17.0"
-      macos: "14.0"
-      watchos: "10.0"
-      tvos: "17.0"
+      iOS: "17.0"
+      macOS: "14.0"
+      watchOS: "10.0"
+      tvOS: "17.0"
   introduced:
       attributes:
           BasicInformation:
@@ -7515,10 +7515,10 @@
 
 - release: "Fall 2023 #2"
   versions:
-      ios: "17.1"
-      macos: "14.1"
-      watchos: "10.1"
-      tvos: "17.1"
+      iOS: "17.1"
+      macOS: "14.1"
+      watchOS: "10.1"
+      tvOS: "17.1"
   introduced:
       bitmaps:
           TimeFormatLocalization:
@@ -7583,10 +7583,10 @@
 
 - release: "Fall 2023 #3"
   versions:
-      ios: "17.2"
-      macos: "14.2"
-      watchos: "10.2"
-      tvos: "17.2"
+      iOS: "17.2"
+      macOS: "14.2"
+      watchOS: "10.2"
+      tvOS: "17.2"
   introduced:
       command payloads:
           TimeSynchronization:
diff --git a/src/darwin/Framework/CHIP/templates/templates.json b/src/darwin/Framework/CHIP/templates/templates.json
index 47804e5..42a2ffc 100644
--- a/src/darwin/Framework/CHIP/templates/templates.json
+++ b/src/darwin/Framework/CHIP/templates/templates.json
@@ -80,6 +80,11 @@
             "output": "src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm"
         },
         {
+            "path": "MTRClusters-swift.zapt",
+            "name": "Swift ZCL synchronous API Header extensions",
+            "output": "src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift"
+        },
+        {
             "path": "MTRStructsObjc.zapt",
             "name": "Objc reflections of MTR spec structs header",
             "output": "src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h"
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift
new file mode 100644
index 0000000..22ff7e4
--- /dev/null
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.swift
@@ -0,0 +1,678 @@
+/*
+ *
+ *    Copyright (c) 2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+
+private let clusterQueue = DispatchQueue(label: "MTRCluster completion dispatch")
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterIdentify {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGroups {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterScenes {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOnOff {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOnOffSwitchConfiguration {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterLevelControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBinaryInputBasic {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPulseWidthModulation {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterDescriptor {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBinding {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAccessControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterActions {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBasicInformation {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOTASoftwareUpdateProvider {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOTASoftwareUpdateRequestor {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterLocalizationConfiguration {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterTimeFormatLocalization {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterUnitLocalization {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPowerSourceConfiguration {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPowerSource {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGeneralCommissioning {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterNetworkCommissioning {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterDiagnosticLogs {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGeneralDiagnostics {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterSoftwareDiagnostics {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterThreadNetworkDiagnostics {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterWiFiNetworkDiagnostics {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterEthernetNetworkDiagnostics {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterTimeSynchronization {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBridgedDeviceBasicInformation {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterSwitch {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAdministratorCommissioning {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOperationalCredentials {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterGroupKeyManagement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterFixedLabel {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterUserLabel {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBooleanState {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterICDManagement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterModeSelect {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterLaundryWasherMode {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterLaundryWasherControls {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRVCRunMode {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRVCCleanMode {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterTemperatureControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRefrigeratorAlarm {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterDishwasherMode {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterAirQuality {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterSmokeCOAlarm {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterDishwasherAlarm {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterOperationalState {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRVCOperationalState {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterHEPAFilterMonitoring {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterActivatedCarbonFilterMonitoring {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterDoorLock {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterWindowCovering {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBarrierControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPumpConfigurationAndControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterThermostat {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterFanControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterThermostatUserInterfaceConfiguration {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterColorControl {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterBallastConfiguration {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterIlluminanceMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterTemperatureMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterPressureMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterFlowMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterRelativeHumidityMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterOccupancySensing {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterCarbonMonoxideConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterCarbonDioxideConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterNitrogenDioxideConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterOzoneConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPM25ConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterFormaldehydeConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPM1ConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterPM10ConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterRadonConcentrationMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterWakeOnLAN {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterChannel {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterTargetNavigator {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterMediaPlayback {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterMediaInput {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterLowPower {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterKeypadInput {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterContentLauncher {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAudioOutput {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterApplicationLauncher {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterApplicationBasic {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterAccountLogin {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterElectricalMeasurement {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS 17.2, macOS 14.2, watchOS 10.2, tvOS 17.2, *)
+extension MTRClusterUnitTesting {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
+@available(iOS, unavailable) @available(macOS, unavailable) @available(tvOS, unavailable) @available(watchOS, unavailable)
+extension MTRClusterSampleMEI {
+    public convenience init(device : MTRDevice, endpointID: UInt) {
+        self.init(device: device, endpointID: endpointID as NSNumber, queue: clusterQueue)!
+    }
+}
+
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 603dea9..462cc59 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -1513,6 +1513,23 @@
     XCTAssertNotEqual(attributeReportsReceived, 0);
     XCTAssertNotEqual(eventReportsReceived, 0);
 
+    // Check that we can read one of those attributes we received.
+    __auto_type * descriptorCluster = [[MTRClusterDescriptor alloc] initWithDevice:device endpointID:@(0) queue:queue];
+    __auto_type * partsListDictionary = [descriptorCluster readAttributePartsListWithParams:nil];
+    XCTAssertNotNil(partsListDictionary);
+
+    __auto_type * responseValue = @{
+        MTRAttributePathKey : [MTRAttributePath attributePathWithEndpointID:@(0) clusterID:@(MTRClusterIDTypeDescriptorID) attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributePartsListID)],
+        MTRDataKey : partsListDictionary,
+    };
+
+    NSError * error;
+    __auto_type * report = [[MTRAttributeReport alloc] initWithResponseValue:responseValue error:&error];
+    XCTAssertNil(error);
+    XCTAssertNotNil(report);
+    XCTAssertNotNil(report.value);
+    XCTAssertTrue([report.value isKindOfClass:NSArray.class]);
+
     // Before resubscribe, first test write failure and expected value effects
     NSNumber * testEndpointID = @(1);
     NSNumber * testClusterID = @(8);
diff --git a/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift b/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift
index b800588..aa4f21c 100644
--- a/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift
+++ b/src/darwin/Framework/CHIPTests/MTRSwiftDeviceTests.swift
@@ -100,8 +100,8 @@
 // Because we are using things from Matter.framework that are flagged
 // as only being available starting with macOS 13.5, we need to flag our
 // code with the same availability annotation.
-@available(macOS, introduced: 14.1)
-@available(iOS, introduced: 17.1)
+@available(macOS, introduced: 14.2)
+@available(iOS, introduced: 17.2)
 class MTRSwiftDeviceTests : XCTestCase {
     static var sStackInitRan : Bool = false
     static var sNeedsStackShutdown : Bool = true
@@ -292,6 +292,22 @@
         XCTAssertNotEqual(attributeReportsReceived, 0)
         XCTAssertNotEqual(eventReportsReceived, 0)
 
+        // Check that we can read one of those attributes we received.
+        let descriptorCluster = MTRClusterDescriptor(device: device, endpointID: 0)
+        let partsListDictionary = descriptorCluster.readAttributePartsList(with: nil)
+        XCTAssertNotNil(partsListDictionary);
+
+        let path = MTRAttributePath(endpointID: 0,
+                                     clusterID: MTRClusterIDType.descriptorID.rawValue as NSNumber,
+                                   attributeID: MTRAttributeIDType.clusterDescriptorAttributePartsListID.rawValue as NSNumber)
+        let responseValue : [String: Any] = [
+            MTRAttributePathKey: path,
+            MTRDataKey: partsListDictionary!,
+        ]
+        let report = try! MTRAttributeReport(responseValue: responseValue)
+        XCTAssertNotNil(report.value)
+        XCTAssertTrue(report.value is [NSNumber])
+
         // Before resubscribe, first test write failure and expected value effects
         let testEndpointID = 1 as NSNumber
         let testClusterID = 8 as NSNumber
diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
index b2fc3f8..2b88a47 100644
--- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
+++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
@@ -178,6 +178,7 @@
 		51B22C222740CB1D008D5055 /* MTRCommandPayloadsObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B22C212740CB1D008D5055 /* MTRCommandPayloadsObjc.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		51B22C262740CB32008D5055 /* MTRStructsObjc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B22C252740CB32008D5055 /* MTRStructsObjc.mm */; };
 		51B22C2A2740CB47008D5055 /* MTRCommandPayloadsObjc.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B22C292740CB47008D5055 /* MTRCommandPayloadsObjc.mm */; };
+		51B6C5C62AD85B3D003F4D3A /* MTRClusters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B6C5C52AD85B3D003F4D3A /* MTRClusters.swift */; };
 		51C8E3F82825CDB600D47D00 /* MTRTestKeys.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C8E3F72825CDB600D47D00 /* MTRTestKeys.m */; };
 		51C984622A61CE2A00B0AD9A /* MTRFabricInfoChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = 51C984602A61CE2A00B0AD9A /* MTRFabricInfoChecker.m */; };
 		51CFDDB12AC5F78F00DA7CA5 /* EmptyDataModelHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CFDDB02AC5F78F00DA7CA5 /* EmptyDataModelHandler.cpp */; };
@@ -540,6 +541,9 @@
 		51B22C212740CB1D008D5055 /* MTRCommandPayloadsObjc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRCommandPayloadsObjc.h; sourceTree = "<group>"; };
 		51B22C252740CB32008D5055 /* MTRStructsObjc.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRStructsObjc.mm; sourceTree = "<group>"; };
 		51B22C292740CB47008D5055 /* MTRCommandPayloadsObjc.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRCommandPayloadsObjc.mm; sourceTree = "<group>"; };
+		51B6C5C52AD85B3D003F4D3A /* MTRClusters.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTRClusters.swift; sourceTree = "<group>"; };
+		51B6C5C72AD85B47003F4D3A /* MTRCommandPayloads_Internal.zapt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MTRCommandPayloads_Internal.zapt; sourceTree = "<group>"; };
+		51B6C5C92AD85B50003F4D3A /* MTRClusters-swift.zapt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "MTRClusters-swift.zapt"; sourceTree = "<group>"; };
 		51C8E3F72825CDB600D47D00 /* MTRTestKeys.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTRTestKeys.m; sourceTree = "<group>"; };
 		51C984602A61CE2A00B0AD9A /* MTRFabricInfoChecker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTRFabricInfoChecker.m; sourceTree = "<group>"; };
 		51C984612A61CE2A00B0AD9A /* MTRFabricInfoChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRFabricInfoChecker.h; sourceTree = "<group>"; };
@@ -991,6 +995,7 @@
 				51B22C1D2740CB0A008D5055 /* MTRStructsObjc.h */,
 				51B22C252740CB32008D5055 /* MTRStructsObjc.mm */,
 				5178E67D2AE098210069DF72 /* MTRCommandTimedCheck.mm */,
+				51B6C5C52AD85B3D003F4D3A /* MTRClusters.swift */,
 			);
 			path = "zap-generated";
 			sourceTree = "<group>";
@@ -1024,8 +1029,10 @@
 				3D843728294984AF0070D20A /* MTRClusters.zapt */,
 				3D843720294984AF0070D20A /* MTRClusters_Internal.zapt */,
 				3D843726294984AF0070D20A /* MTRClusters-src.zapt */,
+				51B6C5C92AD85B50003F4D3A /* MTRClusters-swift.zapt */,
 				3D84371A294984AF0070D20A /* MTRCommandPayloadsObjc.zapt */,
 				3D843727294984AF0070D20A /* MTRCommandPayloadsObjc-src.zapt */,
+				51B6C5C72AD85B47003F4D3A /* MTRCommandPayloads_Internal.zapt */,
 				3D84371D294984AF0070D20A /* MTREventTLVValueDecoder-src.zapt */,
 				3D84371F294984AF0070D20A /* MTRStructsObjc.zapt */,
 				3D843722294984AF0070D20A /* MTRStructsObjc-src.zapt */,
@@ -1555,6 +1562,7 @@
 					};
 					B202528C2459E34F00F97062 = {
 						CreatedOnToolsVersion = 11.4.1;
+						LastSwiftMigration = 1420;
 					};
 					B20252952459E34F00F97062 = {
 						CreatedOnToolsVersion = 11.4.1;
@@ -1729,6 +1737,7 @@
 				2C222AD1255C620600E446B9 /* MTRBaseDevice.mm in Sources */,
 				1EC3238D271999E2002A8BF0 /* cluster-objects.cpp in Sources */,
 				3CF134A9289D8D800017A19E /* MTRCSRInfo.mm in Sources */,
+				51B6C5C62AD85B3D003F4D3A /* MTRClusters.swift in Sources */,
 				991DC0892475F47D00C13860 /* MTRDeviceController.mm in Sources */,
 				B2E0D7B7245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm in Sources */,
 				514304202914CED9004DC7FE /* generic-callback-stubs.cpp in Sources */,
@@ -2036,6 +2045,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				CHIP_ROOT = "$(PROJECT_DIR)/../../..";
+				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = "";
@@ -2065,6 +2075,11 @@
 				INFOPLIST_FILE = CHIP/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = "$(TEMP_DIR)/out/lib";
 				OTHER_CFLAGS = "-fmacro-prefix-map=$(SRCROOT)/CHIP/=";
 				OTHER_LDFLAGS = "";
@@ -2103,6 +2118,8 @@
 				PRODUCT_BUNDLE_IDENTIFIER = com.csa.matter;
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
 				SDKROOT = iphoneos;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
 				TAPI_VERIFY_MODE = Pedantic;
 				TARGETED_DEVICE_FAMILY = "1,2,3,4";
 				VERSION_INFO_EXPORT_DECL = "__attribute__((visibility(\"hidden\")))";
@@ -2112,6 +2129,7 @@
 		BA09EB752474881D00605257 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				"HEADER_SEARCH_PATHS[arch=*]" = "$(PROJECT_DIR)/../../../src";
@@ -2200,6 +2218,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				CHIP_ROOT = "$(PROJECT_DIR)/../../..";
+				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = "";
@@ -2229,6 +2248,11 @@
 				INFOPLIST_FILE = CHIP/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
 				LIBRARY_SEARCH_PATHS = "$(TEMP_DIR)/out/lib";
 				OTHER_CFLAGS = "-fmacro-prefix-map=$(SRCROOT)/CHIP/=";
 				OTHER_LDFLAGS = "";
@@ -2268,6 +2292,7 @@
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
 				SDKROOT = iphoneos;
 				STRIP_STYLE = "non-global";
+				SWIFT_VERSION = 5.0;
 				TAPI_VERIFY_MODE = Pedantic;
 				TARGETED_DEVICE_FAMILY = "1,2,3,4";
 				VERSION_INFO_EXPORT_DECL = "__attribute__((visibility(\"hidden\")))";
@@ -2277,6 +2302,7 @@
 		BA09EB792474882200605257 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = "";
