---
title: Panel SDK
---

# Panel SDK

## 1.16.x

### 1.16.1 (2026-04-28)

**Features**
- `SmartDevicesManager`: Added multi-device management, supporting access to multiple independent devices in the same MiniApp through `SdmProvider.deviceManager`, with device management APIs such as `add`, `batchAdd`, `delete`, and `batchDelete`
- Multi-device Hooks: Added `useDevices`, `useDevicesProps`, `useDevicesActions`, `useStructuredDevicesProps`, `useStructuredDevicesActions`, and more, supporting per-device DP status reading and command sending. You can also override types in `typings/sdm.d.ts` to bind Schemas precisely by device key for TypeScript type inference. See [Multi-Device Management](/en/miniapp/solution-panel/ability/common/multi-device/usage)

## 1.15.x

### 1.15.0 (2026-02-26)

**Features**
- `matter-kit`: Added Matter lamp device panel DP datapoint processing interceptor with built-in bidirectional conversion between Matter protocol and standard DP protocol. Automatically handles device info, DP status reporting, and command conversion. Provides utility functions such as `checkIsMatterDevice`, `getMatterRoad`, `checkIsMatterHasWhite`, and hooks like `useOriginMatterTemp`, `useColourData`. See [matter-kit](/en/miniapp/solution-panel/ability/common/sdm/interceptors/matterkit/usage)
- `SmartLampAdvancedAbility`: Added lamp advanced capability supporting advanced color temperature and thousandth brightness detection, color temperature/brightness value conversion, and VAS keypoint information retrieval. See [SmartLampAdvancedAbility](/en/miniapp/solution-panel/ability/common/sdm/abilities/lampAdv/usage)
- `SmartSupportAbility`: Added 9 new device type detection APIs: `isGprsDevice`, `isBluetoothDevice`, `isBleMeshDevice`, `isCat1Device`, `isBeaconDevice`, `isLteCat4Device`, `isLteCat10Device`, `isLteCatMDevice`, `isThreadDevice`

## 1.14.x

### 1.14.0 (2025-11-06)

**Features**
- `I18N`: Added `getFaultLang` API for getting multilingual strings of fault-type datapoints (Bitmap type), supporting bit-wise parsing of fault codes and returning corresponding multilingual descriptions
- `SmartDeviceModel` & `SmartGroupModel`: Added `queryDps` API that adapts to different App versions and device protocols for actively querying DP datapoint status
- `dp-kit`: Added `ignoreDpDataResponse.timeout` / `customRule` support for custom debouncing of DP reporting events and custom filtering rules
- `onMusic2RgbChange`: Added `throttle` parameter support for custom throttling time

## 1.13.x

### 1.13.9 (2025-09-04)

**Bug Fixes**
- `SmartSupportAbility`: Fixed an issue where device type judgment was inaccurate in group environments

### 1.13.8 (2025-08-19)

**Bug Fixes**
- `useStructuredProps`: Fixed a bug where structured data could not be updated in some device group environments

### 1.13.7 (2025-06-12)

**Features**
- `usePanelConfig`: Added `subUiid` field in the iot field
- `SmartGroupModel`: getDevInfo API now supports returning the first device information
**Bug Fixes**
- `I18N`: Fixed duplicate key value retrieval exception when inheriting and overriding `formatValue` and `getLang`
**Performance**
- Use lodash-es on-demand import to avoid full lodash package import
- `usePanelConfig`: Optimized setState logic to reduce unnecessary updates
**Types**
- `useStructuredActions`: Type extraction changed to extract delivery structure from formatter parameters to ensure accurate type hints

### 1.13.6 (2025-05-27)

**Bug Fixes**
- `offMusic2RgbChange`: Fixed the issue where unsubscribing could not resolve
**Types**
- `initPanelEnvironment`: Added type hint declarations for `shouldConnectBleAuto`, `autoCheckActivation`, and `disableOtaDialog`. Note that these three features require base library >= 2.27.0. Panel SDK 1.13.6 only adds type hint declarations

### 1.13.5 (2025-04-22)

**Features**
- Added `DreamlightSceneModeTransformer` protocol parsing tool.

### 1.13.3 (2025-03-18)

**Features**
- Fixed `SmartStorageAbility` to address storage exceptions caused by `getLaunchOptionsSync().query` returning a numeric `groupId` in group environments on Android.

### 1.13.2 (2025-02-13)

**Features**
- Fixed `SmartStorageAbility` functionality, adjusted the upper limit of business data that can be saved to 900, to avoid errors when the internal metadata exceeds the limit, causing business data length to not exceed 1024.
- Added `faultDpCode` attribute in `initPanelEnvironment`, supporting custom default alarm prompt box fault function points.
- Added `musicOption` and `callback` return `customProps` in `onMusic2RgbChange` to support business pass-through using custom properties.
- Added `db` decibel value and `index` sensitivity in `callback` return of `onMusic2RgbChange`.

### 1.13.1 (2024-11-01)

**Features**
- Fixed `usePanelConfig` to address the issue where no forced type conversion was performed for numeric or boolean values when configuration retrieval was supported in the App, and to handle exceptional data scenarios.
- Added default support for retrieving the main pid's cloud capability configuration in group environments for `usePanelConfig`.
- Added default value support for asynchronous initialization in `DpKit` Beacon-related Interceptors.
- Added `SmartStorageAbility` with getAll / setAll capabilities.

## 1.12.x

### 1.12.1 (2024-10-15)

**Features**
- Fixed the issue of missing **gid** pass-through in the internal interface of the `SmartAlarmAbility` capability.
- Optimized the value type adaptation of `SdmProvider` for the SmartGroupModel group model.
- Optimized `createDpKit` support export from the panel-sdk entry.

```diff
-import { createDpKit } from '@ray-js/panel-sdk/lib/sdm/interceptors/dp-kit';
+import { createDpKit } from '@ray-js/panel-sdk';
```

### 1.12.0 (2024-06-27)

**Features**
- Added `usePanelConfig` Hooks, more info see [usePanelConfig](/en/miniapp/solution-panel/ability/common/hooks/usePanelConfig)

## 1.11.x

### 1.11.0 (2024-06-25)

**Features**
- Added `SmartTapToRunAbility` for tap-to-run standard ability (requires dependency on `@ray-js/ray@1.5.15` or later versions)
- Added support for the following configuration options in `dp-kit` `sendOptions`:
- `ignoreDpDataResponse`: Ignore DP reporting configuration, disabled by default.
- `synchronizeDevProperty`: Synchronize with cloud device properties, disabled by default.

## 1.10.x

### 1.10.5 (2024-05-10)

**Features**
- Fixed inconsistent field names in the decibel data returned from `onMusic2RgbChange` callback for compatibility

### 1.10.4 (2024-04-18)

**Features**
- Optimized `publishDps`. When the dps parameter is an empty object, the issuing interface is not called to avoid abnormal warnings

### 1.10.3 (2024-04-15)

**Features**
- Fixed potential issues with `Storage` that could prevent it from returning cloud data 

### 1.10.2 (2024-04-07)

**Features**
- Optimized the dependency on `@ray-js/ray` to * (asterisk), now compatible with all versions by default

### 1.10.1 (2024-03-20)

**Features**
- Optimized `Storage` to prompt when new field exceeds limits

### 1.10.0 (2024-02-28)

**Features**
- Added `useSupport` Hooks，more info see [useSupport](/en/miniapp/solution-panel/ability/common/sdm/hooks/useSupport)
- Enhanced `I18N` multilingual support with enhanced TS auto-suggestion for multi-language value types
- Enhanced `SmartGroupModel` as it now supports some generic capabilities like SmartStorageAbility and SmartSupportAbility
- Fix `useStructuredProps` issue where default empty strings were lost during the serialization of raw feature points during device initialization in useStructuredProps, which led to inability to obtain structured data
- Fix `SmartStorageAbility` and `onMusic2RgbChange` resolved some compatibility issues. An upgrade is recommended for those using these capabilities

## 1.9.x

### 1.9.0（2023-11.08）

**Features**
- Added `onMusic2RgbChange` API for listening to music rhythm conversion to RGB, more info see [onMusic2RgbChange](/en/miniapp/develop/ray/api/light/music-rhythms/onMusic2RgbChange)
- Added `offMusic2RgbChange` API for unsubscribing from music rhythm conversion to RGB, more info see [offMusic2RgbChange](/en/miniapp/develop/ray/api/light/music-rhythms/offMusic2RgbChange)
- Added `SmartSupportAbility` for device support status capability, more info see [SmartSupportAbility](/en/miniapp/solution-panel/ability/common/sdm/abilities/support/usage)
- Added `SmartStorageAbility` for device storage capability, more info see [SmartStorageAbility](/en/miniapp/solution-panel/ability/common/sdm/abilities/storage/usage)

## 1.8.x

### 1.8.0 (2023-10-24)

**Features**
- Added `SmartAlarmAbility` Ability, more info see [SmartAlarmAbility](/en/miniapp/solution-panel/ability/common/sdm/abilities/usage)
- Added `useProtocolRun` Hooks, more info see [useProtocolRun](/en/miniapp/solution-panel/ability/common/hooks/useProtocolRun)
- Added `useIsSigmeshGatewayConnected` Hooks, more info see [useIsSigmeshGatewayConnected](/en/miniapp/solution-panel/ability/common/hooks/useIsSigmeshGatewayConnected)
<!-- - Added DP & Device support Status Utils, more info see [DP & Device support Status](/en/miniapp/solution-panel/ability/common/utils/support) -->
- Added protocol parsing tools `ColourTransformer`, `MusicTransformer`, `MicMusicTransformer`, `SmearTransformer`, more info see [Protocol Utils](/en/miniapp/solution-panel/ability/common/protocol).
- Added color conversion tools `kelvin2rgb`, `rgb2kelvin`, `brightKelvin2rgb`, `rgb2RgbString`, `rgb2hsb`, more info see [Color Utils](/en/miniapp/solution-panel/ability/common/utils/color).
- Added JSON conversion tool `stringifyJSON`, more info see [JSON Utils](/en/miniapp/solution-panel/ability/common/utils/json).
- Added DP Conversion Utils, more info see [DP Conversion](/en/miniapp/solution-panel/ability/common/utils/conversion)

## 1.7.x

### 1.7.1 (2023-10-24)

**Features**
- Fix the issue of `I18N.formatValue` not able to fetch online multilingual data.

### 1.7.0 (2023-09-07)

**Features**
- Added `dp-kit` interceptor, more info see [dp-kit](/en/miniapp/solution-panel/ability/common/sdm/interceptors/dpkit/usage)

## 1.6.x

### 1.6.1 (2023-08-17)

**Features**
- Fixed the issue where `InitPanelEnvironment` might not be triggered in `App.onReady`.

### 1.6.0 (2023-08-14)

**Features**
- Added the `publishDps` method to the smart device model and smart group model, allowing batch control of device feature points.
- Added support for configuring WeChat cloud capabilities on the client side.

## 1.5.x

### 1.5.0 (2023-06-13)

**Features**
- Added support for `SmartGroupModel` for intelligent group model

```diff
- import { SmartDeviceModel } from '@ray-js/panel-sdk';
+ import { SmartDeviceModel, SmartGroupModel } from '@ray-js/panel-sdk';
+ import { getLaunchOptionsSync } from '@ray-js/ray';

+ const isGroupDevice = !!getLaunchOptionsSync()?.query?.groupId;

type SocketSchema = typeof import('./schema').defaultSchema;

const devices = {
-   socket: new SmartDeviceModel<typeof import('./schema').defaultSchema>(),
+   socket: isGroupDevice
+     ? new SmartGroupModel<SocketSchema>()
+     : new SmartDeviceModel<SocketSchema>(),
};
```

## 1.4.x

### 1.4.1 (2023-04-27)

**Features**
- Compatible with `TuyaLink` protocol devices that do not have schema, which may cause crashes

### 1.4.0 (2023-04-13)

**Features**
- Added more support for WeChat MiniApps

## 1.3.x

### 1.3.3 (2023-04-03)

**Features**
- Compatible with `quickjs`

### 1.3.2 (2023-03-08)

**Features**
- Fixed getWeathers API

### 1.3.0 (2023-02-07)

**Features**
- Started supporting WeChat MiniApps

## 1.2.x

### 1.2.1 (2022-11-16)

**Features**
- Fixed `useDevice` to get the latest value
- Fixed `useDevInfo` unregisterDeviceListListener causing failure to listen to reports

### 1.2.0 (2022-11-16)

**Features**
- `useSdmProps` -> `useProps`
- `useSdmDevice` -> `useDevice`
- Added `useActions` hooks
- Merged sdm into panel-sdk package

```diff
- import { SmartDeviceModel } from '@tuya-miniapp/sdm';
- import { SdmProvider, useSdmProps } from '@ray-js/sdm-react';
+ import { SmartDeviceModel, SdmProvider, useProps } from '@ray-js/panel-sdk';
```

## 1.0.x

### 1.0.4 (2022-10-21)

**Features**
- Fixed the crash when `useSdmProps` is used in the absence of a DP code.

  ```typescript
  useSdmProps((props) => props.switch_not_exist); // crash before 1.0.4

  useSdmProps((props) => props.switch_not_exist); // return null now
  ```
