Chrome 135 Beta

Publicado em: 5 de março de 2025

Salvo indicação em contrário, 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 em ChromeStatus.com. O Chrome 135 está na versão Beta desde 5 de março de 2025. Baixe a versão mais recente em Google.com para computador ou na Google Play Store para Android.

CSS e interface

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

Posicionamento da âncora: 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 está fixado a essa âncora em uma borda e contra o bloco de contêiner original na outra borda, o deslocamento de rolagem é considerado ao dimensionar o elemento. Isso significa que você pode usar todo o espaço visível (usando position-area) para o elemento fixo quando o documento é rolado em um determinado deslocamento de rolagem. Para evitar o layout (redimensionamento do elemento) sempre que o documento é rolado, o navegador usa o deslocamento de rolagem lembrado, em vez de usar sempre o deslocamento de rolagem atual. O deslocamento de rolagem lembrado é atualizado em um ponto de recálculo da â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 inerte afeta se ele pode ser focado, editado, selecionado e pesquisado com o recurso "Localizar na página". Isso também afeta a visibilidade na árvore de acessibilidade. A propriedade interactivity especifica se um elemento e os descendentes da árvore plana dele (incluindo execuções de texto) estão inertes ou não. A propriedade interactivity aceita um destes dois valores: auto ou inert.

Propriedades de estouro lógico

As propriedades CSS overflow-inline e overflow-block permitem definir o estouro 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 formato livre na propriedade clip-path. Ele permite definir uma série de comandos, equivalente aos comandos em path(). No entanto, os comandos aceitam unidades responsivas (por exemplo, % ou vw), bem como qualquer valor CSS, como propriedades personalizadas.

O pseudoelemento ::column

Um pseudoelemento ::column, que permite aplicar um conjunto limitado de estilos aos fragmentos gerados. Especificamente, isso se limita 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 focalizáveis e se comportar como um botão (incluindo os estilos de UA). Quando ativada, uma rolagem precisa ser realizada na direção por alguma quantidade. Quando não for possível rolar nessa direção, eles precisam ser 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. Com esses pseudoelementos, é possível criar um conjunto de marcadores focalizáveis para todos os itens associados no contêiner de rolagem.

Estilização de pseudoelementos aninhados

Permite estilizar pseudoelementos aninhados em outros pseudoelementos. Até agora, o suporte foi definido para: ::before::marker e ::after::marker, com ::column::scroll-marker sendo compatível no futuro.

Para eliminar vazamentos do histórico de navegação do usuário, os elementos âncora são estilizados como :visited somente se já tiverem sido clicados nessa origem de frame e site 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 obter informações de estilo de links :visited agora estão obsoletos, já que não fornecem mais aos sites 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 de nível superior ou subframes com a mesma origem do frame de nível superior. Os benefícios de privacidade são preservados porque os sites já sabem quais subpáginas um usuário visitou. Nenhuma informação nova é exposta. Essa foi uma exceção solicitada pela comunidade que melhora a experiência do usuário.

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

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

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

Esses valores são necessários ao criar experiências da Web de ponta a ponta eficientes.

APIs Web

Adicionar suporte a MediaStreamTrack à API Web Speech

Adiciona suporte a MediaStreamTrack à API Web Speech. A API Web Speech é uma API padrão da Web que permite aos desenvolvedores incorporar reconhecimento de fala e síntese nas páginas da Web. No momento, a API Web Speech usa o microfone padrão do usuário como entrada de áudio. O suporte a MediaStreamTrack permite que 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, a tentativa vai falhar e acionar um relatório de violação da CSP. Essa intent abrange o valor "script" dessa diretiva.

Criar um cliente de service worker e herdar o controlador do service worker 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 cobertos 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 service worker não os intercepta. Isso visa corrigir as discrepâncias criando clientes de service worker para iframes srcdoc e fazendo com que eles herdem o controlador de service worker do elemento pai.

Disparar eventos de clique para o ponteiro capturado

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

Float16Array

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

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

O esquema de chaves de cache HTTP do Chrome foi atualizado para incluir um booleano is-cross-site-main-frame-navigation e 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 depois navegar até um recurso conhecido por ser carregado pela página para inferir informações sensíveis por 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.

Prevenção de rastreamento de HSTS

Reduz o rastreamento de usuários por terceiros usando o cache do 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 do invocador: atributos command e commandfor

Os atributos command e commandfor em elementos <button> permitem atribuir comportamento aos botões de uma maneira mais acessível e declarativa, reduzindo bugs e simplificando a quantidade de JavaScript necessária para a interatividade. Os 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 popovers.

Adiciona suporte para <link rel="facilitated-payment" href="..."> como uma dica de que o navegador deve notificar os clientes de pagamento registrados sobre um pagamento por push pendente.

A propriedade NavigateEvent sourceElement

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

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

Ignorar mudanças no URL do cliente do service worker history.pushState

Modifica a propriedade Client.url do service worker 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 atributos rel e relList para SVGAElement

A interface SVGAElement no SVG 2.0 permite a manipulação de elementos <a> semelhante aos elementos de âncora HTML. O suporte aos atributos rel e relList melhora a segurança e a privacidade dos 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 de RTC

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

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

Atualizar ProgressEvent para usar o tipo duplo para "loaded" e "total"

O ProgressEvent tem atributos loaded e total que indicam o andamento, e agora o tipo deles é unsigned long long. Com esse recurso, o tipo desses dois atributos mudou para double, o que dá ao desenvolvedor mais controle sobre o valor. Por exemplo, agora os desenvolvedores podem criar um ProgressEvent com o total de 1 e o loaded aumentando de 0 para 1 gradualmente. Isso será 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 beaconing mais confiável no final do ciclo de vida de uma página. Quando chamado em um documento, um pedido adiado é enfileirado pelo navegador no estado PENDING e será invocado 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 liberadas quando o documento entrar no bfcache, não importa quanto tempo falte. O navegador decide quando é 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 corpo e 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 "mostra interesse" no elemento, as ações são acionadas no elemento de destino. As ações podem incluir mostrar um popover. O user agent vai detectar quando o usuário "demonstra interesse" no elemento, usando métodos como passar o cursor do mouse sobre ele, pressionar teclas de atalho especiais no teclado ou tocar e manter pressionado o elemento em telas sensíveis ao toque. Quando o interesse é mostrado ou perdido, um InterestEvent é disparado no destino, que tem ações padrão no caso de popovers: mostrar e ocultar o popover.

Integridade com base em assinaturas

Esse recurso oferece aos desenvolvedores da Web um mecanismo para verificar a origem dos recursos de que dependem, criando uma base técnica para a confiança nas dependências de um site. Em resumo: os servidores podem assinar respostas com um par de chaves Ed25519, e os desenvolvedores da Web podem exigir que o user agent 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 Subrecursos, por outro.

Descontinuações e remoções

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

Esta versão do Chrome descontinua um recurso.

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

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.

Remoção do método navigator.xr.supportsSession descontinuado

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 NavigateEvent canTransition

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. Nesse momento, 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, vamos corrigir isso e remover canTransition. Qualquer uso de canTransition pode ser substituído por canIntercept sem mudar o comportamento.

Remover o limite da WebGPU maxInterStageShaderComponents

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 as etapas do shader.
  • Pequenas discrepâncias: embora haja pequenas diferenças na forma como os dois limites são calculados, elas são mínimas e podem ser gerenciadas de forma eficaz no maxInterStageShaderVariables limit.
  • Simplificação: a remoção de maxInterStageShaderComponents simplifica a interface do shader 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, que tem um nome mais adequado e é mais abrangente.