O pacote @malvo/react-connect é o componente React para o Connect Widget hospedado da Malvo (Open Finance Brasil e Open Banking internacional). Ele renderiza o widget hospedado ({baseUrl}/connect?token=...) em um iframe modal e converte os eventos postMessage do widget nos seus callbacks.

Instalação

Uso

A única entrada obrigatória é um connectToken gerado pelo seu backend. Nunca envie clientId/clientSecret ao navegador — veja o snippet do backend.
Montar abre o widget; desmontar o fecha. No exemplo acima, o botão alterna open: ao ficar true, o <MalvoConnect> é montado e o widget abre; quando o onClose dispara, voltamos open para false e o componente é desmontado, fechando o widget. Todas as opções são aceitas como props. A bridge é vinculada nos dois sentidos: o componente transmite automaticamente a origem exata do integrador para o widget, que a usa como targetOrigin; na volta, o SDK aceita a mensagem somente quando origem e contentWindow correspondem ao iframe criado por ele. Em páginas SSR/Next.js, o iframe só navega depois da hidratação e da instalação do listener. Se connectToken ou os filtros mudarem, o componente cria outro iframe e separa o novo fluxo de qualquer mensagem tardia do anterior.
Os webhooks são a fonte da verdade. O onSuccess é apenas UX best-effort — o usuário pode fechar a aba antes dele disparar. Persista as conexões a partir dos webhooks item/created / item/updated no seu backend. Veja Webhooks.

Open Finance / OAuth em popup

Os bancos rejeitam ser exibidos em iframe, então, quando um conector de Open Finance é escolhido, o widget autoriza em um popup top-level e retoma o fluxo automaticamente ao retornar. Não é preciso configuração extra — apenas não bloqueie popups para a sua origem.

Props

Todas as props de MalvoConnectOptions:
string
required
O connectToken de 30 minutos gerado pelo seu backend (POST /connect_token). Única prop obrigatória.
string
default:"https://malvo.io"
Origem que serve o widget hospedado.
boolean
Mostra conectores de sandbox (apenas em desenvolvimento).
string
Id de um Item existente, para conduzir um fluxo de atualização. O connectToken precisa ter sido gerado com esse mesmo itemId. Veja Modo de atualização.
string[]
Restringe a lista de instituições por tipo (ex.: ["PERSONAL_BANK"]).
number[]
Mostra apenas estes IDs de conector.
string[]
Códigos ISO-3166-1 alpha-2 (ex.: ["BR"]).
'pt' | 'en'
Idioma do fluxo hospedado. Padrão pt.
number
Pula o seletor de instituições e vai direto para a tela de login desse conector.
(data: { item }) => void
A conexão (ou atualização) teve sucesso. data.item traz no mínimo id, e pode incluir status e connector.
(error: { code, message, itemId? }) => void
A conexão falhou. code inclui os códigos de erro de Item (INVALID_CREDENTIALS, ACCOUNT_LOCKED, SITE_NOT_AVAILABLE, …) e os códigos do widget UNAUTHORIZED e TOKEN_EXPIRED. Em TOKEN_EXPIRED/UNAUTHORIZED, gere um token novo e remonte o componente.
() => void
O widget terminou o primeiro carregamento e está visível.
() => void
O widget foi fechado (abandono pelo usuário, sucesso ou erro).
(event: { type, ... }) => void
Recebe OPEN uma vez e as mensagens confiáveis malvo:success, malvo:error e malvo:close sem alteração. O retorno OAuth interno não faz parte dessa telemetria.

Tipos

Gerando o connectToken no backend

O componente só recebe o connectToken. Gere-o em um endpoint autenticado do seu backend — nunca no navegador.
Veja o uso completo server-side em Node (server).

Próximos passos

Connect Widget

Todas as opções, callbacks e o diagrama de sequência.

Node (server)

Helper de auth, geração do connectToken e leitura de dados.

Web (script tag)

A versão vanilla, sem build, via https://malvo.io/widget.js.

Webhooks

A fonte da verdade para o ciclo de vida dos Items.