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 inicializar 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 inicializar EUA Promise em vez de callback

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

  • Expõe três novos métodos: inicializar, 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:

*O tempo varia conforme a latência da rede e do dispositivo

💡 Quando Usar

✅ Cenários Recomendados

❌ Quando NÃO Usar

O que acontece no loadSession():

  1. ✅ Cria sessão com o servidor CAF

  2. ✅ Autentica as credenciais

  3. ✅ Prepara o contexto de captura

  4. ✅ Aloca os 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


⚠️ Mudanças Incompatíveis

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 Estado de Response

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

inicializar

async, início automático

Baseado em Promise, início manual

startSDK

❌ Automático

✅ Manual

loadSession

❌ Não existe

✅ Novo método (otimização)

Padrão de Callback

Callback nativo

Promise

response.success

Objeto único

Array de objetos

Controle do Fluxo

Automático

Manual (mais controle)


✅ Checklist de Migração

Atualizado