Chrome 135 Beta

Publicado em 5 de março de 2025

A menos que indicado de outra forma, as mudanças a seguir se aplicam à versão mais recente do canal Beta do Chrome para Android, ChromeOS, Linux, macOS e Windows. Saiba mais sobre os recursos listados aqui nos links fornecidos ou na lista do ChromeStatus.com. O Chrome 135 é Beta desde 5 de março de 2025. Faça o download da versão mais recente em Google.com para computadores ou na Google Play Store no Android.

CSS e interface

Nesta versão, adicionamos 13 novos recursos de CSS e interface.

Posicionamento de âncora com o deslocamento de rolagem lembrado

Adição de suporte ao conceito de deslocamento de rolagem lembrado. Quando um elemento posicionado tem uma âncora padrão e é conectado a essa âncora em uma borda e contra o bloco de contenção original na outra borda, o deslocamento será levado em consideração ao dimensionar o elemento. Isso significa que você pode usar todo o espaço visível (usando position-area) para o elemento fixado quando o documento é rolado em um determinado deslocamento de rolagem. Para evitar o layout (redimensionar o elemento) sempre que o documento é rolado, o navegador usa o deslocamento de rolagem lembrado, em vez de sempre usar o deslocamento de rolagem atual. O deslocamento de rolagem lembrado é atualizado em um ponto de recalculo de âncora, que é a posição em que o elemento posicionado é exibido inicialmente ou quando uma opção de posição diferente (position-try-fallbacks) é escolhida.

Inércia do CSS

Tornar um elemento inativo afeta se ele pode ser focado, editado, selecionado e pesquisável pelo recurso Encontrar na página. Isso também afeta se ele está visível na árvore de acessibilidade. A propriedade interactivity especifica se um elemento e seus descendentes de árvore plana (incluindo linhas de texto) são inertes ou não. A propriedade interactivity aceita um destes dois valores: auto ou inert.

Propriedades de transbordamento lógico

As propriedades CSS overflow-inline e overflow-block permitem definir o overflow na direção inline e de bloco em relação ao modo de gravação. Em um modo de escrita horizontal, overflow-inline é mapeado para overflow-x, enquanto em um modo de escrita vertical, ele é mapeado para overflow-y.

A propriedade dynamic-range-limit

Permite que uma página limite o brilho máximo do conteúdo HDR.

A função shape()

A função shape() permite formas responsivas de forma livre na propriedade clip-path. Ele permite definir uma série de comandos, equivalentes aos comandos em path(). No entanto, os comandos aceitam unidades responsivas (por exemplo, % ou vw), bem como qualquer valor de CSS, como propriedades personalizadas.

O pseudoelemento ::column

Um pseudoelemento ::column, que permite aplicar um conjunto limitado de estilos aos fragmentos gerados. Especificamente, isso é limitado a estilos que não afetam o layout e, portanto, podem ser aplicados após o layout.

Pseudoelementos ::scroll-button()

Permite a criação de botões de rolagem interativos como pseudoelementos. Por exemplo:

.scroller {
  overflow: auto;
}

.scroller::scroll-button(inline-start) {
  content: "<";
}

.scroller::scroll-button(inline-end) {
  content: ">";
}

Eles precisam ser focados, atuando como um botão (incluindo os estilos do UA). Quando ativado, um rolamento precisa ser realizado na direção por uma certa quantidade. Quando não for possível rolar nessa direção, eles serão desativados (e estilizados com :disabled). Caso contrário, eles serão ativados (e estilizados com :enabled). O seletor permite definir botões em quatro direções lógicas: block-start, block-end, inline-start, inline-end; além de quatro direções físicas: up, down, left, right.

::scroll-marker e ::scroll-marker-group

Adiciona ::scroll-marker e ::scroll-marker-group para contêineres de rolagem. Esses pseudoelementos permitem criar um conjunto de marcadores com foco para todos os itens associados no contêiner de rolagem.

Estilo de pseudoelementos aninhados

Permite o estilo de pseudoelementos aninhados dentro de outros pseudoelementos. Até o momento, o suporte foi definido para: ::before::marker e ::after::marker, com ::column::scroll-marker sendo aceito no futuro.

Para eliminar vazamentos de histórico de navegação do usuário, os elementos âncora são estilizados como :visited somente se tiverem sido clicados anteriormente a partir dessa origem de site e frame de nível superior. Ao estilizar apenas os links que foram clicados neste site e frame antes, os muitos ataques de canal lateral que foram desenvolvidos para coletar informações de estilização de links :visited estão obsoletos, porque não fornecem mais sites com novas informações sobre os usuários.

Há uma exceção para links diretos, em que os links para as páginas de um site podem ter o estilo :visited, mesmo que não tenham sido clicados nessa origem exata do site e do frame de nível superior. Essa isenção só é ativada em frames ou subframes de nível superior que têm a mesma origem do frame de nível superior. Os benefícios de privacidade ainda são alcançados porque os sites já sabem quais das subpáginas um usuário visitou. Assim, nenhuma nova informação é exposta. Essa foi uma exceção solicitada pela comunidade que melhora a experiência do usuário.

Notação funcional de progresso da interpolação: função *progress() do CSS

Variáveis safe-area-max-inset-*

Além das variáveis de ambiente safe-area-inset, o Chrome agora também oferece suporte a variantes max-area-safe-inset-* dessas variáveis. Ao contrário dos engastes dinâmicos, os engastes máximos não mudam e representam o engaste máximo possível da área segura.

Esses valores são necessários para criar experiências de Web de ponta a ponta com bom desempenho.

APIs Web

Adicionar suporte a MediaStreamTrack à API Web Speech

Adicionamos suporte a MediaStreamTrack à API Web Speech. A API Web Speech é uma API padrão da Web que permite que os desenvolvedores incorporem o reconhecimento de fala e a síntese às páginas da Web. No momento, a API Web Speech usa o microfone padrão do usuário como entrada de áudio. O suporte à MediaStreamTrack permite que os sites usem a API Web Speech para legendar outras fontes de áudio, incluindo faixas de áudio remotas.

Particionamento de URL de blobs: busca e navegação

Como continuação do particionamento de armazenamento, esse recurso implementa o particionamento do acesso ao URL do blob por chave de armazenamento (site de nível superior, origem do frame e o booleano has-cross-site-ancestor), com exceção das navegações de nível superior que vão permanecer particionadas apenas pela origem do frame.

CSP require-sri-for para scripts

A diretiva require-sri-for permite afirmar que todos os recursos de um determinado tipo precisam ser verificados quanto à integridade. Se um recurso desse tipo for carregado sem metadados de integridade, essa tentativa vai falhar e acionar um relatório de violação do CSP. Essa intent abrange o valor "script" da diretiva.

Criar um cliente de worker de serviço e herdar o controlador de worker de serviço para o iframe srcdoc

No momento, os documentos de contexto do Srcdoc não são clientes de service worker e não são abrangidos pelo service worker da página mãe. Isso resulta em algumas discrepâncias. Por exemplo, o Resource Timing informa os URLs que esses documentos carregam, mas o worker de serviço não os intercepta. O objetivo é corrigir as discrepâncias criando clientes de service worker para iframes srcdoc e fazendo com que eles herdem o controlador de service worker da página mãe.

Envio de eventos de clique para o ponteiro capturado

Se um ponteiro for capturado enquanto o evento pointerup estiver sendo enviado, o evento click será enviado para o destino capturado em vez do ancestral comum mais próximo dos eventos pointerdown e pointerup, de acordo com a especificação do evento da IU. Para ponteiros não capturados, o destino click permanece inalterado.

Float16Array

Adiciona a matriz do tipo Float16Array. Os valores numéricos são arredondados para IEEE fp16 ao gravar em instâncias Float16Array.

Incorporação do iniciador de navegação à chave da partição de cache HTTP

O esquema de chaveamento de cache HTTP do Chrome foi atualizado para incluir um booleano is-cross-site-main-frame-navigation para mitigar ataques de vazamento entre sites envolvendo navegação de nível superior. Especificamente, isso vai impedir ataques entre sites em que um invasor pode iniciar uma navegação de nível superior para uma página específica e, em seguida, navegar para um recurso que é carregado pela página para inferir informações sensíveis pelo tempo de carregamento. Essa mudança também melhora a privacidade, impedindo que um site malicioso use navegações para inferir se um usuário já visitou um determinado site anteriormente.

Prevenção de rastreamento do HSTS

Reduz o rastreamento de usuários por terceiros usando o cache HSTS.

Esse recurso só permite upgrades HSTS para navegações de nível superior e bloqueia upgrades HSTS para solicitações de subrecursos. Isso torna inviável que sites de terceiros usem o cache HSTS para rastrear usuários na Web.

Comandos de invocação: os atributos command e commandfor

Os atributos command e commandfor em elementos <button> permitem atribuir comportamento a botões de maneira mais acessível e declarativa, reduzindo bugs e simplificando a quantidade de JavaScript necessária para interatividade. Botões com atributos commandfor e command, quando clicados, tocados ou acionados com pressionamento de tecla, enviam um CommandEvent no elemento referenciado por commandfor, com alguns comportamentos padrão, como abrir caixas de diálogo e pop-ups.

O suporte a <link rel="facilitated-payment" href="..."> foi adicionado como uma sugestão de que o navegador precisa notificar os clientes de pagamento registrados sobre um pagamento push pendente.

A propriedade sourceElement NavigateEvent

Quando uma navegação é iniciada por um elemento (ou seja, um clique em um link ou um envio de formulário), a propriedade sourceElement no NavigateEvent retorna o elemento inicializador.

Mudança no nome do motivo da API NotRestoredReasons

A API NotRestoredReasons está mudando alguns dos textos de motivo para se alinhar aos nomes padronizados. Os desenvolvedores que monitoram esses motivos podem notar uma mudança nos textos de motivo.

API Web Speech no dispositivo

O URL do cliente do service worker ignora mudanças de history.pushState

Modifica a propriedade Client.url do worker de serviço para ignorar mudanças no URL do documento usando history.pushState() e outras APIs de histórico semelhantes. A propriedade Client.url é destinada a ser o URL de criação do documento HTML, que ignora essas mudanças.

Compatibilidade com os atributos rel e relList para SVGAElement

A interface SVGAElement no SVG 2.0 permite a manipulação de elementos <a> semelhantes aos elementos de âncora HTML. O suporte aos atributos rel e relList melhora a segurança e a privacidade para os desenvolvedores. Esse alinhamento com elementos de âncora HTML garante consistência e facilidade de uso em todas as tecnologias da Web.

Marcações de tempo para frames codificados em RTC

Esse recurso consiste em expor à Web alguns carimbos de data/hora presentes em frames codificados do WebRTC transmitidos por uma RTCPeerConnection. Os carimbos de data/hora em questão são:

  • Carimbo de data/hora da captura: o carimbo de data/hora em que um frame foi capturado originalmente
  • Carimbo de data/hora de recebimento: o carimbo de data/hora em que um frame foi recebido

Atualize ProgressEvent para usar o tipo duplo para "carregado" e "total".

O ProgressEvent tem os atributos loaded e total indicando o progresso, e o tipo deles agora é unsigned long long. Com esse recurso, o tipo desses dois atributos é alterado para double, o que dá ao desenvolvedor mais controle sobre o valor. Por exemplo, os desenvolvedores agora podem criar um ProgressEvent com o total de 1 e o loaded aumentando gradualmente de 0 para 1. Isso está alinhado com o comportamento padrão do elemento HTML <progress> se o atributo max for omitido.

A API fetchLater

A API fetchLater() é uma API JavaScript para solicitar uma busca adiada, especialmente útil para beacons mais confiáveis no final da vida útil de uma página. Quando chamada em um documento, uma solicitação adiada é enfileirada pelo navegador no estado PENDING e será invocada pela primeira das seguintes condições:

O documento é destruído. Após um período especificado pelo usuário. Por motivos de privacidade, todas as solicitações pendentes serão descartadas quando o documento entrar no bfcache, não importa quanto tempo restar. O navegador decide que é hora de enviar.

A API retorna um FetchLaterResult que contém um campo booleano activated que pode ser atualizado para informar se a solicitação adiada foi enviada ou não. Se o envio for bem-sucedido, toda a resposta será ignorada pelo navegador, incluindo o corpo e os cabeçalhos.

Do ponto de vista do usuário da API, o horário exato de envio é desconhecido.

Novos testes de origem

No Chrome 135, você pode ativar os seguintes novos testes de origem.

Invocadores de interesse

Esse recurso adiciona um atributo interesttarget aos elementos <button> e <a>. O atributo interesttarget adiciona comportamentos de "interesse" ao elemento. Assim, quando o usuário "demonstra interesse" no elemento, as ações são acionadas no elemento de destino. As ações podem incluir coisas como mostrar um popover. O user agent vai detectar quando o usuário "mostrar interesse" no elemento, usando métodos como passar o cursor sobre o elemento com um mouse, pressionar atalhos de teclado especiais ou tocar e pressionar o elemento em telas sensíveis ao toque. Quando o interesse é mostrado ou perdido, um InterestEvent é acionado no destino, que tem ações padrão no caso de pop-ups, mostrando e ocultando o pop-up.

Integridade com base em assinaturas

Esse recurso oferece aos desenvolvedores da Web um mecanismo para verificar a procedência dos recursos de que dependem, criando uma base técnica de confiança nas dependências de um site. Resumindo: os servidores podem assinar respostas com um par de chaves Ed25519, e os desenvolvedores da Web podem exigir que o agente do usuário verifique a assinatura usando uma chave pública específica. Isso oferece uma adição útil às verificações baseadas em URL oferecidas pela política de segurança de conteúdo, por um lado, e às verificações baseadas em conteúdo da integridade de subrecurso, por outro.

Suspensões de uso e remoções

Esta versão do Chrome apresenta as descontinuações e remoções listadas abaixo. Acesse o ChromeStatus.com para conferir listas de descontinuações planejadas, descontinuações atuais e remoções anteriores.

Esta versão do Chrome descontinua um recurso.

Descontinuação de getters de informações de localidade Intl

A API Intl Locale Info é uma proposta TC39 do ECMAScript de fase 3 para aprimorar o objeto Intl.Locale expondo informações de localidade, como dados de semana (primeiro dia da semana, dia de início do fim de semana, dia de término do fim de semana, dia mínimo da primeira semana) e ciclo de direção de texto por hora usado na localidade. O Chrome lançou uma implementação no Chrome 99, mas a proposta mudou para mover vários getters para funções. Precisamos remover os getters descontinuados e reiniciar as funções renomeadas.

Esta versão do Chrome remove três recursos.

O método navigator.xr.supportsSession foi removido

navigator.xr.supportsSession foi substituído na especificação do WebXR pelo método navigator.xr.isSessionSupported em setembro de 2019, após receber feedback sobre a forma da API da TAG. Desde então, ele foi marcado como descontinuado no Chrome, produzindo um aviso no console que redireciona os desenvolvedores para a API atualizada. O uso da chamada é muito baixo, e todos os principais frameworks usados para criar conteúdo do WebXR foram atualizados para usar a chamada mais recente.

Remover a propriedade canTransition NavigateEvent

No Chrome 108, o método transitionWhile() e a propriedade canTransition do NavigateEvent foram substituídos pelo novo método intercept() e pela propriedade canIntercept. Naquela época, o método transitionWhile() foi removido. No entanto, esquecemos de remover a propriedade canTransition. Em vez disso, a deixamos como um alias para canIntercept. No Chrome 135, corrigimos esse problema e removemos canTransition. Todos os usos de canTransition podem ser substituídos por canIntercept, sem mudança no comportamento.

O limite da WebGPU maxInterStageShaderComponents foi removido

O limite de maxInterStageShaderComponents está sendo removido devido a uma combinação de fatores:

  • Redundância com maxInterStageShaderVariables: esse limite já tem uma finalidade semelhante, controlando a quantidade de dados transmitidos entre os estágios do sombreador.
  • Discrepâncias menores: embora haja pequenas diferenças na forma como os dois limites são calculados, essas diferenças são pequenas e podem ser gerenciadas de forma eficaz no maxInterStageShaderVariables limit.
  • Simplificação: a remoção de maxInterStageShaderComponents simplifica a interface do sombreador e reduz a complexidade para os desenvolvedores. Em vez de gerenciar dois limites separados (que se aplicam simultaneamente, mas com diferenças sutis), eles podem se concentrar no maxInterStageShaderVariables com nome mais adequado e mais abrangente.