Guía de SEO en React: por qué el renderizado en el cliente frena la indexación, cuándo usar SSR o prerrenderizado, cómo gestionar metadatos con React 19 y ser legible para las IA.

En esta página
En resumen
React puede posicionar en Google, pero una aplicación de una sola página por defecto envía un archivo HTML casi vacío y depende de JavaScript para mostrar el contenido, lo que retrasa la indexación y oculta la página a la mayoría de los rastreadores de IA. La solución fiable es entregar HTML desde el servidor: prerrenderizar las páginas estáticas en el build o usar un framework con renderizado en el servidor (Next.js, React Router). Después, da a cada URL un título, una descripción y una canónica únicos, usa enlaces reales y códigos de estado correctos, y comprueba lo que reciben los bots.
¿Quiere ir más lejos? Pregunte a
Quiz rápido
¿Es el SEO para ti y cómo empezar?
Sorank encaja con tus respuestas
Pruébalo 3 días en tu propia web y descubre dónde estás en Google, ChatGPT y las demás IA.
Prueba gratis de 3 días3 días gratis y luego lo dejas cuando quieras. Garantía de resultados o devolución de 90 días.
El SEO en React consiste en hacer que una aplicación React sea rastreable, indexable y comprensible para los buscadores y los asistentes de IA. React en sí es neutral: los problemas vienen de renderizarlo todo en el navegador. Google confirma en sus conceptos básicos de SEO para JavaScript que procesa las aplicaciones JavaScript en tres fases (rastreo, renderizado e indexación) y que el renderizado en el servidor o el prerrenderizado «sigue siendo una gran idea, porque hace que tu sitio sea más rápido para los usuarios y los rastreadores, y no todos los bots pueden ejecutar JavaScript».
Una app React creada como aplicación de una sola página entrega un archivo HTML que apenas contiene un div raíz vacío y una etiqueta script. El navegador descarga el JavaScript, lo ejecuta y construye la página. Un rastreador que solo lee el HTML no ve nada que indexar: ni encabezados, ni texto, ni enlaces.
Googlebot sí ejecuta JavaScript, pero en un paso aparte: la página se rastrea, entra en la cola de renderizado, se renderiza en un Chromium sin interfaz y solo entonces se usan los enlaces y el contenido renderizados. Cada paso adicional es una ocasión de fallo (un error de script, una API bloqueada, un tiempo de espera) y añade retraso antes de que las páginas nuevas aparezcan en los resultados. Nuestra guía de SEO para JavaScript detalla este proceso, y nuestro artículo sobre la indexación en Google explica cómo indexar páginas más rápido.
Otros bots son menos pacientes. El análisis de Vercel de diciembre de 2024, The rise of the AI crawler, concluyó que «ninguno de los grandes rastreadores de IA renderiza JavaScript actualmente», citando a GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot y PerplexityBot. Una página React renderizada en el cliente es invisible para ChatGPT, Claude y Perplexity, aunque Google la indexe.
El equipo de React recomienda ahora empezar las apps nuevas con un framework. Al retirar Create React App el 14 de febrero de 2025, escribió en su anuncio que «el renderizado en el servidor puede mejorar el SEO» y que también mejora el rendimiento al reducir el JavaScript que hay que descargar antes de ver el contenido. Las opciones, de la más débil a la más sólida para la búsqueda:
| Enfoque | Qué reciben los bots | Veredicto SEO | Herramientas habituales |
|---|---|---|---|
| Renderizado en el cliente (SPA) | HTML vacío, contenido tras JavaScript | Débil: indexación retrasada, invisible para los rastreadores de IA | Vite + React, proyectos antiguos de Create React App |
| Renderizado dinámico | HTML prerrenderizado solo para bots | Solución provisional, Google no la recomienda | Servicios de prerrenderizado, proxys con navegador sin interfaz |
| Prerrenderizado estático en el build | HTML completo para cada URL conocida | Muy bueno para contenido que cambia poco | Prerrenderizado de React Router, generadores de sitios estáticos, exportación estática de Next.js |
| Renderizado en el servidor | HTML completo en cada solicitud y luego hidratación | El mejor para sitios grandes o que se actualizan a menudo | Next.js, React Router (modo framework, antes Remix) |
Sobre el renderizado dinámico, la documentación de Google es clara: «era una solución provisional y no una solución a largo plazo», y Google recomienda en su lugar el renderizado en el servidor, el renderizado estático o la hidratación. Si vas a elegir un framework, nuestra guía de SEO en Next.js detalla los modos de renderizado, la Metadata API y los sitemaps.
Si migrar no es posible, Google puede indexar igualmente una aplicación de una sola página con algo de cuidado. Nuestra guía de SEO para aplicaciones de una sola página enumera las condiciones; el resto de este artículo vale para ambos casos.
Desde React 19 (estable desde el 5 de diciembre de 2024), los componentes pueden renderizar directamente etiquetas title, meta y link, y React las sube al head del documento. Las notas de la versión React 19 indican que este soporte nativo funciona «con apps solo de cliente, SSR en streaming y Server Components». Antes de React 19, bibliotecas como react-helmet o react-helmet-async hacían ese trabajo, y siguen siendo útiles para sustituir valores por defecto en cada ruta.
function ProductPage({ product }) {
return (
<>
<title>{`${product.name} | Shop`}</title>
<meta name="description" content={product.summary} />
<link rel="canonical" href={`https://example.com/p/${product.slug}`} />
<h1>{product.name}</h1>
</>
)
}Tres reglas se aplican sea cual sea el método:
Atención
En una app solo de cliente, las etiquetas que renderiza React existen únicamente después de ejecutar JavaScript. Google puede leerlas tras el renderizado; los rastreadores de IA y la mayoría de los bots de vista previa de redes sociales, no. El renderizado en el servidor o el prerrenderizado las coloca en la respuesta HTML para todos.
Google afirma que «solo puede descubrir tus enlaces si son elementos HTML a con un atributo href» y desaconseja usar fragmentos de URL para cargar contenidos distintos. La mayoría de los fallos de SEO en React vienen de detalles de enrutado:
| Error | Efecto | Solución |
|---|---|---|
| Navegación con onClick en un div o un botón | Google no encuentra ningún enlace que seguir | Usar el componente Link del enrutador, que genera un a con href |
| Rutas con almohadilla (/#/productos) | Todas las páginas comparten una URL para Google | Usar rutas basadas en el historial (/productos) con BrowserRouter o un framework |
| Vista «no encontrado» servida con estado 200 | «Soft 404» en Search Console | Devolver un 404 real desde el servidor o añadir noindex con JavaScript en una SPA pura |
| Redirecciones solo en el cliente | Redirecciones lentas o ignoradas | Usar redirecciones de servidor 301 o 308 para las páginas movidas |
| Contenido cargado al hacer clic o desplazarse | El texto nunca se renderiza para el rastreador | Renderizar el contenido principal al cargar; paginar listas con URL reales |
| JavaScript o API bloqueados en robots.txt | Google renderiza una página vacía | Permitir los scripts y endpoints de API que necesita la página |
Para ver lo que renderiza Google, usa la herramienta de inspección de URLs de Search Console y consulta el HTML de la página probada, o pasa tus plantillas clave por un verificador de indexabilidad.
React no trae sitemap integrado. Genera sitemap.xml en el build a partir de tus rutas y datos (o con la función de sitemap de tu framework), incluye solo URL canónicas que respondan 200 y referencia el archivo en robots.txt. Para un sitio estático pequeño basta un generador de sitemap XML.
Los datos estructurados siguen la misma regla que los metadatos: renderiza el script JSON-LD con la página, a partir de los mismos datos, idealmente en el servidor. Google puede leer un JSON-LD inyectado por JavaScript tras el renderizado, pero el marcado que falta en el HTML inicial falta también para los rastreadores que no renderizan. Usa Article para los artículos, Product en e-commerce, Organization en todo el sitio y BreadcrumbList para las páginas profundas.
Consejo
Ejecuta curl sobre la URL de una página y busca en el resultado su H1 y una frase del cuerpo. Si faltan, puede que Google indexe la página tras renderizarla, pero los rastreadores de IA no verán nada.
Los paquetes de JavaScript grandes perjudican las Core Web Vitals: el navegador debe descargar, analizar e hidratar el código antes de que la página responda, lo que pesa en el Largest Contentful Paint y el Interaction to Next Paint, sobre todo en móvil. El anuncio del equipo de React sobre Create React App señala que el renderizado en el servidor envía menos JavaScript y un documento HTML completo, lo que acelera el First Contentful Paint y puede reducir el INP. Palancas útiles: dividir el código por ruta con React.lazy, servir imágenes con dimensiones explícitas, cargar en diferido los componentes bajo la parte visible y auditar los scripts de terceros.
El GEO (optimización para motores generativos) empieza por el acceso. Como los rastreadores de IA recogen el HTML sin procesar, una página React debe entregar su texto, sus encabezados y su JSON-LD sin JavaScript para ser leída, resumida y citada. Una auditoría de rastreabilidad para IA muestra lo que estos bots reciben de tus páginas. La segunda condición es un contenido que merezca ser citado: páginas que respondan a una pregunta por sección, con fuentes, cifras y definiciones claras.
Esa parte de contenido es la que automatiza Sorank, nuestro producto. Sorank es un software de SEO y GEO en autopilot: su generador de artículos de blog redacta y publica 20, 60 o 120 artículos al mes con fuentes, enlaces internos e imágenes, y se conecta por webhook a sitios a medida, como un sitio React o Next.js. Su SEO Chat responde en una conversación a tus preguntas sobre el rendimiento de tu sitio en la búsqueda.

En pocas palabras: sirve HTML desde el servidor, da a cada URL su propio título, descripción y canónica, y usa enlaces reales. Así React posiciona como cualquier otro sitio y los asistentes de IA pueden leerlo. Para alimentar ese sitio con artículos pensados para Google y las IA, consulta los planes de Sorank, desde 49 € al mes con 3 días de prueba gratis.
No. React es una biblioteca de interfaces y su SEO depende de cómo se rendericen las páginas. Una aplicación de una sola página renderizada en el cliente envía HTML vacío y depende del paso de renderizado de Google, lo que retrasa la indexación y oculta el contenido a los rastreadores de IA. El mismo código React servido con renderizado en el servidor o prerrenderizado estático posiciona como un sitio clásico.
Sí. Googlebot ejecuta JavaScript con una versión reciente de Chromium, así que puede indexar el contenido que una app React construye en el navegador. El renderizado ocurre después del rastreo y puede retrasarse o fallar si los scripts dan error o las API están bloqueadas. La herramienta de inspección de URLs de Search Console muestra el HTML renderizado tal como lo ve Google.
No para los casos sencillos. React 19 renderiza etiquetas title, meta y link desde cualquier componente y las sube al head del documento. Bibliotecas como react-helmet-async siguen siendo útiles para sustituir valores por defecto del sitio en cada ruta o para versiones antiguas de React.
PROBARON SORANK ANTES QUE USTED
