# onError

Canonical page: https://docs.ovok.com/native-sdk/guide/components/bt-management/bt-provider/on-error

`onError` receives errors reported by discovery, connection, parsing, and background-delivery paths. The payload can include `deviceData`, a normalized error code, and an `Error`, string, or Bluetooth error value.

~~~tsx
<BTProvider
  {...providerProps}
  onError={({ deviceData, error, code }) => {
    reportBluetoothIssue({
      deviceName: deviceData?.name,
      code,
      message: error instanceof Error ? error.message : String(error),
    });
  }}
/>
~~~

Use the optional `code` for stable programmatic handling. Use the supplied message for diagnostics, not as a user-facing promise: native errors can vary by platform and OS version. For user copy, map known error codes to app-owned messages and provide a retry or settings action where appropriate.

See [Bluetooth error types](/native-sdk/guide/components/bt-management/types/) for the public error shape.
