Chrome 136

Data de lançamento da versão estável:29 de abril de 2025

A menos que indicado de outra forma, as mudanças a seguir se aplicam à versão do canal estável do Chrome 136 para Android, ChromeOS, Linux, macOS e Windows.

HTML e DOM

Suporte a idiomas para CanvasTextDrawingStyles

O elemento DOM <canvas>, como todos os elementos DOM, aceita um atributo lang que é usado para definir o tratamento específico do idioma para a seleção de fontes (quando as fontes têm glifos específicos da localidade). Os navegadores respeitam esse atributo. No entanto, quando um OffscreenCanvas é criado, não há como definir informações de localidade, resultando em um estado em que uma tela fora da tela produz resultados renderizados diferentes da tela em que a saída é usada. Esse recurso adiciona um atributo IDL lang a CanvasTextDrawingStyles para dar aos desenvolvedores controle direto sobre a linguagem para o desenho de texto e as métricas.

Rastreamento do bug #385006131 | Entrada do ChromeStatus.com | Especificação

CSS e interface

A propriedade dynamic-range-limit

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

Rastreamento do bug #1470298 | Entrada do ChromeStatus.com | Especificação

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.

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.

Rastreamento do bug #1448609 | Entrada do ChromeStatus.com | Especificação

print-color-adjust sem prefixo

A propriedade print-color-adjust permite ajustar as cores em páginas da Web impressas. É o mesmo que o -webkit-print-color-adjust já aceito pelo Chrome, mas com um nome padronizado.

A versão com prefixo -webkit- não é removida.

Documentação do MDN | Bug de rastreamento #376381169 | Entrada do ChromeStatus.com | Especificação

Renomear o tipo attr() string como raw-string

O grupo de trabalho do CSS decidiu substituir o tipo attr() string por raw-string.

Portanto, a partir do Chrome 136, attr(data-foo string) se torna attr(data-foo raw-string).

Bug de rastreamento #400981738 | Entrada do ChromeStatus.com | Especificação

Alternativa var() independente de tipo

A parte de substituto de uma função var() não é validada com base no tipo da propriedade personalizada referenciada.

Rastreamento do bug #372475301 | Entrada do ChromeStatus.com

APIs Web

Enviar eventos de clique para o ponteiro capturado

Se um ponteiro for capturado enquanto o evento pointerup estiver sendo enviado, o evento click agora 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 interface.

Para ponteiros não capturados, o destino click permanece inalterado.

Rastreamento do bug #40851596 | Entrada do ChromeStatus.com | Especificação

Dicas de compilação explícitas com comentários mágicos

Permite anexar informações sobre quais funções precisam ser analisadas e compiladas em arquivos JavaScript.

As informações são codificadas como comentários mágicos.

Rastreamento do bug #13917 | Entrada do ChromeStatus.com | Especificação

Incorporar o 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 conhecido por ser carregado pela página para inferir informações sensíveis usando o 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.

Rastreamento do bug #398784714 | Entrada do ChromeStatus.com | Especificação

Protected Audience: assistentes de conversão de texto

Os scripts de lances e pontuação da API Protected Audience que interagem com a WebAssembly precisam converter dados do tipo string de forma eficiente em (e de) matrizes de bytes. Por exemplo, para transmitir strings para dentro e fora da WebAssembly com o ArrayBuffer "memory". Isso oferece duas funções independentes, protectedAudience.encodeUtf8 e protectedAudience.decodeUtf8, para executar essas tarefas de maneira muito mais eficiente do que em JavaScript.

Entrada do ChromeStatus.com

RegExp.escape

RegExp.escape é um método estático que recebe uma string e retorna uma versão com escape que pode ser usada como um padrão dentro de uma expressão regular.

Exemplo:

const str = prompt("Please enter a string");
const escaped = RegExp.escape(str);
const re = new RegExp(escaped, 'g'); // handles reg exp special tokens with the replacement.
console.log(ourLongText.replace(re));

Entrada do ChromeStatus.com | Especificação

Regras de especulação: campo da tag

Isso permite que os desenvolvedores adicionem o campo de tag às regras de especulação. Esse campo opcional pode ser usado para rastrear a origem das regras de especulação. Por exemplo, para tratá-los de maneira diferente em um servidor intermediário. Todas as tags associadas a uma especulação serão enviadas com o cabeçalho Sec-Speculation-Tags.

Rastreamento do bug #381687257 | Entrada do ChromeStatus.com | Especificação

Atualizar ProgressEvent para usar o tipo duplo para loaded e total

O ProgressEvent tem os atributos loaded e total indicando o progresso, e o tipo deles é unsigned long long agora.

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.

Entrada do ChromeStatus.com | Especificação

Privacidade e segurança

Relatórios da Política de permissões para iframes

Apresenta um novo tipo de violação chamado "Possível violação da política de permissões", que só vai analisar a política de permissões (incluindo a política somente para relatórios) e o atributo allow definido em iframes para detectar o conflito entre a política de permissões aplicada e as permissões propagadas para iframes.

Rastreamento do bug #40941424 | Entrada do ChromeStatus.com | Especificação

Reduzir as técnicas de impressão digital nas informações do cabeçalho Accept-Language

Reduz a quantidade de informações que a string de valor do cabeçalho Accept-Language expõe em solicitações HTTP e em navigator.languages. Em vez de enviar uma lista completa dos idiomas preferidos do usuário em cada solicitação HTTP, o Chrome agora envia o idioma mais preferido do usuário no cabeçalho Accept-Language.

Rastreamento do bug #1306905 | Entrada do ChromeStatus.com

Identidade

Atualizações da FedCM

Permite que a FedCM mostre vários provedores de identidade na mesma caixa de diálogo, tendo todos os provedores na mesma chamada get(). Isso oferece aos desenvolvedores uma maneira conveniente de apresentar todos os provedores de identidade compatíveis aos usuários.

O Chrome 136 também remove o suporte para adicionar outra conta no modo passivo do FedCM. Esse recurso permite mostrar um botão Usar outra conta com outras contas de IdP no seletor. No momento, o recurso não está sendo usado, e as conversas de UX nos levaram a acreditar que o suporte a ele leva a um fluxo mais complicado sem muitos benefícios. Esse recurso ainda vai funcionar no modo ativo do FedCM.

Rastreamento do bug #1348262 | Entrada do ChromeStatus.com | Especificação

Criação condicional de autenticação da Web (upgrades de chaves de acesso)

As solicitações de criação condicional da WebAuthn permitem que os sites façam upgrade das credenciais de senha para uma chave de acesso.

Rastreamento do bug #377758786 | Entrada do ChromeStatus.com | Especificação

Imagens e mídia

AudioContext Estado interrompido

Adiciona um estado "interrupted" a AudioContextState. Esse novo estado permite que o User Agent pause a reprodução durante o acesso exclusivo de áudio (VoIP) ou quando a tampa de um computador portátil está fechada.

Rastreamento do bug #374805121 | Entrada do ChromeStatus.com | Especificação

Controle de superfície capturado

Uma API da Web que permite que os aplicativos da Web:

  1. Encaminha eventos da roda para uma guia capturada.
  2. Ler e mudar o nível de zoom de uma guia capturada.

Bug de rastreamento #1466247 | Entrada do ChromeStatus.com | Especificação

CapturedSurfaceResolution

Expõe a proporção de pixels da superfície capturada durante o compartilhamento de tela.

Esse recurso ajuda os aplicativos a conservar os recursos do sistema ou adaptar a troca de qualidade por largura de banda de acordo com as resoluções física e lógica da superfície capturada.

Rastreamento do bug #383946052 | Entrada do ChromeStatus.com | Especificação

Compatibilidade com o codec H265 (HEVC) no WebRTC

Após essa mudança, o HEVC vai se juntar ao VP8, H.264, VP9 e AV1 como codecs compatíveis no WebRTC. O suporte será pesquisável usando a API MediaCapabilities.

Rastreamento do bug #391903235 | Entrada do ChromeStatus.com | Especificação

Atualizações de suporte ao codec H26x para o MediaRecorder

A API MediaRecorder do Chromium agora oferece suporte à codificação HEVC, introduzindo a string de codec hvc1.* e adicionando novos codecs (hev1.* e avc3.*) com suporte a vídeos de resolução variável em MP4.

A compatibilidade com a codificação de plataforma HEVC foi adicionada aos WebCodecs no Chromium M130. Como continuação, foi adicionado suporte à API MediaRecorder no Chromium. A API agora oferece suporte aos tipos de muxer MP4 e Matroska com diferentes especificações de tipo mime HEVC e H.264. A codificação HEVC só é compatível se o dispositivo e o sistema operacional do usuário oferecem os recursos necessários.

Entrada do ChromeStatus.com

Use DOMPointInit para getCharNumAtPosition, isPointInFill e isPointInStroke

Essa mudança alinha o código do Chromium à especificação mais recente do W3C para SVGGeometryElement e SVGPathElement em termos de uso de DOMPointInit em vez de SVGPoint para getCharNumAtPosition, isPointInFill e isPointInStroke.

Rastreamento do bug #40572887 | Entrada do ChromeStatus.com | Especificação

WebGPU: atributo isFallbackAdapter GPUAdapterInfo

O atributo booleano isFallbackAdapter GPUAdapterInfo indica se um adaptador tem limitações de desempenho significativas em troca de uma compatibilidade maior, um comportamento mais previsível ou uma privacidade melhorada. Um adaptador alternativo pode não estar presente em todos os sistemas.

Rastreamento do bug #403172841 | Entrada do ChromeStatus.com | Especificação

Mudanças no navegador

Barras de rolagem fluentes

Esse recurso moderniza as barras de rolagem do Chromium (sobreposição e não sobreposição) no Windows e no Linux para se ajustar à linguagem de design Fluent do Windows 11.

As barras de rolagem Fluent sem sobreposição serão ativadas por padrão no Linux e no Windows. Essa mudança também se aplica ao Linux, porque o design da barra de rolagem do Chromium para Linux sempre foi alinhado ao que é enviado no Windows. Como expor a ativação de sobreposição de barras de rolagem Fluent ainda está sendo decidida.

Rastreamento do bug #1292117 | Entrada do ChromeStatus.com

Testes de origem

API Audio Output Devices: setDefaultSinkId()

Esse recurso adiciona setDefaultSinkId() a MediaDevices, o que permite que o frame de nível superior mude o dispositivo de saída de áudio padrão usado pelos subframes.

Teste de origem | Entrada do ChromeStatus.com | Especificação

Permitir que aplicativos da Web entendam os tempos de performance bimodal

Os aplicativos da Web podem sofrer com a distribuição bimodal na performance de carregamento de página devido a fatores fora do controle do aplicativo da Web. Exemplo:

  • Quando um agente do usuário é iniciado pela primeira vez (um cenário de "inicialização a frio"), ele precisa realizar muitas tarefas de inicialização caras que competem por recursos no sistema.
  • As extensões do navegador podem afetar o desempenho de um site. Por exemplo, algumas extensões executam códigos adicionais em todas as páginas que você visita, o que pode aumentar o uso da CPU e resultar em tempos de resposta mais lentos.
  • Quando uma máquina está ocupada realizando tarefas intensas, o carregamento de páginas da Web pode ficar mais lento.

Um novo campo confidence no objeto PerformanceNavigationTiming vai permitir que os desenvolvedores discernam se os tempos de navegação são representativos para o aplicativo da Web.

Teste de origem | Rastreamento do bug #1413848 | Entrada do ChromeStatus.com | Especificação

Atualização da implementação de renderização de texto do Canvas

Essa não é uma mudança exposta na Web.

A implementação de CanvasRenderingContext2D measureText(), fillText() e strokeText() mudou drasticamente. Isso pode afetar o desempenho. Por isso, queremos executar um teste de origem para que aplicativos com uso intenso de tela possam testar a nova implementação.

Teste de origem | Rastreamento do bug #389726691 | Entrada do ChromeStatus.com

Suspensões de uso e remoções

Remover HTMLFencedFrameElement.canLoadOpaqueURL()

O método canLoadOpaqueURL() do HTMLFencedFrameElement foi substituído por navigator.canLoadAdAuctionFencedFrame() em 2023, e a chamada dele resultou em um aviso de descontinuação no console desde que apontou para a nova API. O método foi removido do Chrome 136.

Entrada do ChromeStatus.com