Integrate Matter Protocol for Smart Home Control
We are a mobile development team with hands-on experience implementing Matter integrations for iOS and Android. We've tackled typical pain points: slow commissioning, Thread network incompatibility, and certification hurdles. In this article, we share how to avoid common pitfalls and quickly add Matter support to your app.
Matter is the open smart home standard from the Connectivity Standards Alliance, backed by Apple, Google, Amazon, and Samsung. A Matter-certified device works seamlessly with any ecosystem — Apple Home, Google Home, Amazon Alexa, SmartThings — without separate integrations. For mobile apps, this means one SDK to control all Matter devices regardless of manufacturer. Estimates predict over 1 billion Matter-certified devices — a trend you cannot ignore.
How Matter Works at the Stack Level
Matter operates over IPv6 via Wi-Fi or Thread (a low-power mesh network). A Border Router (e.g., HomePod mini, Google Nest Hub, Echo) bridges the Thread network to the IP network.
The commissioning process:
- User scans the QR code or enters the device's PIN
- Phone establishes a Bluetooth connection to the device
- Certificate exchange via PASE (Passcode Authenticated Session Establishment)
- Device receives network credentials and connects to Wi-Fi/Thread
- Device is added to a Fabric — a common trusted space
One physical device can be added to multiple Fabrics simultaneously (Multi-Admin). For example, a lamp added to both Apple Home and Google Home — both ecosystems control it independently.
Why Matter is the De Facto Standard
Matter solves the core smart home problem: fragmentation. Developers no longer need to write integrations for each ecosystem — a single API set covers Apple Home, Google Home, Amazon Alexa, and SmartThings. This saves up to 40% of development and testing time.
iOS: Matter via HomeKit + MatterSupport
On iOS, Matter devices are added through HomeKit. Your app can initiate the process using MatterSupport.framework (iOS 16.1+):
import MatterSupport func addMatterDevice() { let topology = MatterAddDeviceRequest.Topology( ecosystemName: "MyApp Smart Home", homes: [MatterAddDeviceRequest.Topology.Home( displayName: "My Home" )] ) let request = MatterAddDeviceRequest(topology: topology) Task { do { try await request.perform() // device added to HomeKit } catch { // MatterAddDeviceRequest.Error.userCancelled } } } After addition, the device is available as an HMAccessory in HomeKit. Control uses the standard HMCharacteristic API. Matter-specific clusters not present in HomeKit are accessible via HMAccessory.matterNodeID and additional APIs.
Android: Google Home Mobile SDK + Matter SDK
Google provides two paths:
Google Home Mobile SDK (Recommended)
High-level SDK for commissioning devices into the Google Home ecosystem:
val commissioningRequest = CommissioningRequest.builder() .setCommissioningService(MatterCommissioningService::class.java) .build() homeClient.commissionDevice(commissioningRequest).addOnSuccessListener { result -> // device added }.addOnFailureListener { exception -> // error handling } Direct Matter SDK (connectedhomeip)
The full implementation from CSA includes a custom Fabric and device management without depending on Google Home. It is significantly more complex: you must manage Fabric Credentials, store certificates, and implement commissioning yourself. This path is suitable when building your own ecosystem or needing access to clusters beyond standard HomeKit/Google Home APIs.
Choosing Between MatterSupport and Matter SDK
If you need fast integration with minimal code, choose MatterSupport (iOS) or Google Home SDK (Android). They reduce code volume by 3-4 times compared to the direct Matter SDK. The direct SDK is justified when full Fabric control or non-standard clusters are required.
| Platform | Recommended SDK | Abstraction Level | Complexity | Control |
|---|---|---|---|---|
| iOS | MatterSupport | High (via HomeKit) | Low | Limited (within HomeKit) |
| Android | Google Home SDK | High (via Google Home) | Low | Limited (within Google Home) |
| Both | Matter SDK (CSA) | Low (direct cluster access) | High | Full (own Fabric) |
Matter Clusters
Matter uses a cluster model — analogous to GATT Characteristics in BLE. Cluster 0x0006 — On/Off; 0x0008 — Level Control (brightness); 0x0300 — Color Control. Through the Matter SDK you can read/write attributes directly:
// Direct cluster control val endpointId = EndpointId(1u) val clusterId = ClusterId(0x0006u) // On/Off val attributePath = AttributePath( endpointId = endpointId, clusterId = clusterId, attributeId = AttributeId(0x0000u) // OnOff attribute ) // Read state chipDeviceController.readAttributePath(devicePtr, listOf(attributePath), 0) Typical Development Challenges
Thread Border Router. If the device uses Thread, the phone cannot communicate with it without a Thread Border Router in the network. Development requires a compatible Border Router (HomePod mini, Eero 6, Google Nest Wifi Pro).
Certification. Matter devices must be certified by CSA. Your app does not require certification, but testing with non-certified prototypes is possible via Development Mode SDK.
Commissioning Window. Device opens a commissioning window (default 11 minutes). If commissioning fails, the process must restart. Handle this explicitly in UX.
What’s Included in Our Work
- Audit of your current app architecture
- Integration design (SDK selection, commissioning flow)
- Implementation of commissioning and device control
- Push notification integration (APNs/FCM) for device status
- Testing on real Matter devices (up to 10 units)
- Documentation and team training
- 3 months of post-release support
Why Choose Us
- Over 9 years of mobile development experience
- 30+ completed IoT projects
- Certified Apple and Google developers
- Average Matter integration timeline: 2 weeks
Contact us to evaluate your project. Get a consultation on your Matter solution architecture.







