Supported devices and catalog
The device catalog joins display metadata with the Bluetooth declarations the SDK can use. Import it from @ovok/native/bt-device:
For the complete current model list, see all supported Bluetooth devices.
import {
SUPPORTED_DEVICES,
SUPPORTED_ACCEPTED_DEVICES,
Devices,
} from "@ovok/native/bt-device";
Pick a connectable entry
SUPPORTED_DEVICES is the app-facing catalog. Each row contains id, name, manufacturer, image and attribution data, measurement types, an optional manual URL, and an acceptedDevices array for BTProvider.
const selected = SUPPORTED_DEVICES.find(
(device) => device.id === selectedId,
);
const acceptedDevices = selected?.acceptedDevices ?? [];
if (acceptedDevices.length > 0) {
// Use this declaration list as BTProvider.acceptedDevices.
}
Some rows are useful for display but have no accepted declaration. An empty array means the current SDK catalog does not provide a decoder for that row. Do not offer a connect action for it.
SUPPORTED_ACCEPTED_DEVICES is a de-duplicated union of the declaration arrays in the catalog. Use it only when the feature intentionally accepts every catalog declaration; most apps should provide the narrower set that matches their product.
Catalog IDs are generated from each entry's name. Use the exported id as the selection key rather than constructing it from a display name.
Choose the right catalog UI
| Component | Data and behavior |
|---|---|
| SupportedDevicesCatalogList | Uses SUPPORTED_DEVICES by default. Shows artwork, name, manufacturer, measurement types, image credit, and an optional manual. onSelect returns metadata; it does not connect. |
| SupportedDeviceList | Uses the simpler Devices array and renders the static name, manufacturer, image, and image credit. |
| BTDeviceList | Shows the separate status-list context; it is not the supported catalog. |
| BTDeviceInstruction | Resolves an integrated device's manual from the SDK instruction mapping. |
The richer catalog list displays the raw name and manufacturer strings. The simpler SupportedDeviceList uses nameKey and manufacturerKey with the catalog strings as fallback values. Add locale resources when your app wants translated catalog labels; measurement keys should also be mapped to app-facing copy.
Image URLs, bundled assets, and their creditsForImage values are part of the exported data. The catalog UI displays credit by default. If you replace the photo or credit slot, keep the attribution visible in your app's catalog experience.
Device match and result identity
A catalog declaration describes the device names or services the SDK can match and the protocol used to decode its frames. A product family can contain several models or firmware versions; verify the exact device variant your app offers. For standard GATT profiles, the service layout alone does not make every device with that service a match.
Bluetooth result IDs are stable for repeated delivery when the device identity and measurement payload are unchanged. The identity uses the device serial number when available, then manufacturer data, model, device name, and finally the platform peripheral ID. The final fallback is the platform peripheral ID, so a changed peripheral ID produces a different result identity.
The result's id is enumerable and non-writable at runtime. It is included in object spreads and JSON serialization. Use it as an idempotency key when the app retries persistence or uploads.
See Bluetooth, supported-device definitions, and custom devices.