A base de investigación, algunos profesionales de la optimización de páginas web para motores de búsqueda (lo que usualmente se conoce como SEO) han llegado a la conclusión durante los últimos años que el buscador por excelencia, Google, puede indexar JavaScript. Y esto, por desgracia, no siempre es así.

Hoy día, la mayoría de los sitios de comercio electrónico recurren a alguna variedad moderna de JavaScript, como AJAX, carga progresiva, aplicaciones de una sola página, Angular… Para los propósitos de este texto, nos referiremos a todo ello como JavaScript complejo, para abreviar.

El JavaScript complejo es fundamental para la innovación en nuestro sitio web, por lo que dejarlo de lado es algo que está fuera de toda discusión. Sin embargo, es importante comprender los riesgos que su uso acarrea en cuanto al SEO. Porque estos pueden tener consecuencias importantes.

Google renderiza, sí, pero a su ritmo

En 2015, desde Google declararon que «En general, somos capaces de renderizar y entender sus páginas web como los navegadores modernos». Esto hizo que mucha gente se sintiera confiada en que Google no necesitaba en general ninguna habilitación especial para indexar contenido complejo basado en JavaScript. Pero la tecnología evoluciona constantemente y lo que existía en 2015 es muy diferente lo que hay en la actualidad.

De cara al SEO, el hecho de que una página web se renderice en el lado del servidor o en el lado del cliente es algo importante. El renderizado del lado del servidor ha sido la forma tradicional de entregar contenido. Pero, a medida que las páginas web se han ido volviendo más, cada vez con más frecuencia es el navegador el que se encarga de realizar el trabajo pues, entre otras cosas, ahorrar recursos al servidor significa páginas más rápidas.

Sin embargo, lo que se gana en velocidad se convierte en trabas para los motores de búsqueda. Dado que Googlebot y otros indexadores no tienen recursos para renderizar y, digámoslo así, digerir cada página a medida que lo rastrean, lo que suelen hacer es guardar el JavaScript más complejo para renderizarlo más tarde, según lo permitan los recursos.

Según explicó John Mueller, analista de tendencias para webmasters de Google, en el I/O de este año, este fenómeno a la hora de indexar crea un retraso: «Si tienes un sitio web dinámico de gran tamaño, entonces el nuevo contenido podría tardar un poco en ser indexado».

Es fácil traducir esto al mundo «real» para comprender su impacto. Imaginemos que estás lanzando una nueva línea de productos. Lo que queremos es que estos sean indexados lo más rápido posible para darle un empujón a los ingresos. Pero esto no va a suceder si nuestro sitio se renderiza en el lado del cliente o emplea un JavaScript complejo: tardará «un poco» en indexarse.

Es más, ni siquiera tenemos que hablar de una nueva línea de productos. Basta con pensar en una migración a Angular o algún otro framework. Al relanzar el sitio, el código fuente cambiará en la medida en que no contenga contenido textual más allá de la etiqueta de título y la meta descripción. Por lo tanto, a Google podría llevarle un tiempo indexarlo pues, previamente, lo debe renderizar.

La conclusión: que habrá un retraso de días o semanas (dependiendo de la autoridad que tenga el sitio) durante los cuales los motores de búsqueda en general y Google en particular no verán el contenido de nuestro sitio o sus enlaces. En ese momento, y a menos que estemos usando algún tipo de tecnología de prerenderización, el tráfico de búsqueda orgánica irá cayendo.

Las cosas se complican todavía más cuando hablamos de enlaces, pues JavaScript soporta múltiples formas de crearlos, incluidos los espacios y los clics. Esto es importante porque los enlaces internos son críticos para que los motores de búsqueda descubran páginas y asignen autoridad. Pero si esas páginas no contienen una etiqueta anchor y un atributo href, Google no identificará ningún enlace y, por lo tanto, no lo rastreara.

Según explicó desde Google Tom Greenaway, desarrollador asociado y defensor de la indexación de aplicaciones web progresivas, también en el último I/O, para el buscador solo sirve el atributo href «y eso es todo». Usar un atributo onlick en un enlace lo convierte en irrastreable.

Google no hará nada, así que debemos hacerlo nosotros

Googlebot lleva varios años de retraso con el JavaScript que soporta. El bot está basado en Chrome 41, que fue lanzado en marzo de 2015 cuando estaba en uso un estándar más antiguo para JavaScript (ECMAScript 5, o ES5). La versión estándar actual de JavaScript, ES6, se lanzó en junio de 2015, tres meses después de Chrome 41, lo que significa que Googlebot no es compatible con las funciones y capacidades más modernas.

Esto es algo que desde Google parece que por ahora no se van a poner a solucionar. El mismo Mueller recomendó que los sitios que recurran a alguna funcionalidad moderna de JavaScript, utilicen medios alternativos como la degradación gradual para ayudar a los motores de búsqueda a indexar y clasificar el contenido.

En conclusión: hay que asumir que cualquier sitio de comercio electrónico moderno y complejo tendrá problemas para indexar en cualquier parte y, en especial, en Google. Y dado que la búsqueda orgánica es la principal fuente de adquisición de clientes para la mayoría de los negocios online, los retrasos provocados por la indexación pueden afectar negativamente a las actividades e ingresos.

¿La solución? Pues desde luego no es maldecir a Google, que de eso seguro que ya tienen bastante ganas cualquiera que esté metido en este terreno. Al final del día, todo pasa por arremangarse y seguir sus recomendaciones. Y si todavía se duda de si es necesario o no hacer esas implementaciones, directamente ver la presentación de Mueller y Greenaway para convencer a los equipos de SEO y desarrollo que se muestren reacios: