cover

Cómo añadir Cloudflare Turnstile a tus formularios con React Router Framework

author photo

Héctorbliss

@blissito

Mira el video:

Si estás buscando una alternativa más ligera y privada a reCAPTCHA de Google, Cloudflare Turnstile es exactamente lo que necesitas. En este tutorial te muestro cómo integrarlo con React Router Framework (antes Remix) de una manera limpia y reutilizable.


🎬 ¿Prefieres ver esto en video? Lo explico paso a paso en nuestro canal de YouTube.


¿Por qué Turnstile en lugar de reCAPTCHA?

Antes de meternos al código, vale la pena entender las diferencias:

CaracterísticareCAPTCHATurnstile
PrivacidadRecopila datosMás privado
UXA veces requiere resolver puzzlesCasi siempre invisible
VelocidadMás pesadoMás ligero
PrecioGratis con límitesGratis generoso

Turnstile valida usuarios sin fricción en la mayoría de los casos, lo que mejora significativamente la experiencia de usuario.

1. Configuración en Cloudflare

Primero necesitas obtener tus llaves desde el dashboard de Cloudflare:

  1. Ve a Cloudflare Dashboard
  2. Navega a Turnstile en el menú lateral
  3. Crea un nuevo sitio y obtén tu Site Key y Secret Key

Guarda estas llaves en tus variables de entorno:

2. Validación en el servidor

Creamos una función utilitaria para validar el token de Turnstile en el servidor:

Esta función:

  • Extrae el token del formData
  • Hace una petición POST al API de verificación de Cloudflare
  • Retorna el resultado de la validación

3. Hook personalizado useScript

Para cargar scripts externos de manera limpia, usamos un hook reutilizable:

Este hook es útil no solo para Turnstile, sino para cualquier script externo que necesites cargar.

4. Componente Turnstile reutilizable

Ahora creamos el componente que renderiza el widget:

El componente:

  • Carga el script de Turnstile automáticamente
  • Renderiza el widget cuando está listo
  • Limpia recursos al desmontarse
  • Soporta temas claro, oscuro o automático

5. Uso con fetcher.Form

Ahora veamos cómo usarlo con React Router:

El widget automáticamente añade un campo oculto cf-turnstile-response al formulario con el token.

6. Render explícito para obtener token

Si necesitas el token antes de enviar el formulario (por ejemplo, para validación cliente), puedes usar el callback:

Modo de desarrollo

Para pruebas locales, Cloudflare proporciona llaves de prueba:

También hay llaves que siempre fallan, útiles para probar el manejo de errores:

Recursos adicionales


Con esto tienes una implementación completa y reutilizable de Cloudflare Turnstile en React Router. Es más liviano, más privado, y generalmente ofrece mejor experiencia de usuario que reCAPTCHA.

Abrazo. bliss.

meta cover

En 2026, ser invisible para los LLMs es peor que ser invisible para Google en 2010

Checa este otro Post

meta cover

WebMCP: el nuevo idioma entre la web y la inteligencia artificial

Checa este otro Post

¡Nuevo curso!

Animaciones web con React + Motion 🧙🏻