For the complete documentation index, see llms.txt. This page is also available as Markdown.

Guia de Migração: CafSDK 2.1.0 → 3.0.0-rc.3

Resumo das Mudanças

Esta documentação descreve as principais alterações na API do @caf.io/react-native-sdk entre as versões 2.1.0 e 3.0.0-rc.3, com foco específico nos métodos de inicialização.


🔄 Mudanças na Inicialização

1. Hook useCafSdk

Versão 2.1.0 (Anterior)

const { initialize, response } = useCafSdk(configuration, callback);

// initialize chamava automaticamente startSDK
const initialize = async () => {
  module.initialize(configurationRef.current, async (success: boolean) => {
    if (success) {
      await new Promise((resolve) => {
        callback();
        setTimeout(resolve, 10);
      });
      
      // ⚠️ startSDK era chamado automaticamente
      module.startSDK();
    }
  });
};

Características:

  • Método initialize era assíncrono (async)

  • Usava callback como segundo parâmetro do module.initialize

  • Iniciava o SDK automaticamente após a inicialização bem-sucedida

  • Retornava apenas { initialize, response }


Versão 3.0.0-rc.3 (Atual)

Características:

  • Método initialize usa Promise ao invés de callback

  • NÃO inicia o SDK automaticamente - controle manual necessário

  • Expõe três novos métodos: initialize, startSDK e loadSession

  • Melhor tratamento de erros com .catch()


⚡ Ganho de Performance com loadSession()

O que é o loadSession()?

O método loadSession() é uma otimização de performance introduzida na versão 3.0.0-rc.3. Ele permite pré-carregar a sessão do SDK antes de iniciar a câmera.

🚀 Benefício de Performance

Problema na versão 2.1.0:

Solução na versão 3.0.0-rc.3:

*Tempo varia conforme latência de rede e dispositivo

💡 Quando Usar

✅ Cenários Recomendados

❌ Quando NÃO Usar

O que acontece no loadSession():

  1. ✅ Cria sessão com servidor CAF

  2. ✅ Autentica credenciais

  3. ✅ Prepara contexto de captura

  4. ✅ Aloca recursos necessários

🎁 Vantagens Adicionais

Melhor UX: Usuário tem um carregamento mais fluido ✅ Flexibilidade: Controle total sobre quando carregar


Código na Versão 2.1.0


Código na Versão 3.0.0-rc.3


⚠️ Breaking Changes

1. Separação de Responsabilidades

  • Antes: initialize() fazia tudo (configurar + iniciar)

  • Agora: Métodos separados para cada etapa

2. Chamada Manual Obrigatória

3. Mudança de Callback para Promise

4. Novos Métodos Disponíveis


🔍 Mudanças no Response State

Tratamento de Múltiplos Sucessos

Versão 2.1.0:

Versão 3.0.0-rc.3:

Impacto no Código


📊 Comparação Resumida

Aspecto
2.1.0
3.0.0-rc.3

initialize

async, auto-start

Promise-based, manual start

startSDK

❌ Automático

✅ Manual

loadSession

❌ Não existe

✅ Novo método (otimização)

Callback Pattern

Callback nativo

Promise

response.success

Objeto único

Array de objetos

Controle do Fluxo

Automático

Manual (mais controle)


✅ Checklist de Migração

Last updated