Saltar al contenido principal

React

Instala y pon en marcha el widget de soporte de Fluxo en React.

Inicio rápido con el registro de shadcn

bunx --bun shadcn@latest add fluxolat/fluxo/support-react

El registro instala un punto de partida de <Support /> listo para React, el FluxoProvider, las dependencias necesarias, la importación del CSS del widget y un marcador VITE_FLUXO_API_KEY.

1. Añade tu clave de API pública

Crea o copia una clave pública segura para el navegador en Ajustes → Desarrolladores. Consulta Claves de API para ver los dominios permitidos y cómo se comportan las claves de prueba y de producción.

.env
VITE_FLUXO_API_KEY=pk_test_xxxx

2. Monta FluxoProvider

tssrc/main.tsx
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. Renderiza <Support />

tssrc/App.tsx
import { Support } from "@/components/fluxo/support";
 
export default function App() {
  return (
    <main>
      <h1>You are ready to chat</h1>
      <Support />
    </main>
  );
}

Inicio rápido con un prompt de IA

Pega tu clave pública para rellenar el prompt, cópialo y ejecútalo en ChatGPT, Claude o Cursor.

fluxo-prompt.md

Instalación manual del paquete

1. Instala el paquete

pnpm add @fluxolat/react

2. Añade tu clave de API pública

.env
VITE_FLUXO_API_KEY=pk_test_xxxx

3. Añade SupportProvider

tssrc/main.tsx
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>,
);

4. Importa los estilos

El widget no inyecta estilos por su cuenta. Importa un único punto de entrada de CSS en la raíz de la aplicación. Usa support.css si tu aplicación ya usa Tailwind CSS v4; usa styles.css en cualquier otro caso. Ambos puntos de entrada se comportan igual respecto al tema. Si tu aplicación ya expone tokens al estilo de shadcn, el widget suele tomar automáticamente los colores, el radio, las fuentes y el modo oscuro. No hace falta ninguna correspondencia de tema adicional para empezar.

tssrc/main.tsx
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. Renderiza el widget

tssrc/App.tsx
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>
  );
}

LazySupport deja toda la interfaz del widget fuera del fragmento inicial de la aplicación. Si controlas cuándo aparece el soporte, llama a preloadSupport desde el mismo punto de entrada al pasar el ratón o al enfocar, antes de renderizarlo.

6. Identifica a los visitantes con sesión (opcional)

tssrc/App.tsx
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>
    </>
  );
}

Comprueba la instalación

Recarga la aplicación y comprueba que:

  • el disparador de soporte aparece sin un destello sin estilos
  • al abrirlo se ve la pantalla de inicio o una conversación nueva
  • el panel de red del navegador no muestra respuestas 401 ni 403 de la API de Fluxo

Si no aparece el disparador, comprueba que has importado exactamente un punto de entrada de CSS. Si las peticiones devuelven 401, revisa la clave pública. Si devuelven 403, añade el dominio actual —incluido localhost en desarrollo— a los dominios permitidos de la clave. Consulta Claves de API para la lista completa.

7. Muestra mensajes propios con SupportConfig defaultMessages

tssrc/App.tsx
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 />
    </>
  );
}

Lo siguiente en la documentación de Support

  1. Visión general: el camino más corto desde el primer renderizado hasta un widget listo para producción.
  2. Cambia una sola cosa: sustituye la burbuja o la primera pantalla sin rehacer el widget.
  3. Ajústalo a tu marca: define colores, radio y modo oscuro.

¿Te resultó útil esta página?

Abre una incidencia de documentación ya rellenada para que el equipo pueda actuar.