React
Instale e coloque o widget de suporte do Fluxo para funcionar no React.
Início rápido com o registro do shadcn
bunx --bun shadcn@latest add fluxolat/fluxo/support-reactO registro instala um ponto de partida do <Support /> pronto para React, o FluxoProvider, as dependências necessárias, a importação do CSS do widget e um espaço reservado VITE_FLUXO_API_KEY.
1. Adicione a sua chave de API pública
Crie ou copie uma chave pública segura para o navegador em Configurações → Desenvolvedores. Veja Chaves de API para os domínios permitidos e o comportamento das chaves de teste e de produção.
VITE_FLUXO_API_KEY=pk_test_xxxx2. Monte o FluxoProvider
import React from "react";
import ReactDOM from "react-dom/client";
import { FluxoProvider } from "@/components/fluxo/provider";
import App from "./App";
import "./index.css";
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<FluxoProvider>
<App />
</FluxoProvider>
</React.StrictMode>,
);3. Renderize <Support />
import { Support } from "@/components/fluxo/support";
export default function App() {
return (
<main>
<h1>You are ready to chat</h1>
<Support />
</main>
);
}Início rápido com um prompt de IA
Cole sua chave pública para preencher o prompt, copie-o e rode no ChatGPT, Claude ou Cursor.
Instalação manual do pacote
1. Instale o pacote
pnpm add @fluxolat/react
2. Adicione a sua chave de API pública
VITE_FLUXO_API_KEY=pk_test_xxxxO SDK só consegue ler VITE_FLUXO_API_KEY, NEXT_PUBLIC_FLUXO_API_KEY ou
FLUXO_API_KEY quando o seu empacotador expõe esse valor ao código do
navegador. O Vite e o Next.js expõem os dois primeiros por convenção. Com
qualquer outro empacotador, é melhor passar publicKey explicitamente. As
chaves públicas são feitas para o navegador; nunca exponha uma chave
privada.
3. Adicione o SupportProvider
import React from "react";
import ReactDOM from "react-dom/client";
import { SupportProvider } from "@fluxolat/react";
import App from "./App";
import "./index.css";
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<SupportProvider>
<App />
</SupportProvider>
</React.StrictMode>,
);Se o seu framework não detecta as variáveis de ambiente automaticamente,
passe publicKey diretamente:
<SupportProvider publicKey={import.meta.env.VITE_FLUXO_API_KEY}>.
4. Importe os estilos
O widget não injeta estilos sozinho. Importe um único ponto de entrada de CSS na raiz do app.
Use support.css se o seu app já usa Tailwind CSS v4; use styles.css nos demais casos.
Os dois pontos de entrada se comportam igual em relação ao tema. Se o seu app já expõe tokens no estilo do shadcn, o widget normalmente pega as cores, o raio, as fontes e o modo escuro automaticamente. Não é preciso nenhum mapeamento de tema extra para começar.
import React from "react";
import ReactDOM from "react-dom/client";
import { SupportProvider } from "@fluxolat/react";
import "@fluxolat/react/styles.css";
import App from "./App";
import "./index.css";
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<SupportProvider>
<App />
</SupportProvider>
</React.StrictMode>,
);5. Renderize o widget
import { LazySupport } from "@fluxolat/react/lazy-support";
import { Suspense } from "react";
export default function App() {
return (
<main>
<h1>You are ready to chat</h1>
<Suspense fallback={null}>
<LazySupport />
</Suspense>
</main>
);
}O LazySupport mantém toda a interface do widget fora do bloco inicial do app.
Se você controla quando o suporte aparece, chame preloadSupport do mesmo ponto
de entrada ao passar o mouse ou ao focar, antes de renderizá-lo.
6. Identifique os visitantes logados (opcional)
import { IdentifySupportVisitor } from "@fluxolat/react/identify-visitor";
import { LazySupport } from "@fluxolat/react/lazy-support";
import { Suspense } from "react";
export default function App() {
const user = {
id: "user_123",
email: "jane@acme.com",
name: "Jane Doe",
};
return (
<>
<IdentifySupportVisitor
externalId={user.id}
email={user.email}
name={user.name}
/>
<Suspense fallback={null}>
<LazySupport />
</Suspense>
</>
);
}Verifique a instalação
Recarregue o app e confirme que:
- o gatilho de suporte aparece sem um flash sem estilos
- ao abri-lo, aparece a tela inicial ou uma conversa nova
- o painel de rede do navegador não mostra respostas
401nem403da API do Fluxo
Se o gatilho não aparecer, confira se você importou exatamente um ponto de
entrada de CSS. Se as requisições devolverem 401, revise a chave pública. Se
devolverem 403, adicione o domínio atual — incluindo localhost em
desenvolvimento — aos domínios permitidos da chave. Veja
Chaves de API para a lista completa.
7. Exiba mensagens próprias com SupportConfig defaultMessages
import { Support, SupportConfig } from "@fluxolat/react";
import { type DefaultMessage, SenderType } from "@fluxolat/types";
const user: { name: string | null } = {
name: "Jane Doe",
};
const defaultMessages: DefaultMessage[] = [
{
content: `Hi ${user.name ?? "there"}, anything I can help with?`,
senderType: SenderType.TEAM_MEMBER,
},
];
const quickOptions: string[] = ["How to identify a visitor?"];
export default function App() {
return (
<>
<SupportConfig
defaultMessages={defaultMessages}
quickOptions={quickOptions}
/>
<Support />
</>
);
}O próximo passo na documentação do Support
- Visão geral: o caminho mais curto do primeiro render até um widget pronto para produção.
- Mude uma coisa só: troque a bolha ou a primeira tela sem refazer o widget.
- Combine com a sua marca: defina cores, raio e modo escuro.
Esta página foi útil?
Abra uma issue de documentação já preenchida para que a equipe possa agir.
Nesta página
Início rápido com o registro do shadcn1. Adicione a sua chave de API pública2. Monte oFluxoProvider3. Renderize <Support />Início rápido com um prompt de IAInstalação manual do pacote1. Instale o pacote2. Adicione a sua chave de API pública3. Adicione o SupportProvider4. Importe os estilos5. Renderize o widget6. Identifique os visitantes logados (opcional)Verifique a instalação7. Exiba mensagens próprias com SupportConfig defaultMessagesO próximo passo na documentação do Support
