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.

As funções relacionadas ao sinal ​abs() e sign() calculam várias funções relacionadas ao sinal do argumento.

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, comportando-se 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é agora, o suporte foi definido para: ::before::marker e ::after::marker, com ::column::scroll-marker sendo aceito no futuro.

Para eliminar vazamentos do histórico de navegação do usuário, os elementos âncora são estilizados como :visited somente se tiverem sido clicados anteriormente a partir desse site de nível superior e da origem do frame. Ao estilizar apenas os links que já foram clicados neste site e frame, 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 ser estilizados como :visited, mesmo que não tenham sido clicados nessa exata origem 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ções funcionais de progresso da interpolação: funções *progress() do CSS

As notações funcionais progress(), media-progress() e container-progress() representam a distância proporcional de um valor específico (o valor do progresso) de um valor (o valor inicial do progresso) para outro valor (o valor final do progresso). Elas permitem exibir uma proporção de progresso de funções matemáticas, recursos de mídia e recursos de contêiner, respectivamente.

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

Foi adicionado 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 voz 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, a 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 worker de serviço para iframes srcdoc e fazendo com que eles herdem o controlador de worker de serviço 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 digitada 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 reduzir 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 de HSTS

Mitiga o rastreamento de usuários por terceiros pelo cache HSTS.

Esse recurso só permite upgrades HSTS para navegações de nível superior e bloqueia upgrades HSTS para solicitações de sub-recursos. 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 para <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

Esse recurso adiciona suporte ao reconhecimento de fala no dispositivo à API Web Speech, permitindo que os sites garantam que nem o áudio nem a fala transcrita sejam enviados para um serviço de terceiros para processamento. Os sites podem consultar a disponibilidade do reconhecimento de fala no dispositivo para idiomas específicos, solicitar que os usuários instalem os recursos necessários para o reconhecimento de fala no dispositivo e escolher entre reconhecimento de fala no dispositivo ou baseado na nuvem conforme necessário.

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.

Carimbos de data/hora para frames codificados por 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 PENDENTE 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 agente do usuário 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 assinatura

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 internacional

A API Intl Locale Info é uma proposta de 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 descontinuado 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, ela foi marcada como descontinuada no Chrome, produzindo um aviso do 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 mais abrangente e com nome mais apropriado.