
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ística | reCAPTCHA | Turnstile |
|---|---|---|
| Privacidad | Recopila datos | Más privado |
| UX | A veces requiere resolver puzzles | Casi siempre invisible |
| Velocidad | Más pesado | Más ligero |
| Precio | Gratis con límites | Gratis 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:
- Ve a Cloudflare Dashboard
- Navega a Turnstile en el menú lateral
- 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.

En 2026, ser invisible para los LLMs es peor que ser invisible para Google en 2010
Checa este otro Post

