Todos os recursos nativos. Um SDK.

71 deles, e 61 rodam num celular de verdade no app demo.

  • Notificações pushNovo
  • Compras no app
  • Transições nativas
  • Painéis modaisNovo
  • Entrar com Face ID
  • Leitor QRNovo
  • Menu de compartilharNovo
  • Entrar com a AppleNovo
  • Localização em tempo realNovo
  • Seletor de fotosNovo
  • Links diretosNovo
  • Aviso no íconeNovo
  • Compartilhamentos recebidosNovo
  • Login salvoNovo
  • ContatosNovo
  • Dados de saúdeNovo
  • Player de áudioNovo
  • Gravador de vozNovo
  • Seletor de data e horaNovo
  • Pedido de avaliaçãoNovo
  • Pedido de rastreioNovo
  • Leitor NFCNovo

Docs e demo online para cada um.

Tipados, documentados e iguais no iOS e Android. Chame pelo JavaScript que você já escreve.

Câmera e mídia

Tire fotos, escolha da galeria, grave áudio.

Reprodução de áudio e vídeo

Reproduza mídia com controles nativos e áudio em segundo plano.

Login biométrico

Entrar com Face ID e impressão digital usando seu sistema de acesso atual.

Login salvo

Mantenha o login entre sessões com credenciais protegidas pelo aparelho.

Compras no app

Venda produtos digitais nas duas lojas. Verifique recibos no servidor.

Notificações push

Notificações push segmentadas a partir do seu backend, via OneSignal.

Geolocalização

Leia a localização do aparelho com precisão nativa.

Permissões em execução

Peça e confira permissões nativas com cuidado.

Links diretos

Links que abrem o app — ou a loja e depois o app.

Compartilhamento nativo

O menu de compartilhar do sistema — texto, links, imagens, arquivos.

Interface nativa e resposta

Banners, indicadores de carregamento e a interface nativa, pelo JavaScript.

Aparelho, ciclo de vida

Plataforma, versão do app, eventos em primeiro e segundo plano.

Cada publicação atualiza cada instalação.

Web, iOS, Android: todos rodam sua última publicação, até quem nunca atualiza o app.

Antes: publique cada mudança três vezes e espere a revisão. Com BDK, publique uma vez.

Um novo ícone ou recurso nativo ainda exige uma versão para a loja.

Como o App Review vê isso

Veja sua IA conectar tudo.

Escolha a ferramenta em que você cria. Esta é toda a integração: a referência que ela lê, os arquivos que escreve, o celular respondendo.

acme-storefront
PreviewCode
Publish

Envie pelo servidor uma notificação push que abra o post do link com credenciais do ambiente

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

Envie o link direto pelo servidor com credenciais do ambiente

Notificações push só no servidor usam credenciais do ambiente e abrem o Post 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});
O pedido completo
Integre @thebdk/native a este app para a câmera e o Face ID funcionarem quando o site publicado rodar na estrutura nativa do BDK, enquanto o app web normal continua funcionando no navegador.

Primeiro, leia https://docs.thebdk.com/llms-full.txt e a página de cada recurso que adicionar. Use apenas nomes de funções, eventos e chaves de opções documentados ali — não invente uma API.

Depois:
1. Adicione o pacote @thebdk/native.
2. Crie um cliente compartilhado em src/lib/bdk.ts com uma importação compatível com o navegador:
   import { createBdkNative } from "@thebdk/native/browser";
   export const bdk = createBdkNative();
3. Crie os recursos apenas com as funções tipadas com namespace: bdk.media.*, bdk.ui.*,
   bdk.navigation.*, bdk.iap.*, bdk.auth.*, bdk.location.*, bdk.device.*, bdk.share.*,
   bdk.permissions.*.
4. Assine com bdk.on(event, cb) ANTES de chamar qualquer função interativa — o resultado
   chega pelo evento, não pela promise retornada.
5. No navegador, a chamada não roda: resolve com triggered: false. Ramifique conforme
   !result.triggered e mantenha uma alternativa web real para a prévia do Lovable e o build
   web continuarem funcionando. Não descreva esse caso como ignorado ou not_native e não
   espere um evento nativo na interface web.
6. Tudo de @thebdk/native/server/* é só para o backend. Leia credenciais de variáveis
   de ambiente — nunca coloque chaves ou importações de servidor no código do cliente.

Não diga que criou apps iOS ou Android, empacotou o site, assinou versões, enviou a uma loja ou verificou o comportamento nativo na prévia.

Termine com os arquivos alterados, a alternativa web adicionada e estes próximos passos: publique o app na sua URL, conecte a URL em thebdk.com para o BDK empacotar e assinar as versões iOS e Android e teste os recursos nativos no app empacotado pelo BDK.

Rodando no app empacotado pelo BDK

Adiciona câmera e Face ID. A prévia web continua funcionando com a alternativa web.

  • Um cliente compartilhado — npm install @thebdk/native, uma importação, todo o resto igual.
  • Resultados chegam por eventos. O pedido orienta o agente a assinar com bdk.on(…) antes de chamar.
  • Também funciona no navegador. Fora do app, as chamadas não rodam, então seu site continua funcionando.

Sem código próprio? Não há nada para instalar. Conecte a URL do seu app no painel e as versões saem iguais.

Crie seu app

Referência para leitura por máquina: llms.txt — o arquivo que seu agente busca. Como agentes usam →

Três etapas. Sem nova tecnologia.

  1. 1

    Instale o SDK — ou não

    Tem código próprio? npm install @thebdk/native — uma dependência, totalmente tipada. Sem código? Nada para instalar. A etapa 3 é todo o trabalho.

  2. 2

    Chame recursos nativos onde quiser

    Câmera, biometria, compras, notificações push — pelo JavaScript atual. Uma versão: na aba do navegador ou instalado pela App Store, funciona.

  3. 3

    Conecte sua URL. Receba versões prontas para as lojas.

    Cole sua URL no painel. O BDK cria e assina os dois apps. Depois, cada publicação atualiza todos os celulares.

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."
});

Esse é todo o modelo de integração. Referência completa nos docs; cada recurso pode rodar no app demo.

Respostas completas.

A Apple não vai recusar por ser um site empacotado?

A Apple recusa apps que são só um site. Notificações push, Face ID, compras e compartilhamento tornam o seu um app. Ninguém pode prometer aprovação. O app demo é um app empacotado pelo BDK para você mesmo avaliar.

Atualizações na hora não violam as regras das lojas?

Não. Seu app mostra seu site no ar. Publicar seu site é como apps baseados na web funcionam, sem truque de injeção de código. A revisão da loja se aplica quando a parte nativa muda (ícone, permissões ou atualização do ambiente de execução). Nesses casos, o BDK entrega uma nova versão assinada para você enviar.

O que é BDK, exatamente?

Um ambiente nativo para iOS e Android que mostra seu app web no ar em tela cheia dentro de um app real distribuído pelas lojas. Inclui um SDK JavaScript tipado, @thebdk/native, que conecta seu código ao aparelho: câmera, biometria, compras, notificações push. O BDK empacota e assina o app pronto para a loja. Você envia pelas suas próprias contas de desenvolvedor, com orientação em cada etapa. Seu app web continua normal, hospedado por você.

Preciso mudar meu app web?

Não. Ele roda como está. Adicione @thebdk/native só onde quiser recursos nativos. O resto fica igual, e a mesma versão continua no ar no seu site normal.

Qual a diferença para uma PWA ou Capacitor?

Uma PWA não pode estar na App Store nem vender por compra no app. O Capacitor entrega projetos nativos para você cuidar — criar, assinar e recriar versões continuam sendo sua tarefa, sempre. O ambiente de execução do BDK é gerenciado: empacotar, assinar e lidar com mudanças das plataformas ficam com ele, não com você.

Tudo acima, no seu app.

Crie seu app Leia os docs