Chrome 148 (beta)

Fecha de publicación: 8 de abril de 2026

A menos que se indique lo contrario, los siguientes cambios se aplican a la versión más reciente del canal beta de Chrome para Android, ChromeOS, Linux, macOS y Windows. Obtén más información sobre estas funciones con los vínculos proporcionados o visitando ChromeStatus.com. Chrome está en versión beta a partir de esta versión. Puedes descargar la versión beta más reciente desde Google.com para computadoras o desde Google Play Store en Android.

CSS y IU

Consultas de contenedores solo por nombre en CSS

Ahora puedes consultar un contenedor de CSS solo en función de su container-name sin configurar un container-type en el elemento.

#container {
  container-name: --foo;
}
@container --foo {
  input { background-color: green; }
}
<div id="container">
  <div><input></div>
</div>

Recorta el desbordamiento de texto en la interacción del usuario

Cuando un usuario interactúa (por ejemplo, edita o usa la navegación con el cursor) con texto que tiene configurado text-overflow: ellipsis, el texto cambia temporalmente de puntos suspensivos a recorte. Esto permite que el usuario vea el contenido oculto del desbordamiento y que interactúe con él. Esta función se aplica a todos los elementos editables y no editables. En el caso de los controles de formulario, como <textarea> y <input>, este comportamiento ya es compatible.

Configura correctamente dropEffect para los eventos dragEnter, dragLeave y dragOver

Las especificaciones de arrastrar y soltar requieren que el atributo dropEffect del objeto dataTransfer tenga ciertos valores predeterminados en dragEnter, dragOver y dragLeave. dragEnter y dragOver deben tener un dropEffect basado en el effectAllowed actual. dragLeave siempre debe tener un dropEffect none. Actualmente, Chrome no cumple con estas reglas. A partir de Chrome 148, Chrome respetará la especificación y asignará los valores correctos a este atributo.

Carga diferida de elementos de audio y video

Esta función agrega el atributo loading a los elementos <video> y <audio>. Esto permite que los desarrolladores difieran la carga de recursos multimedia hasta que el elemento esté cerca de la ventana gráfica con loading="lazy". Esto coincide con el comportamiento de carga diferida existente para los elementos <img> y <iframe>, lo que mejora el rendimiento de carga de la página y reduce el uso de datos.

Función at-rule() de CSS para la detección de funciones

Esta función agrega una función at-rule() a @supports de CSS, que permite a los autores detectar la compatibilidad con las reglas @ de CSS.

Agrega la palabra clave revert-rule

La palabra clave revert-rule revierte la cascada a la regla anterior, de manera similar a como revert-layer revierte la cascada a la capa anterior. Por ejemplo:

div { color: green; }
div { color: revert-rule; /* Effectively green */ }

Esto es especialmente útil con las condicionales, ya que te permite eliminar la regla actual si no se cumple una condición:

div {
  display: if(style(--layout: fancy): grid; else: revert-rule);
}

Compatibilidad con text-decoration-skip-ink: all

Esta función agrega compatibilidad con el valor all para la propiedad text-decoration-skip-ink de CSS. La propiedad text-decoration-skip-ink ya admite auto y none. El valor all extiende esto aplicando incondicionalmente el salto de tinta a todos los glifos, incluidos los caracteres CJK. Por el contrario, auto deja los caracteres CJK sin saltar porque el salto de tinta tiende a producir resultados visuales no deseados para las secuencias de comandos ideográficas en las posiciones de subrayado típicas. Con text-decoration-skip-ink: all, los autores que ajustaron text-underline-position o text-underline-offset para evitar conflictos con los glifos CJK pueden habilitar explícitamente el salto de tinta para esos caracteres.

APIs web

Localiza miembros del manifiesto

Esta función admite la localización de miembros del manifiesto, lo que permite que las apps adapten sus nombres, descripciones, íconos y accesos directos al idioma y la región del usuario. Los desarrolladores proporcionan valores localizados en el manifiesto de la app web. El navegador selecciona automáticamente los recursos adecuados según la configuración de idioma del usuario, lo que introduce la compatibilidad con idiomas en diferentes mercados.

Compatibilidad con el formato de fuente abierta avar2 para la forma del texto y la renderización de glifos

La versión 2 de la tabla avar (variaciones de ejes) permite que los diseñadores de fuentes creen fuentes variables con un mejor control sobre la interpolación. Si bien la especificación original de fuentes variables controla los ejes de forma independiente, avar2 permite que los ejes se influyan entre sí. Esto da como resultado fuentes que son más fáciles de usar para los autores de contenido y permite un almacenamiento compacto.

Avar2 funciona con los mismos conceptos familiares de variaciones de fuentes, pero te permite aplicar valores delta variables a los ejes de diseño. Puedes hacerlo en un rango de varios ejes.

Por ejemplo, puedes crear controles deslizantes meta que controlen varios ejes de variación a la vez. Esto alivia al usuario de ajustar y encontrar una esquina útil del espacio de diseño de la fuente.

Avar2 les brinda a los diseñadores de fuentes un mejor control sobre el espacio de variación utilizable de su fuente y les permite coordinar el ajuste de los ejes de diseño en varios ejes. Si se definen las relaciones entre los ejes de forma matemática dentro de la tabla avar versión 2, las fuentes pueden lograr diseños complejos con menos maestros. Esto genera tamaños de archivo más pequeños porque la interpolación se almacena de manera más eficiente.

Modo de IU inmediato de Web Authentication

Este nuevo modo para navigator.credentials.get() hace que la IU de acceso del navegador se muestre al usuario si el navegador conoce de inmediato una llave de acceso o una contraseña para el sitio. De lo contrario, rechaza la promesa con NotAllowedError si no hay credenciales disponibles. Esto permite que el sitio evite mostrar una página de acceso si el navegador puede ofrecer una opción de credenciales de acceso que probablemente tengan éxito. Aún permite un flujo de página de acceso para los casos en los que no existen esas credenciales.

Compatibilidad con la API de Web Serial en Android

La API de Web Serial proporciona una interfaz para conectarse a dispositivos en serie. Estos dispositivos se pueden conectar a través de un puerto serie en el sistema del usuario o a través de dispositivos USB y Bluetooth extraíbles que emulan un puerto serie. Ahora, la API es compatible con Android.

Los usuarios, en especial en los sectores educativo, de aficionados y de la industria, conectan dispositivos periféricos a sus computadoras que requieren software personalizado para controlar. Por ejemplo, la robótica se usa a menudo para enseñar programación de computadoras y electrónica en las escuelas. Esto requiere software que pueda subir código a un robot o controlarlo de forma remota. En un entorno industrial o de aficionados, un equipo, como una fresadora, un cortador láser o una impresora 3D, se controla con un programa que se ejecuta en una computadora conectada. Estos dispositivos suelen controlarse con pequeños microcontroladores a través de una conexión en serie.

Función linear_indexing de WebGPU

Esta funcionalidad agrega dos nuevos valores integrados de sombreador de procesamiento para mejorar la experiencia del usuario. Estos valores se implementan para todos los backends (como polyfills de valores integrados existentes).

Compatibilidad con SharedWorker en Android

Durante mucho tiempo, SharedWorker se inhabilitó en Android debido a inquietudes sobre su ciclo de vida impredecible. Los desarrolladores de Chrome creían que las instancias de SharedWorker podían finalizar de forma inesperada sin notificar a los usuarios ni a los desarrolladores web. Esto se consideró inaceptable.

Sin embargo, un debate reciente en GitHub sugiere que la naturaleza impredecible del ciclo de vida del proceso de SharedWorker's podría no ser un problema tan importante como se pensaba. En función de esto, Chrome vuelve a habilitar SharedWorker en Android y, al mismo tiempo, investiga este comportamiento para garantizar una experiencia estable y confiable.

Duración extendida para trabajadores compartidos

Esta actualización agrega una nueva opción, extendedLifetime: true, al constructor SharedWorker. Esto solicita que el trabajador compartido permanezca activo incluso después de que se descarguen todos los clientes actuales. El caso de uso principal es permitir que las páginas realicen trabajos asíncronos que requieren JavaScript después de que se descargue una página, sin necesidad de depender de un service worker.

API de Prompt

La API de Prompt les brinda a los desarrolladores web acceso directo a un modelo de lenguaje de IA en el dispositivo que proporciona el navegador. El diseño de la API ofrece un control detallado, alineado con las formas de la API de Cloud. Esto te permite mejorar progresivamente los sitios con interacciones de modelos adaptadas a casos de uso individualizados. Esto complementa las APIs de modelos de lenguaje basados en tareas (por ejemplo, la API de Summarizer) y las diversas APIs y frameworks para la inferencia generalizada en el dispositivo con modelos de AA proporcionados por el desarrollador. La implementación inicial admite entradas de texto, imagen y audio, así como restricciones de respuesta que garantizan que el texto generado cumpla con los formatos predefinidos de expresión regular y esquema JSON.

Esto admite una variedad de casos de uso. Por ejemplo, puede generar subtítulos de imágenes, realizar búsquedas visuales, transcribir audio, clasificar eventos de sonido, generar texto siguiendo instrucciones específicas y extraer información o estadísticas de material fuente multimodal.

Esta API ya se envió en las extensiones de Chrome. Esta intención realiza un seguimiento del envío en la Web. Una política empresarial, GenAILocalFoundationalModelSettings, está disponible para inhabilitar la descarga del modelo subyacente, lo que hace que esta API no esté disponible. Los administradores empresariales también pueden establecer la política BuiltInAIAPIsEnabled para bloquear el uso de la API de IA integrada y, al mismo tiempo, permitir otras funciones de GenAI en el dispositivo.

Registro de compatibilidad con idiomas:

  • Chrome 139 y versiones anteriores solo admitían inglés ('en').
  • Chrome 140 agregó compatibilidad con español y japonés ('es' y 'ja')

Obtén capacidades de confirmación de pago seguro

Esta función agrega un nuevo método estático a la API de Payment Request que permite a los desarrolladores web obtener las capacidades de la implementación del navegador de la confirmación de pago seguro. Esto ayuda a los desarrolladores web a saber qué capacidades están disponibles para la confirmación de pago seguro. Luego, pueden decidir si usar la confirmación de pago seguro con esas capacidades.

Reglas de ContextJ de IDNA

IDNA es el mecanismo para caracteres que no son ASCII en nombres de dominio. Codifica una URL como http://네이버.한국/ como http://xn--950bt9s8xi.xn--3e0b707e/ (un redireccionamiento a naver.com).

La especificación de URL establece la marca CheckJoiners, que habilita las reglas ContextJ en IDNA2008. Esto no permite ZWNJ (U+200C ZERO WIDTH NON-JOINER) ni ZWJ (U+200D ZERO WIDTH JOINER) en la mayoría de los lugares de las URLs. La implementación pasa la opción UIDNA_CHECK_CONTEXTJ a ICU, donde se implementa esta regla.

Reutiliza imágenes no almacenadas en la reasignación de la misma fuente

Esta función permite que la reutilización de imágenes disponibles en el mismo documento omita la recarga de Cache-Control: no-store cuando se reasigna el mismo valor src a un elemento <img>. Anteriormente, Blink volvía a recuperar la imagen, aunque ya estaba decodificada y disponible en el documento. Esto se alinea con el comportamiento existente de Gecko y WebKit.

Agrega el campo contentType a Resource Timing

Esta función agrega el campo contentType a PerformanceResourceTiming para contener una cadena que corresponde al tipo de contenido del recurso recuperado, tal como lo muestra el servidor.

Suprime los eventos del puntero al iniciar el arrastre

Según la especificación de HTML, cuando comienza un arrastre, el agente de usuario debe enviar los eventos adecuados a la fuente de arrastre para indicar que finalizó el flujo de eventos del puntero y que no debe esperar más eventos de este puntero. Este código se implementó parcialmente para eventos del mouse y por completo para arrastres táctiles en Android. Con esta función, Chrome pretende satisfacer por completo este requisito de especificación en todas las demás plataformas. En la práctica, esto significa que, después de que se inicie un arrastre, la fuente de arrastre ahora recibirá los eventos pointercancel, pointerout y pointerleave para indicar que finalizó el flujo de eventos actual.

WebRTC Datachannel: Siempre negocia canales de datos

Esta función implementa una extensión de WebRTC, alwaysNegotiateDataChannels, que define una forma para que una aplicación negocie canales de datos en una oferta de SDP antes de crear un canal de datos. Esto también negocia la sección de datos m= antes de cualquier sección m de audio o video y la usa como la "sección m= etiquetada por el oferente" para [BUNDLE].

Esto significa que si creas un RTCPeerConnection con alwaysNegotiateDataChannels: true y, luego, llamas a createOffer(), se crea una oferta con una línea m de aplicación en el SDP. Por ejemplo:

  const pc = new RTCPeerConnection({
    alwaysNegotiateDataChannels: true});
  const offer = await pc.createOffer();

Si también agregas un transceptor de audio y un canal de datos, la oferta negocia una línea m de aplicación seguida de una línea m de audio en el SDP:

  const pc = new RTCPeerConnection({
    alwaysNegotiateDataChannels: true});
  pc.addTransceiver('audio');
  pc.createDataChannel('somechannel');
  const offer = await pc.createOffer();

Nuevas pruebas de origen

En Chrome 148, puedes habilitar las siguientes pruebas de origen nuevas .

Acceso federado de agente

Un conjunto de extensiones de FedCM para ayudar a los navegadores de agentes a acceder de forma segura a los usuarios a los sitios web con sus cuentas federadas.

Listas de entidades permitidas de conexión

Las listas de entidades permitidas de conexión son una función diseñada para proporcionar un control explícito sobre los extremos externos mediante la restricción de las conexiones iniciadas a través de la API de Fetch o de otras APIs de la plataforma web desde un documento o un trabajador. La implementación propuesta distribuye una lista de extremos autorizados desde el servidor a través de un encabezado de respuesta HTTP. Antes de que el agente de usuario establezca cualquier conexión en nombre de una página, el agente evalúa el destino en función de esta lista de entidades permitidas. Se permiten las conexiones a extremos verificados, mientras que se bloquean las que no coinciden con las entradas de la lista.

Sincronización de contenedores

La API de Container Timing te permite supervisar cuándo se muestran en pantalla las secciones anotadas del DOM y cuándo finalizó su pintura inicial. Puedes marcar subsecciones del DOM con el atributo containertiming (similar a elementtiming para la API de Element Timing) y recibir entradas de rendimiento cuando se pinta esa sección por primera vez. Esta API te permite medir la sincronización de varios componentes en tus páginas.

Secuencias de comandos de módulos CSS declarativas

Las secuencias de comandos de módulos CSS declarativas son una extensión de las secuencias de comandos de módulos CSS existentes basadas en secuencias de comandos. Permiten que los desarrolladores compartan hojas de estilo declarativas con raíces secundarias, incluidas las raíces secundarias declarativas. Los desarrolladores pueden definir módulos de estilo intercalados con <style type="module" specifier="foo"> y aplicar un módulo declarativo a un DOM secundario declarativo haciendo referencia a specifier o a una URL, como <template shadowrootmode="open" shadowrootadoptedstylesheets="foo">.

HTML en el lienzo

HTML-in-canvas es una nueva API que te permite personalizar los elementos DOM de renderización directamente en un lienzo o una textura de WebGL o WebGPU, mientras mantienes la interactividad y la accesibilidad del contenido. Tiene tres partes: un atributo para habilitar elementos de lienzo (layoutsubtree), métodos para dibujar elementos secundarios (2d: drawElementImage, webgl:texElementImage2D, webgpu: copyElementImageToTexture) y una forma de actualizar la transformación del elemento correctamente en la pantalla para la interactividad.

Duración del estilo de Long Animation Frames

Esta función agrega información styleDuration y forcedStyleDuration a la API de Long Animation Frame. Esto permite que los desarrolladores distingan los tiempos de estilo y diseño.

OpaqueRange

OpaqueRange representa un intervalo de texto activo dentro del valor de un control de formulario (por ejemplo, un <textarea> o un <input> de texto), de modo que los desarrolladores puedan trabajar con texto de valor usando APIs similares a rangos.

Permite operaciones como getBoundingClientRect(), getClientRects() y el uso con la API de CSS Highlights para la IU, como sugerencias intercaladas, resaltados y ventanas emergentes ancladas. Conserva el encapsulamiento exponiendo solo los desplazamientos de valor (y mostrando un valor nulo para startContainer y endContainer), por lo que no se exponen los extremos DOM ni la estructura interna.

Analiza las instrucciones de procesamiento en HTML

Las instrucciones de procesamiento (sintaxis: <?target data>) son una construcción DOM existente, expuesta en XML. Esta construcción permite que los objetos de nodo que no son elementos tengan un significado semántico para el procesamiento de un documento. Por ejemplo, puedes usarlos para denotar rangos para la transmisión o el resaltado sin requerir elementos DOM nuevos y cambiar la estructura DOM en lo que respecta a CSS. También puedes usarlos como directivas para el analizador HTML sobre cómo almacenar en búfer y transmitir.

Política de permisos: focus-without-user-activation

Esta política les brinda a los incorporadores control sobre el enfoque programático del contenido incorporado a través de la política de permisos focus-without-user-activation. Cuando se rechaza la política para un marco, se bloquean las llamadas de enfoque programático (element.focus(), autofocus, window.focus(), dialog.showModal() y el enfoque de ventanas emergentes), a menos que se activen con la activación del usuario. El enfoque iniciado por el usuario, como hacer clic o presionar la tecla Tab, nunca se ve afectado. Puedes establecer la política a través de un encabezado de respuesta HTTP Permissions-Policy o el atributo iframe allow. Se admite la delegación de enfoque. Un marco superior que tiene el enfoque puede pasar el enfoque de forma programática a un iframe secundario, incluso si se rechazó la política del elemento secundario. Una vez que un marco tiene el enfoque, puede mover el enfoque dentro de su propio subárbol.

Parámetros de muestreo de la API de Prompt

Esta función agrega parámetros de muestreo a la API de Prompt. Estos parámetros controlan cómo se muestrean los tokens del modelo, lo que les brinda a los desarrolladores control sobre la creatividad o la aleatoriedad del resultado. Además, agrega atributos a la instancia LanguageModel para leer los valores establecidos. También agrega una función LanguageModel estática para obtener los valores predeterminados y máximos de estos parámetros. La primera implementación agrega parámetros temperature y topK.

Elemento de instalación HTML de la app web

Esta función permite que un sitio web solicite de forma declarativa a los usuarios que instalen una app web. El elemento acepta de forma opcional dos atributos, lo que te permite instalar contenido desde un origen diferente.