Skip to main content

Phase 7 — Cloud confirm

Layer: Headless JS → RN terminal event

Tell RainMaker cloud the node is on the fabric; link Matter node ID ↔ RainMaker node ID.

Call chain

Confirm failure

Same channel with COMMISSIONING_ERROR + ChipClient.onCommissioningFailed().

On Android, ESPMatterCommissioningAdaptor does not forward NODE_NOC_REQUEST / COMMISSIONING_CONFIRMATION_REQUEST to the SDK listener (Headless JS handles those types).

Headless JS

Headless JS tasks are registered separately (e.g. registerHeadless.ts). The main React Native UI can be paused or in the background while ChipToolCommissioningActivity is foreground; these tasks run in a dedicated JS runtime started by MatterHeadlessTaskService, call the same Matter SDK cloud APIs, and report results back via ESPMatterModule.handleHeadlessTaskResult or postMessage.

What could go wrong

confirmMatterNodeCommissioning rejects (challenge mismatch, node already bound) → handleHeadlessTaskResult failure → COMMISSIONING_ERROR with source: HEADLESS_JS. Device is on fabric locally but not registered in RainMaker cloud.

On this page