Publicado el 23 de enero de 2026
Chrome lanzará una nueva prueba de origen a partir de Chrome 144 para la prerender until script adición a la API de Speculation Rules. Esta prueba de origen permite que los sitios prueben la nueva adición con usuarios reales. El objetivo es probar la función en el campo y proporcionar comentarios al equipo de Chrome para ayudar a darle forma y decidir si es algo que deberíamos agregar a la plataforma web.
¿Qué problema se busca abordar?
La API de Speculation Rules permite que las cargas de páginas se inicien antes de que los usuarios naveguen a las páginas. Esto puede mejorar las cargas de páginas futuras, ya que se completa parte o todo el trabajo con anticipación. Hasta ahora, permitía dos tipos de especulaciones: la recuperación previa y la renderización previa.
La recuperación previa solo recupera el documento HTML. Esto obtiene el primer recurso fundamental con anticipación, lo que proporciona un aumento del rendimiento cuando se navega a una URL. No carga ningún subrecurso (por ejemplo, CSS, JavaScript o imágenes) ni ejecuta JavaScript, por lo que es posible que el navegador aún tenga que realizar un trabajo considerable cuando se carguen las páginas.
La renderización previa hace mucho más. Recupera los subrecursos, comienza a renderizar la página y ejecuta JavaScript, casi como si la página se abriera en una pestaña oculta en segundo plano. Cuando el usuario hace clic en el vínculo, puede obtener una navegación instantánea si el navegador completó todo el trabajo necesario para renderizar la página.
Usar la opción de renderización previa es potencialmente mucho mejor para el rendimiento, pero conlleva un costo de implementación adicional, así como costos de recursos adicionales. Si no se considera con cuidado, esto también puede causar efectos secundarios inesperados cuando se renderiza previamente una página por completo antes de que un usuario navegue a ella. Por ejemplo, es posible que las estadísticas se activen antes de que un usuario navegue (lo que sesga las estadísticas) si el proveedor de estadísticas no tiene en cuenta las especulaciones.
Los sitios que usan la renderización previa también deben tener cuidado de no mostrarle al usuario una página obsoleta. Por ejemplo, si especulas una página en un sitio de comercio electrónico, agregas algo a tu carrito y, luego, cargas la página especulada anteriormente, es posible que veas la cantidad anterior del carrito si el sitio no tiene cuidado adicional para garantizar que se actualice.
Estas complicaciones también existen para la recuperación previa si parte de esta administración de estado ocurre del lado del servidor, pero suele ser un problema mayor para la renderización previa. Puede ser más complicado usar la renderización previa en sitios más complejos.
Sin embargo, los desarrolladores nos informan que ya están viendo las mejoras de rendimiento de la recuperación previa de la página y quieren ir más allá con las reglas de especulación para obtener aún más beneficios. Aquí es donde prerender until script entra en juego.
¿Qué es prerender until script?
prerender until script es un nuevo punto medio entre la carga previa y la renderización previa. Recupera previamente el documento HTML (como lo hace la recuperación previa) y, luego, comienza a renderizar la página, incluida la recuperación de todos los subrecursos (como lo hace la renderización previa). Sin embargo, es fundamental que el navegador evite ejecutar elementos <script> (para secuencias de comandos intercaladas y secuencias de comandos src). Cuando encuentra una etiqueta <script> de bloqueo, detiene el analizador y espera hasta que el usuario navegue a la página antes de continuar. Mientras tanto, el analizador de carga previa puede continuar y recuperar los subrecursos que necesita la página para que estén listos para usarse cuando la página pueda seguir cargándose.
Al retener cualquier elemento de bloqueo <script>, se evita gran parte de la complejidad de la implementación. Al mismo tiempo, al iniciar el proceso de renderización y recuperar los subrecursos, se obtiene una gran ventaja sobre la recuperación previa, potencialmente casi tanto como para una renderización previa completa.
En el mejor de los casos (cuando no hay secuencias de comandos en la página), esta opción renderizará previamente toda la página. O bien, cuando una página solo tiene elementos de secuencia de comandos en el pie de página o solo secuencias de comandos con async o defer atributos, la página se renderizará previamente por completo sin ese JavaScript. Incluso en el peor de los casos (cuando hay una secuencia de comandos de bloqueo en el <head>), el inicio de la renderización de la página y, en particular, la recuperación previa de los subrecursos, deberían generar una carga de página mucho mejor.
¿Cómo se usa prerender until script?
Primero, habilita la función y, luego, prerender until script se usa de la misma manera que las otras opciones de la API de Speculation Rules con una nueva clave prerender_until_script (ten en cuenta los guiones bajos para que sea un nombre de clave JSON válido).
Se puede usar con reglas de lista de URLs estáticas:
<script type="speculationrules">
{
"prerender_until_script": [{
"urls": ["next.html", "next2.html"]
}]
}
</script>
También se puede usar con reglas de documentos en las que las URLs para especular están disponibles como vínculos en la página:
<script type="speculationrules">
{
"prerender_until_script": [{
"where": { "href_matches": "/*" }
}]
}
</script>
prerender until script se puede usar con las opciones habituales de la API de Speculation Rules, incluidos los distintos valores de disposición.
Como JavaScript no se ejecutará, no se podrá leer document.prerendering ni el evento prerenderingchange. Sin embargo, el tiempo activationStart no será cero.
En el siguiente ejemplo, se muestra cómo implementar el ejemplo anterior con una reversión a la recuperación previa para los navegadores que no admiten prerender_until_script:
<script type="speculationrules">
{
"prerender_until_script": [{
"where": { "href_matches": "/*" }
}],
"prefetch": [{
"where": { "href_matches": "/*" }
}]
}
</script>
Chrome manejará esta duplicación sin problemas y ejecutará la regla más adecuada para cada configuración de disposición.
Como alternativa, puedes usarlos con diferentes niveles de disposición para recuperar previamente con anticipación y, luego, actualizar a prerender until script con más indicadores como se sugirió anteriormente con la recuperación previa o la renderización previa:
<script type="speculationrules">
{
"prefetch": [{
"where": { "href_matches": "/*" },
"eagerness": "eager"
}],
"prerender_until_script": [{
"where": { "href_matches": "/*" },
"eagerness": "moderate"
}]
}
</script>
Ten en cuenta que no puedes actualizar un prerender until script a una renderización previa completa de esta manera, pero avísanos si ese es un patrón que te interesa que Chrome admita marcando este error.
¿Se detiene todo JavaScript?
No, solo los elementos <script> hacen que se detenga el analizador. Esto significa que los controladores de secuencias de comandos intercaladas (por ejemplo, onload) o las URLs javascript: no causarán una pausa y podrían ejecutarse.
Por ejemplo, esto puede registrar Hero image is now loaded en la consola antes de que se navegue a la página:
<img src="hero.jpg"
onload="console.log('Hero image is now loaded!')"
alt="Example Photo">
Mientras que, si el objeto de escucha de eventos se agrega con un <script>, Hero image is now loaded no se registrará en la consola hasta después de que se active la página:
<img src="hero.jpg" id="hero-image" alt="Example Photo">
<script>
const heroImage = document.querySelector('#hero-image');
if (heroImage.complete) {
console.log('Hero image is now loaded');
} else {
heroImage.addEventListener('load',
(event) => {
console.log('Hero image is now loaded');
}
);
}
</script>
Esto puede parecer contradictorio, pero, en muchos casos (como en el ejemplo anterior), es probable que sea mejor realizar la acción de inmediato, y retrasarla puede generar complicaciones más inesperadas.
Además, la mayoría de los eventos intercalados requieren una acción del usuario (por ejemplo, onclick, onhover), por lo que no se ejecutarán hasta que el usuario pueda interactuar con la página.
Por último, las secuencias de comandos de bloqueo anteriores detendrán el analizador y, por lo tanto, evitarán que se descubran los controladores de eventos intercalados. Por lo tanto, no se cargará el mensaje en la consola hasta la activación, a pesar de ser un controlador de eventos intercalado:
<script>...</script>
<img src="hero.jpg"
onload="console.log('Hero image is now loaded!')"
alt="Example Photo">
Esto es especialmente relevante para los controladores de secuencias de comandos intercaladas que usan código definido anteriormente, que seguirá funcionando como se espera:
<script>
imageLoadFunction() = {
...
}
</script>
<img src="hero.jpg" onload="imageLoadFunction" alt="Example Photo">
¿Qué sucede con las secuencias de comandos con atributos async y defer?
Las secuencias de comandos con atributos async y defer se retrasan hasta la activación, pero no impiden que el analizador siga procesando el resto de la página. Las secuencias de comandos se descargan, pero no se ejecutan hasta que se navega a la página.
¿Cómo se habilita prerender until script?
prerender until script es una nueva opción en la que estamos trabajando y que está sujeta a cambios, por lo que no está disponible para su uso sin habilitarla primero para habilitarla.
Se puede habilitar de forma local para el desarrollador con la función experimental de Chrome chrome://flags/#prerender-until-script o con la función experimental de línea de comandos --enable-features=PrerenderUntilScript.
prerender until script también está disponible como prueba de origen desde Chrome 144. Las pruebas de origen permiten que los propietarios de sitios habiliten una función en sus sitios para que los usuarios reales la usen sin tener que habilitarla de forma manual. Esto permite medir el impacto de la función en usuarios reales para garantizar que actúe como se espera.
Haz una prueba y comparte tus comentarios
Estamos muy entusiasmados con esta adición propuesta a la API de Speculation Rules y alentamos a los propietarios de sitios a que la prueben.
Comparte tus comentarios sobre la propuesta en el repositorio de GitHub. Para enviar comentarios sobre la implementación de Chrome, informa un error de Chromium.