Versión beta de Chrome 138

Fecha de publicación: 28 de mayo de 2025

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 las funciones que se enumeran aquí a través de los vínculos proporcionados o de la lista en ChromeStatus.com. Chrome 138 está en versión beta desde el 28 de mayo de 2025. Puedes descargar la versión más reciente en Google.com para computadoras o en Google Play Store en Android.

CSS y IU

En esta versión, se agregan seis funciones nuevas de CSS y de IU.

Palabra clave de tamaño stretch de CSS

Es una palabra clave para las propiedades de tamaño de CSS (por ejemplo, width y height) que permite que los elementos crezcan para llenar exactamente el espacio disponible de su bloque contenedor. Es similar a 100%, excepto que el tamaño resultante se aplica al cuadro de margen del elemento en lugar del cuadro indicado por box-sizing. El uso de esta palabra clave permite que el elemento conserve sus márgenes y, al mismo tiempo, sea lo más grande posible.

Las funciones relacionadas con el signo abs() y sign() calculan varias funciones relacionadas con el signo de su argumento.

Variable de entorno CSS para la escala de fuentes a nivel del SO

Expone la escala de fuentes preferida de un usuario a CSS. Actualmente, no es práctico que una página detecte si el usuario cambió el tamaño de fuente preferido con las preferencias del sistema operativo. Esta variable de entorno CSS reflejará la escala elegida por el usuario.

sibling-index() y sibling-count() de CSS

Las funciones sibling-index() y sibling-count() se pueden usar como números enteros en los valores de las propiedades de CSS para aplicar estilo a un elemento según su posición entre sus elementos del mismo nivel o la cantidad total de elementos del mismo nivel, respectivamente. Estas funciones se pueden usar directamente como valores enteros, pero de manera más interesante dentro de las expresiones calc().

li {
  animation-delay: calc(0.1s * sibling-index());
}

Notación funcional del progreso de interpolación: función progress() de CSS

La notación funcional progress() es una función matemática que muestra un valor <number> que representa la posición de un cálculo (el valor de progreso ) entre otros dos cálculos (el valor de inicio de progreso y el valor de finalización de progreso ).

API de enumeración de segmentos de viewport

La API de Viewport Segments permite a los desarrolladores adaptar su diseño web para segmentar dispositivos plegables. Los segmentos de viewport definen la posición y las dimensiones de una región lógicamente separada del viewport. Los segmentos de viewport se crean cuando el viewport se divide por una o más funciones de hardware (como un pliegue o una bisagra entre pantallas separadas) que actúan como un divisor. Los segmentos son las regiones del viewport que el desarrollador puede tratar como lógicamente distintas.

API web

Se agregó compatibilidad con metadatos de orientación de fotogramas de video a WebCodecs

Se introducen valores rotation: int y flip: bool en varias interfaces relacionadas con el video en WebCodecs para que los desarrolladores puedan trabajar con fuentes de fotogramas que tienen orientación (por ejemplo, cámaras de Android y ciertos medios). La interfaz VideoFrame aumenta la capacidad de crear VideoFrames con rotación y volteo arbitrarios, así como descriptores de acceso para esta información en el objeto VideoFrame. El objeto VideoDecoderConfig obtiene campos rotation y flip que se emiten automáticamente en objetos VideoFrame decodificados. La clase VideoEncoder obtiene mecanismos para pasar información de rotación y volteo de encode() a VideoDecoderConfig emitida como parte de EncodedVideoChunkMetadata. Si se llama a encode() con fotogramas con diferentes orientaciones, se arrojará una excepción no fatal. El método configure() se puede usar para restablecer la orientación permitida.

API de Crash Reporting: is_top_level y visibility_state

Esta función agrega campos de cadena is_top_level y visibility_state al cuerpo de la API de Crash Reporting que se envía al extremo de informes predeterminado para los informes de fallas.

Escape < y > en atributos en la serialización

Escape < y > en los valores de los atributos en la serialización. Esto mitiga el riesgo de ataques XSS de mutación, que se producen cuando el valor de un atributo se interpreta como un token de etiqueta de inicio después de serializarse y volver a analizarse.

Política de integridad para secuencias de comandos

La integridad de subrecursos (SRI) permite a los desarrolladores asegurarse de que los recursos que pretenden cargar sean los que están cargando. Sin embargo, actualmente no hay forma de que los desarrolladores se aseguren de que todas sus secuencias de comandos se validen con SRI. El encabezado Integrity-Policy les brinda a los desarrolladores la capacidad de afirmar que cada recurso de un tipo determinado debe verificarse en cuanto a su integridad. Si se intenta cargar un recurso de ese tipo sin metadatos de integridad, el intento fallará y se activará un informe de incumplimiento.

Cuota de almacenamiento informada predecible

Informa una cuota de almacenamiento predecible de la API de Estimate de StorageManager para los sitios que no tienen permisos de almacenamiento ilimitados. Es posible detectar el modo de navegación de un usuario a través de la cuota de almacenamiento informada, ya que el espacio de almacenamiento disponible es mucho menor en el modo Incógnito que en el modo regular.

Esta es una mitigación que evita la detección del modo de navegación de un usuario a través de la API de Storage, ya que informa una cuota artificial, igual al uso + min(10 GiB, disco redondeado al 1 GiB más cercano), en todos los modos de navegación de los sitios con permisos de almacenamiento limitados. Los sitios con permisos de almacenamiento ilimitado no se verán afectados. La cuota forzosa tampoco se verá afectada.

Evento pushsubscriptionchange cuando se vuelve a suscribir

Activa el evento pushsubscriptionchange en los service workers cuando se vuelve a otorgar permisos de notificaciones a un origen para el que existía una suscripción de envío en el pasado, pero que se revocó debido a un cambio de permisos (de otorgado a denegar/predeterminado). El evento se activará con un oldSubscription y un newSubscription vacíos.

Reglas de especulación: Agrega prefetchCache y prerenderCache al encabezado Clear-Site-Data

Dos valores nuevos para el encabezado Clear-Site-Data para ayudar a los desarrolladores a segmentar la limpieza de la caché de renderización previa y de recuperación previa: prefetchCache y prerenderCache. Estos se pueden enviar en cualquier solicitud y no es necesario que se realicen en la solicitud de documento (por ejemplo, se pueden mostrar en las respuestas de la API de agregar al carrito o de acceso y cierre de sesión para borrar las especulaciones sobre el cambio de estado).

Reglas de especulación: Campo target_hint

Esto extiende la sintaxis de las reglas de especulación para permitir que los desarrolladores especifiquen el campo target_hint. Este campo proporciona una sugerencia para indicar un destino navegable en el que se activará una página renderizada previamente. Cuando se especifica _blank como sugerencia, se puede activar una página renderizada previamente para un destino navegable que se abre con window.open(). El campo no es compatible con la recuperación previa.

Política estricta del mismo origen para la API de Storage Access

Ajusta la semántica de la API de Storage Access para seguir estrictamente la política del mismo origen, en lo que respecta a la seguridad. Es decir, de forma predeterminada, usar document.requestStorageAccess() en un marco solo adjunta cookies a las solicitudes al origen del iframe (no al sitio).

API de Summarizer

Es una API de JavaScript para producir resúmenes de texto de entrada, respaldados por un modelo de lenguaje de IA. Se espera que los navegadores y los sistemas operativos accedan cada vez más a un modelo de lenguaje. Cuando exponemos este modelo integrado, evitamos que cada sitio web deba descargar su propio modelo de lenguaje de varios gigabytes o enviar texto de entrada a APIs de terceros. En particular, la API de la herramienta de resumen expone una API de alto nivel para interactuar con un modelo de lenguaje y, así, resumir las entradas para una variedad de casos de uso de una manera que no depende del modelo de lenguaje específico en cuestión. Hay disponible una política empresarial (GenAILocalFoundationalModelSettings) para inhabilitar la descarga del modelo subyacente, lo que haría que esta API no esté disponible.

Obtén más información en Genera resúmenes concisos con IA integrada.

API de Language Detector

Es una API de JavaScript para detectar qué idioma se usa en un texto determinado, con niveles de confianza. Este es un complemento importante de la traducción es la detección de idiomas y se puede usar en combinación con la API de Translator. Por ejemplo, toma la entrada del usuario en un idioma desconocido, determina su idioma y, luego, tradúcela a un idioma de destino específico. Si bien los navegadores suelen tener capacidades de detección de idioma, esto ofrece la misma potencia a los desarrolladores web con una API de JavaScript, que complementa la API de traducción.

Hay disponible una política empresarial (GenAILocalFoundationalModelSettings) para inhabilitar la descarga del modelo subyacente, lo que haría que esta API no esté disponible.

Obtén más información en Detecta qué idioma se usa con la IA integrada.

API de Translator

Es una API de JavaScript para proporcionar capacidades de traducción de idiomas a las páginas web. Si bien los navegadores ofrecen cada vez más traducciones de idiomas a sus usuarios, estas capacidades de traducción también pueden ser útiles para los desarrolladores web. Esto es especialmente cierto cuando las funciones de traducción integradas del navegador no pueden ayudar, como con los servicios interactivos y en vivo. Hay disponible una política empresarial (GenAILocalFoundationalModelSettings) para inhabilitar la descarga del modelo subyacente, lo que haría que esta API no esté disponible.

Obtén más información en Traducción con IA integrada.

Extensiones de alcance de la app web

Agrega un "scope_extensions" campo de manifiesto de la app web que permite que las apps web extiendan su alcance a otros orígenes. Esto permite que los sitios que controlan varios subdominios y dominios de nivel superior se presenten como una sola app web. Requiere que los orígenes enumerados confirmen la asociación con la app web mediante un archivo de configuración .well-known/web-app-origin-association.

Web Serial por Bluetooth en Android

Esta función permite que las páginas web y las apps web se conecten a puertos en serie a través de Bluetooth en dispositivos Android. Chrome para Android ahora admite la API de Web Serial a través de Bluetooth RFCOMM. Las políticas empresariales existentes (DefaultSerialGuardSetting, SerialAllowAllPortsForUrls, SerialAllowUsbDevicesForUrls, SerialAskForUrls y SerialBlockedForUrls) en otras plataformas están habilitadas en los estados future_on para Android. Todas las políticas, excepto SerialAllowUsbDevicesForUrls, se habilitarán después de que se habilite la función. SerialAllowUsbDevicesForUrls se habilitará en un lanzamiento futuro después de que Android proporcione compatibilidad a nivel del sistema con puertos en serie con cable.

Bajas y retiros

En esta versión de Chrome, se presentan las siguientes bajas y retiros. Visita ChromeStatus.com para obtener listas de bajas planificadas, bajas actuales y retiros anteriores.

En esta versión de Chrome, se dan de baja dos funciones.

Baja de la eliminación asíncrona de rangos para las extensiones de Source Media

El estándar de Media Source cambió hace mucho tiempo para no permitir un comportamiento definido de forma ambigua que involucraba eliminaciones de rango asíncronas:

  • SourceBuffer.abort() ya no anula las operaciones SourceBuffer.remove().
  • La configuración de MediaSource.duration ya no puede truncar el contenido multimedia almacenado en búfer actualmente.

Ahora se arrojarán excepciones en ambos casos.

Se quitó el resguardo de SwiftShader

Ya no se permite el resguardo automático a WebGL con la compatibilidad del renderizador de software SwiftShader, y la creación de contexto de WebGL fallará en lugar de recurrir a SwiftShader. Esto se hizo por dos motivos principales:

  1. SwiftShader es un riesgo de seguridad alto debido al código JIT que se ejecuta en el proceso de la GPU de Chromium.
  2. Los usuarios tienen una experiencia deficiente cuando se cambia de un WebGL de alto rendimiento con GPU a una implementación con CPU. Los usuarios no tienen control sobre este comportamiento y es difícil describirlo en los informes de errores.

Durante el período de baja, aparecerá una advertencia en la consola de Herramientas para desarrolladores de Chrome cuando se cree un contexto de WebGL y se le haga una copia de seguridad con SwiftShader. Si pasas --enable-unsafe-swiftshader, se quitará este mensaje de advertencia.