> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Passkeys

> Login nativo con Face ID / Touch ID / huella, con la configuración de dominio que pide cada plataforma.

Cada SDK usa el sistema de passkeys propio de la plataforma — **sin instalar nada extra**:

* **Web** — WebAuthn.
* **React Native / Flutter** — el módulo nativo de passkeys viene **incluido** en el SDK.
* **iOS** — `ASAuthorization` (UI del sistema).
* **Android** — Credential Manager (UI del sistema).

## Activar e iniciar sesión

<CodeGroup>
  ```ts React Native theme={null}
  await auth.enablePasskey();                // actívala para el usuario con sesión
  const session = await auth.loginWithPasskey(); // la próxima vez, sin usuario
  ```

  ```dart Flutter theme={null}
  await auth.enablePasskey();
  final session = await auth.loginWithPasskey();
  ```

  ```swift iOS theme={null}
  try await auth.enablePasskey()
  let session = try await auth.loginWithPasskey()
  ```

  ```kotlin Android theme={null}
  auth.enablePasskey(activity)              // pasa un contexto de Activity
  val session = auth.loginWithPasskey(activity)
  ```
</CodeGroup>

## Dominios asociados (requerido)

Las passkeys se atan a `passkeyDomain` y solo funcionan si ese dominio está
registrado como dominio asociado de tu app.

<Tabs>
  <Tab title="iOS">
    1. Agrega la capability **Associated Domains** en Xcode con
       `webcredentials:yourapp.com`.
    2. Sirve un archivo **Apple App Site Association** en
       `https://yourapp.com/.well-known/apple-app-site-association` con la entrada
       `webcredentials` de tu app (Team ID + bundle id).
  </Tab>

  <Tab title="Android">
    Sirve un archivo **Digital Asset Links** en
    `https://yourapp.com/.well-known/assetlinks.json` con el nombre de paquete de tu
    app y la huella SHA-256 del certificado de firma.
  </Tab>

  <Tab title="Web">
    WebAuthn usa el origen de la página como Relying Party — sin archivo extra. Sirve
    la app por HTTPS (o `localhost` en dev).
  </Tab>
</Tabs>

<Warning>
  Hasta que configures el dominio asociado, los botones de passkey darán error. El
  código por email sigue funcionando, así que lanza el email primero y agrega las
  passkeys cuando los archivos del dominio estén en producción.
</Warning>

## Fijar versiones (móvil)

<Note>
  Al compilar contra un Xcode / SDK de Android más viejo, la librería nativa de
  passkeys incluida podría arrastrar una dependencia transitiva que apunta a un SDK
  del sistema más nuevo. Si una build nativa falla por un símbolo desconocido, fija
  esa librería una versión menor hacia atrás — ver el README del SDK para el pin exacto.
</Note>
