> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-web/componentes/sdk-provider/metodos/checkcapabilities.md).

# checkCapabilities

Comprueba si el dispositivo cumple los requisitos mínimos antes de montar el SDK.

## Detalles

Comprueba si el navegador y el dispositivo cumplen los requisitos mínimos para ejecutar el flujo biométrico, **antes** de montar `<facephi-sdk-provider>` en el DOM.

### Sintaxis

```typescript
import { checkCapabilities } from '@facephi/sdk-web-wc/capabilities.mjs';

const { camera, wasm, browser } = await checkCapabilities();
```

## Descripción

Función exportada por `@facephi/sdk-web-wc` en el subpath `/capabilities.mjs`. Permite decidir, antes de iniciar la sesión, si el usuario puede continuar en este dispositivo o conviene derivarlo a otro dispositivo o a otra ruta de negocio.

No requiere `apiKey`, no valida licencia y no descarga recursos. El punto de entrada no tiene dependencias, así que no arrastra el motor, los idiomas ni los componentes de interfaz.

Sustituye al método `checkCapabilities()` de los widgets Legacy.

### Valor devuelto

`Promise<WidgetCheckCapabilities>`, con tres booleanos:

| Propiedad | Significado                                                          |
| --------- | -------------------------------------------------------------------- |
| `camera`  | Se ha detectado al menos un dispositivo de entrada de vídeo.         |
| `wasm`    | WebAssembly está disponible y puede compilar e instanciar un módulo. |
| `browser` | Las APIs de navegador que necesitan los widgets están presentes.     |

### Consideraciones

{% hint style="warning" %}
`camera` es una **señal, no una garantía**. Trátala como una condición blanda: ofrece siempre una ruta alternativa **y** un reintento, nunca un callejón sin salida.
{% endhint %}

* La comprobación **no llama a `getUserMedia`**, así que no muestra ningún diálogo de permisos de cámara. Se puede invocar al cargar la página sin fricción para el usuario.
* Como contrapartida, los navegadores que ocultan los dispositivos hasta que se concede el permiso (Safari y otros basados en WebKit) devuelven `camera: false` en un dispositivo perfectamente válido.
* En un origen inseguro (`http` que no sea `localhost`), `navigator.mediaDevices` no existe y `camera` será siempre `false`.
* La comprobación no aplica el filtro antifraude de cámara que sí ejecutan los widgets al montarse. Una cámara virtual supera esta comprobación y aun así es rechazada después.

`wasm` y `browser` sí son condiciones duras: si alguna es `false`, el flujo biométrico no puede ejecutarse en ese navegador.

***

## Ejemplo

```jsx
import { checkCapabilities } from '@facephi/sdk-web-wc/capabilities.mjs';

const { camera, wasm, browser } = await checkCapabilities();

if (!wasm || !browser) {
  // Condición dura: este navegador no puede ejecutar el flujo.
  return redirigirA('/navegador-no-compatible');
}

if (!camera) {
  // Condición blanda: ofrecer continuar en otro dispositivo, permitiendo reintentar.
  return redirigirA('/continuar-en-otro-dispositivo');
}

<facephi-sdk-provider apikey={process.env.FACEPHI_SDK_APIKEY} />
```

### Uso desde CDN, sin empaquetador

```html
<script type="module">
  import { checkCapabilities } from 'https://cdn.facephi.pro/@facephi/sdk-web-wc@latest/bundle/capabilities.js';

  const { camera, wasm, browser } = await checkCapabilities();
</script>
```

### Uso directo del widget, sin SDK

Los paquetes de los widgets exponen la misma función en su propio subpath, disponible desde `@facephi/selphi-web-component@6.40.0` y `@facephi/selphid-web-component@6.39.0`. En versiones anteriores el subpath no existe y el import falla con `ERR_MODULE_NOT_FOUND`.

```typescript
// Selphi
import { checkCapabilities } from '@facephi/selphi-web-component/capabilities.mjs';

// SelphID
import { checkCapabilities } from '@facephi/selphid-web-component/capabilities.mjs';
```
