---
name: "SmartDevicesManager.init"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.16.0" }
title: "init"
---

## SmartDevicesManager.init

> [VERSION] @ray-js/panel-sdk >= 1.16.0

> 💡 add / batchAdd automatically call init(); therefore, if you need to pre-register global listeners (e.g., listen to change events) before adding devices, call init() once manually.

### Description

Start listening to global events (Ray global DP, online/offline, etc.); idempotent.

### Parameters

None


### Return Value

None


### Examples

#### Register global listeners in advance

```ts
import React, { useEffect } from 'react';
import { SmartDevicesManager, SdmProvider } from '@ray-js/panel-sdk';

const deviceManager = new SmartDevicesManager();

export default function App({ children }) {
  useEffect(() => {
    deviceManager.init(); // Start listening to global events
    return () => {
      deviceManager.destroy(); // Cleanup on component unmount
    };
  }, []);

  return (
    <SdmProvider deviceManager={deviceManager} isNeedMainDeviceInitialized={false}>
      {children}
    </SdmProvider>
  );
}
```
