Saltar al contenido

Caso: una app en React que Google recibía vacía

Contexto

regresoempresarial.com es el sitio de consultoría en insolvencia empresarial de Carlos Alberto Cardona O. Está construido en Base44, una plataforma que genera aplicaciones en React.

El problema medido

Lo que veía el navegador frente a lo que recibía Google

En el navegador, el sitio se veía completo. Pedido como Googlebot, el servidor entregaba una carcasa: el título y un contenedor vacío que solo se llena con JavaScript.

Síntomas técnicos

Rutas inexistentes que respondían como si existieran, redirecciones temporales en lugar de permanentes, y títulos y descripciones definidos en varios lugares que no coincidían entre sí.

Qué hice

Contenido servido desde el primer byte

Generé en el build una versión HTML de cada ruta con su contenido real, sus metadatos y sus datos estructurados.

Un Worker de Cloudflare delante del sitio

Redirecciones 301 reales, errores 404 reales y un sitemap que solo lista las rutas indexables.

Metadatos que no se contradicen

Una comprobación automática avisa si alguna copia de los títulos, las descripciones o las rutas se desvía de las demás.

Enlazado interno por diseño

Medido en septiembre de 2026 sobre las 24 rutas publicadas: 25 enlaces desde el texto hacia la página pilar y 69 enlaces a fuentes oficiales, como la Superintendencia de Sociedades, el Senado y la DIAN.

Cómo lo verifico: 19 comprobaciones antes de publicar

Antes de cada publicación corro 19 comprobaciones automáticas. Estas son algunas:

  • que las preguntas visibles coincidan con las declaradas
  • que el índice de cada artículo apunte a títulos que existen
  • que no se filtre código al HTML servido
  • que los enlaces internos lleven a rutas reales
  • que los metadatos coincidan en todas sus fuentes
  • que los datos estructurados no tengan referencias rotas

Después de publicar, reviso cada ruta en producción con el agente de Googlebot.

$ curl · verificación en producción
$ curl -sI https://regresoempresarial.com/sitemap.xml | grep x-edge-routerx-edge-router: authoritative-sitemap-xml$ curl -s -o /dev/null -w "%{http_code}" https://regresoempresarial.com/no-existe404

Lo que aprendí, incluidos mis errores

Hubo un momento en que el Worker se reemplazaba solo después de cada cambio. Culpé dos veces a la causa equivocada, y las dos veces los datos encajaban.

La causa real era otra integración escuchando el mismo evento. Desde entonces, antes de atribuir un problema, enumero todo lo que reacciona a ese evento.

Qué no puedo afirmar

Este caso no publica cifras de tráfico ni posiciones. Tampoco hay datos de usuarios reales de Chrome: el sitio aún no tiene tráfico suficiente para que Google los reporte.

¿Tu sitio está hecho con React, Base44 o Lovable?

Pide tu diagnóstico gratis

Qué incluye la auditoríaSEO para IASobre míCayu