Cada función nativa. Un SDK.

Son 71, y 61 funcionan en un celular real en la app de demo.

  • Notificaciones pushNuevo
  • Compras en la app
  • Transiciones nativas
  • Paneles modalesNuevo
  • Acceso con Face ID
  • Escáner QRNuevo
  • Menú CompartirNuevo
  • Entrar con AppleNuevo
  • Ubicación en vivoNuevo
  • Selector de fotosNuevo
  • Enlaces profundosNuevo
  • Indicador de la appNuevo
  • Contenido compartido recibidoNuevo
  • Acceso guardadoNuevo
  • ContactosNuevo
  • Datos de saludNuevo
  • Reproductor de audioNuevo
  • Grabadora de vozNuevo
  • Selector de fecha y horaNuevo
  • Solicitud de calificaciónNuevo
  • Solicitud de rastreoNuevo
  • Escaneo NFCNuevo

Docs y una demo en vivo de cada una.

Tipadas, documentadas e iguales en iOS y Android. Llámalas desde el JavaScript que ya escribes.

Cámara y multimedia

Toma fotos, elige de la galería, graba audio.

Reproducción de audio y video

Reproduce multimedia con controles nativos y audio en segundo plano.

Acceso biométrico

Acceso con Face ID y huella para tu sistema de acceso actual.

Acceso guardado

Recuerda a los usuarios entre sesiones con credenciales guardadas en el dispositivo.

Compras en la app

Vende productos digitales en ambas tiendas. Verifica recibos en el servidor.

Notificaciones push

Notificaciones push dirigidas desde tu backend, con OneSignal.

Ubicación

Lee la ubicación del dispositivo con precisión nativa.

Permisos de ejecución

Pide y revisa permisos nativos con suavidad.

Enlaces profundos

Enlaces que abren la app, o la tienda y luego la app.

Compartir nativo

El menú del sistema para compartir texto, enlaces, imágenes y archivos.

Interfaz y respuesta nativas

Avisos, indicadores de carga e interfaz nativa desde JavaScript.

Equipo y ciclo de vida

Plataforma, versión de app y eventos en primer y segundo plano.

Cada publicación actualiza cada instalación.

Web, iOS, Android: todos usan tu última publicación, incluso quienes nunca actualizan la app.

Antes: publicabas cada cambio tres veces y esperabas la revisión. Con BDK, publicas una vez.

Un nuevo ícono o función nativa aún necesita una versión para la tienda.

Qué ve App Review

Mira cómo lo conecta tu IA.

Elige la herramienta que usas. Esta es toda la integración: la referencia que lee, los archivos que escribe y el celular que responde.

acme-storefront
PreviewCode
Publish

Usa credenciales del entorno para enviar desde el servidor una notificación push que abra la publicación enlazada

Leer server/onesignal-push
server/notifications/sendReply.ts+12

Envía el enlace profundo desde el servidor con credenciales del entorno

La notificación push se envía solo desde el servidor, usa credenciales del entorno y abre la publicación 42.

Ask Lovable...
Build
acme-storefront.lovable.app
server/notifications/sendReply.ts+12
1import { sendPushNotification } from "@thebdk/native/server/onesignal";2 3const result = await sendPushNotification({4  message: "New reply on your post",5  title: "Inbox",6  subtitle: "From @jess",7  imageUrl: "https://cdn.example.com/preview.png",8  onLoadUrl: "https://app.example.com/posts/42",9  urlParams: [{ key: "ref", value: "push" }],10  data: { postId: 42, kind: "reply" },11  subscriptionIds: ["a1b2c3d4-1111-2222-3333-444455556666"]12});
Instrucción completa
Integra @thebdk/native en esta app para que la cámara y Face ID funcionen cuando el sitio publicado se ejecute en el contenedor nativo de BDK, y la app web normal siga funcionando en un navegador.

Primero lee https://docs.thebdk.com/llms-full.txt y la página de cada función que agregues. Usa solo los nombres de funciones auxiliares, eventos y claves de opciones documentados ahí. No inventes una API.

Luego:
1. Agrega el paquete @thebdk/native.
2. Crea un cliente compartido en src/lib/bdk.ts con una importación segura para el navegador:
   import { createBdkNative } from "@thebdk/native/browser";
   export const bdk = createBdkNative();
3. Crea las funciones solo con las funciones auxiliares tipadas por espacio de nombres: bdk.media.*, bdk.ui.*,
   bdk.navigation.*, bdk.iap.*, bdk.auth.*, bdk.location.*, bdk.device.*, bdk.share.*,
   bdk.permissions.*.
4. Suscríbete con bdk.on(event, cb) ANTES de llamar a algo interactivo. El resultado
   llega en el evento, no en la promesa devuelta.
5. En un navegador la llamada no se ejecuta: se resuelve con triggered: false. Usa
   !result.triggered para elegir una alternativa web real y mantener funcionando la vista previa de Lovable
   y la versión web. No describas ese caso como omitido ni not_native, y no
   esperes un evento nativo en la interfaz web.
6. Todo lo de @thebdk/native/server/* es solo para el backend. Lee las credenciales de variables
   de entorno. Nunca pongas claves ni importaciones del servidor en el código del cliente.

No afirmes que creaste apps de iOS o Android, empaquetaste el sitio, firmaste versiones, enviaste a una tienda o verificaste el comportamiento nativo en la vista previa.

Termina con los archivos que cambiaste, la alternativa web que agregaste y estos pasos pendientes: publica esta app en su URL, conecta esa URL en thebdk.com para que BDK empaquete y firme las versiones de iOS y Android, y luego prueba las funciones nativas en la app empaquetada por BDK.

En la app empaquetada por BDK

Agrega cámara y Face ID. La vista previa web sigue funcionando con la alternativa web.

  • Un cliente compartido: npm install @thebdk/native, una importación, todo lo demás sigue igual.
  • Los resultados llegan en eventos. La instrucción indica al agente que se suscriba con bdk.on(…) antes de llamar.
  • También funciona en un navegador. Fuera de la app, las llamadas no se ejecutan y tu sitio web sigue funcionando.

¿No tienes código? No hay nada que instalar. Conecta la URL de tu app en BDK Native y obtendrás las mismas versiones.

Crea tu app

Referencia legible por máquinas: llms.txt, el archivo que obtiene tu agente. Uso por agentes →

Tres pasos. Sin nuevas tecnologías.

  1. 1

    Instala el SDK, o no

    ¿Tienes código? npm install @thebdk/native, una dependencia totalmente tipada. ¿Sin código? Nada que instalar. El paso 3 es todo el trabajo.

  2. 2

    Usa funciones nativas donde quieras

    Cámara, biometría, compras, notificaciones push: desde tu JavaScript actual. Una versión: funciona en una pestaña del navegador o instalada desde App Store.

  3. 3

    Conecta tu URL. Recibe versiones listas para las tiendas.

    Pega tu URL en BDK Native. BDK crea y firma ambas apps. Luego, cada publicación actualiza cada celular.

app.ts
import { createBdkNative } from "@thebdk/native/browser";

const bdk = createBdkNative();
await bdk.ready();

// Results arrive on events — subscribe, then call.
bdk.on("photoCaptured", (photo) => upload(photo.fileUrl));
await bdk.media.capturePhoto();

// Native UI, one line.
await bdk.ui.showBanner({
  title: "Saved",
  description: "Photo uploaded."
});

Ese es todo el modelo de integración. Consulta la referencia completa en los docs y prueba cada función en la demo online.

Las respuestas largas.

¿Apple no la rechazará por ser un sitio web empaquetado?

Apple rechaza apps que son solo un sitio web. Notificaciones push, Face ID, compras y compartir hacen que la tuya sea una app. Nadie puede prometer aprobación. La demo online es una app empaquetada por BDK que puedes evaluar tú.

¿Las actualizaciones instantáneas no violan las reglas?

No. Tu app muestra tu sitio en vivo. Publicar tu sitio web es como funcionan las apps basadas en la web, sin trucos de inyección de código. Hay revisión de la tienda cuando cambia la parte nativa: ícono, permisos o entorno de ejecución. Para eso, BDK te entrega una nueva versión firmada que tú envías a revisión.

¿Qué es BDK exactamente?

Un entorno nativo para iOS y Android que muestra tu app web en vivo a pantalla completa dentro de una app real distribuida en las tiendas. Además, un SDK de JavaScript tipado, @thebdk/native, conecta tu código con el dispositivo: cámara, biometría, compras y notificaciones push. BDK empaqueta y firma la app lista para las tiendas. Tú la envías a revisión desde tus cuentas de desarrollador, con una guía paso a paso. Tu app web sigue siendo una app web estándar, alojada por ti.

¿Debo cambiar mi app web?

No. Funciona tal como está. Agrega @thebdk/native solo donde quieras funciones nativas. Todo lo demás sigue igual y la misma versión sigue sirviendo tu sitio web normal.

¿En qué se diferencia de una PWA o de Capacitor?

Una PWA no puede estar en App Store ni vender con compras en la app. Capacitor te da proyectos nativos para que sean tuyos: crearlos, firmarlos y regenerarlos siempre es tu trabajo. BDK se encarga de su entorno de ejecución: el empaquetado, la firma y los cambios de plataforma son problema de BDK, no tuyo.

Todo lo anterior, en tu app.