Chrome 145

Data de lançamento da versão estável:10 de fevereiro de 2026

Salvo indicação em contrário, as mudanças a seguir se aplicam ao lançamento do canal estável do Chrome 145 para Android, ChromeOS, Linux, macOS e Windows.

CSS e interface

Adicionar suporte à propriedade CSS text-justify

É possível controlar como o texto é justificado quando text-align: justify é aplicado usando a propriedade text-justify. Por exemplo, é possível forçar o alinhamento à direita e à esquerda aumentando o espaço entre os caracteres, mesmo em texto em inglês.

Bug de rastreamento nº 40321528 | Entrada do ChromeStatus.com | Especificação

Ativar valores de porcentagem para propriedades CSS letter-spacing e word-spacing

Ative valores de porcentagem para as propriedades CSS letter-spacing e word-spacing, conforme definido na especificação do Módulo de texto CSS nível 4. Os valores de porcentagem são calculados em relação à medida de avanço do caractere de espaço (U+0020). Isso oferece um controle mais robusto e flexível sobre a tipografia, principalmente em designs responsivos em que o espaçamento do texto precisa se adaptar a diferentes janelas de visualização e tamanhos de fonte.

Bug de rastreamento nº 327740939 | Entrada do ChromeStatus.com | Especificação

Refinar o cálculo da borda de sombra do raio da borda para border-radius alto

Essa mudança garante que as sombras e os limites de corte em elementos quase circulares (em que border-radius está próximo de 50%) correspondam precisamente ao contorno visual da borda curva.

Isso oferece uma renderização mais consistente de formas arredondadas complexas, eliminando discrepâncias visuais para valores de raio altos. O fator de ajuste border-radius, que garante que os cantos apareçam nítidos para raios pequenos, é progressivamente reduzido à medida que o valor do raio se aproxima de 50%.

Isso também se aplica a contornos não arredondados (usando corner-shape), que agora usam o mesmo mecanismo de ajuste de raio.

Rastreamento do bug nº 448651073 | Entrada do ChromeStatus.com | Especificação

Quebra de coluna para multicol

Adição de suporte para as propriedades CSS column-wrap e column-height do multicol Level 2.

Isso permite o layout de coluna vertical ou até mesmo 2D. As colunas podem ter uma altura restrita explícita, em vez de serem derivadas da altura content-box do contêiner multicol. Elas são transferidas para uma nova linha de colunas quando todas as colunas de uma linha são preenchidas, em vez de criar colunas excedentes na direção inline.

Bug de rastreamento nº 403183884 | Entrada do ChromeStatus.com | Especificação

Expor o evento onanimationcancel para GlobalEventHandlers

O CSS Animations Level 1 estende a interface GlobalEventHandlers definida na especificação HTML, declarando quatro novos manipuladores de eventos: onanimationstart, onanimationiteration, onanimationend e onanimationcancel. Apenas o manipulador de eventos onanimationcancel estava faltando na IDL GlobalEventHandlers.

Bug de rastreamento nº 464010037 | Entrada do ChromeStatus.com | Especificação

Caixa de listagem de seleção personalizável

Isso estende o suporte de seleção personalizável ao modo de renderização de caixa de listagem, incluindo seleção única e múltipla no modo de caixa de listagem.

O modo de renderização da caixa de listagem renderiza o elemento select no fluxo ou na página, em vez de um botão e um pop-up separados. Você pode ativar o modo de renderização de caixa de listagem em várias plataformas usando os atributos multiple ou size, por exemplo, <select multiple> ou <select size=4>. Quando a propriedade appearance: base-select do CSS é aplicada ao elemento select com esses atributos, o comportamento de entrada e a renderização são aprimorados.

Isso não é compatível com select personalizáveis para o pop-up de seleção múltipla, que será compatível mais tarde. Você precisa definir os seguintes atributos para ter um pop-up de seleção múltipla: <select multiple size=1>.

Bug de rastreamento nº 357649033 | Entrada do ChromeStatus.com | Especificação

A opção focusVisible em focus

Ao chamar o método focus(), é possível fornecer um booleano focusVisible no dicionário FocusOptions. Quando verdadeiro, um anel de foco é sempre pintado ao redor do elemento recém-focado, e ele corresponde à pseudoclasse :focus-visible. Quando é "false", o anel de foco não é pintado, e :focus-visible não corresponde. Quando ausente, o user agent determina se o anel de foco deve ser pintado e a pseudoclasse :focus-visible corresponde de acordo.

Bug de rastreamento nº 462191849 | Entrada do ChromeStatus.com | Especificação

Ativa a renderização de emojis monocromáticos no modo de cores forçadas.

Essa mudança atualiza o comportamento de renderização de emojis do Chromium no modo de cores forçadas. Durante a resolução do valor calculado, os emojis cujo valor font-variant-emoji é calculado como normal ou unicode são renderizados usando os glifos monocromáticos quando disponíveis.

Por isso, o Chromium suprime a renderização de emojis coloridos, o que garante que eles participem totalmente do pipeline do modo de cores forçadas e respeitem as cores de alto contraste do sistema. O comportamento fora do modo de cores forçadas não muda.

Bug de rastreamento nº 420857717 | Entrada do ChromeStatus.com | Especificação

Efeito de rolagem em roladores não raiz

Isso mostra efeitos de overscroll elástico em contêineres de rolagem não raiz. Quando um elemento rolável aninhado atinge o limite de rolagem, a capacidade de overscroll é aplicada a esse elemento em vez de apenas ao scroller raiz. Isso reduz a necessidade de soluções alternativas personalizadas em JavaScript e pode ser controlado por elemento com overscroll-behavior.

Bug de rastreamento nº 41102897 | Entrada do ChromeStatus.com | Especificação

Recursos

Mostrar a posição real da janela no Android

O Chrome no Android informa com precisão a posição e o tamanho da janela do navegador usando window.screenX, window.screenY, window.outerWidth e window.outerHeight.

Antes, o Chrome presumia incorretamente que todas as janelas do navegador no Android começavam nas coordenadas (0, 0). Essa proposição é imprecisa para tablets Android que usam o modo de janela livre. Os sites sempre recebiam 0 ao consultar a posição na tela da janela usando window.screenX e window.screenY. Esses campos armazenam as coordenadas do canto superior esquerdo da janela no espaço de coordenadas da área de trabalho global.

Além disso, o Chrome no Android presumia incorretamente que as dimensões externas da janela do navegador eram iguais às dimensões internas da janela de visualização do site.

window.screenX e window.screenY têm aliases: window.screenLeft e window.screenTop.

Bug de rastreamento nº 417632037 | Entrada do ChromeStatus.com | Especificação

JavaScript

Inserir

Esta é uma proposta do ECMAScript para Map.prototype.getOrInsert, Map.prototype.getOrInsertComputed, WeakMap.prototype.getOrInsert e WeakMap.prototype.getOrInsertComputed.

Bug de rastreamento nº 434977728 | Entrada do ChromeStatus.com | Especificação

API de chave-valor do Crash Reporting

Uma nova API de chave-valor, window.crashReport, é compatível com um mapa por documento que contém dados que o Chrome anexa aos relatórios de falha.

Os dados colocados no mapa de suporte dessa API são enviados no CrashReportBody se o site sofrer falhas no processo de renderização. Isso permite depurar qual estado específico no aplicativo pode estar causando uma determinada falha.

Bug de rastreamento nº 400432195 | Entrada do ChromeStatus.com | Especificação

Strings do user agent reduzidas por padrão

A partir do Chrome 145, a política UserAgentReduction será removida. Essa política estava disponível para controlar se o Chrome enviava uma string de user agent reduzida ou completa.

Para aumentar a privacidade do usuário e reduzir os recursos de rastreamento passivo, o Chrome começou a reduzir as informações contidas no cabeçalho do user agent por padrão na versão 110. A política UserAgentReduction foi fornecida como uma medida temporária para que as empresas gerenciassem essa transição.

O mecanismo recomendado para sites acessarem informações do navegador e do dispositivo são as dicas de cliente HTTP do user agent (UA-CH). O UA-CH exige que os sites solicitem ativamente informações específicas, o que é uma abordagem mais preservadora da privacidade do que a string User-Agent legada. Para mais informações, consulte o artigo do web.dev, Migrar para as dicas de cliente HTTP do user agent.

A partir do Chrome 145, a política UserAgentReduction não tem efeito. O Chrome envia uma string user agent reduzida por padrão. Sistemas ou aplicativos que dependiam dessa política para receber a string User-Agent completa (legada) talvez não recebam mais as informações detalhadas esperadas.

Entrada do ChromeStatus.com

NavigationTransition tem uma propriedade from, que expõe o URL antigo da navegação. Expor to (um NavigationDestination) conclui isso. Isso é especialmente útil ao usar manipuladores de pré-commit, já que durante o pré-commit a URL atual ainda não mudou para o destino.

navigation.transition só é exposto para navegações interceptadas, ou seja, navegações iniciadas por documentos de mesma origem.

Bug de rastreamento nº 447171238 | Entrada do ChromeStatus.com | Especificação

Confirmação de pagamento seguro: chaves vinculadas ao navegador

Isso adiciona uma assinatura criptográfica extra às declarações de confirmação de pagamento seguro e à criação de credenciais. A chave privada correspondente não é sincronizada entre dispositivos. Isso ajuda você a atender aos requisitos de vinculação de dispositivo para transações de pagamento.

Bug de rastreamento nº 377278827 | Entrada do ChromeStatus.com | Especificação

Confirmação de pagamento seguro: atualização da UX

Atualiza os elementos da UX para a caixa de diálogo do SPC no Chrome para Android.

Além da apresentação de UX, os seguintes itens são adicionados:

  • Os comerciantes podem fornecer uma lista opcional de logotipos de entidades de pagamento relacionados ao pagamento que são mostrados na UX.
  • Diferentes estados de saída são retornados ao comerciante dependendo se o usuário quer continuar ou cancelar a transação sem o SPC. Apenas um estado de saída é enviado para os dois casos.
  • Um novo campo de rótulo de detalhes de pagamento é adicionado ao instrumento de pagamento para que o texto seja apresentado em duas linhas no SPC.

Bug de rastreamento nº 405173922 | Entrada do ChromeStatus.com | Especificação

É possível especificar um maxAge ao definir um cookie com o Cookie Store API.

O tempo de expiração do cookie já pode ser configurado usando o atributo expires, mas maxAge oferece uma opção mais idiomática e alinha o Cookie Store API com as opções fornecidas por document.cookie e o cabeçalho HTTP Set-Cookie.

Bug de rastreamento nº 430926231 | Entrada do ChromeStatus.com | Especificação

Tipos de InputEvent para comandos de exclusão em seleções não recolhidas

Isso informa valores inputType precisos para atalhos de teclado de exclusão no texto selecionado. Quando comandos de exclusão como Ctrl+Backspace ou Ctrl+Delete são usados com texto selecionado em elementos contenteditable, os eventos beforeinput e input informam deleteContentBackward ou deleteContentForward em vez de deleteWordBackward ou deleteWordForward. Isso permite entender corretamente qual operação de edição ocorreu e implementar comportamentos confiáveis de desfazer, refazer ou edição personalizada.

Bug de rastreamento nº 41423062 | Entrada do ChromeStatus.com | Especificação

Ativação fixa para o evento clipboardchange

Isso exige ativação persistente do usuário ou permissão clipboard-read para acionar eventos clipboardchange, impedindo o monitoramento não autorizado da área de transferência.

O evento clipboardchange é relativamente novo (Chrome 144), e isso tem uma mudança mínima voltada para a Web. Na maioria dos casos, a ativação permanente do usuário ou a permissão clipboard-read já está presente onde ocorre o monitoramento da área de transferência (por exemplo, em clientes de área de trabalho remota).

Bug de rastreamento nº 468821937 | Entrada do ChromeStatus.com | Especificação

Multimídia

Expor rtpTimestamp de frames de vídeo WebRTC com VideoFrame.metadata()

Adiciona um método VideoFrame.metadata() que retorna um dicionário contendo o campo rtpTimestamp, se o VideoFrame subjacente tiver esse campo nos metadados nativos. Caso contrário, um dicionário vazio será retornado. Somente frames de vídeo originários de fontes WebRTC têm os metadados rtpTimestamp anexados.

Outros campos de metadados já estão presentes na implementação nativa e podem ser expostos ao JavaScript com o tempo, conforme descrito na especificação proposta.

Entrada do ChromeStatus.com | Especificação

Armazenamento

IndexedDB: back-end SQLite (contextos na memória)

A implementação do IndexedDB do Chromium foi reescrita com base no SQLite para substituir a implementação anterior que usa um híbrido de LevelDB e arquivos simples. Não há mudanças na API da Web.

Isso melhora a confiabilidade e, em menor grau, o desempenho.

Isso é aplicado apenas a contextos na memória, como o modo de navegação anônima no Chromium e no Google Chrome. Isso limita o impacto de novos bugs e adia a necessidade de migrar dados persistentes para o disco.

Bug de rastreamento nº 436880911 | Entrada do ChromeStatus.com | Especificação

Desempenho

Permitir que aplicativos da Web entendam os tempos de performance bimodais

Um novo campo confidence no objeto PerformanceNavigationTiming permite discernir se os tempos de navegação são representativos para seu aplicativo da Web.

Bug de rastreamento nº 1413848 | Entrada do ChromeStatus.com | Especificação

Adicionar presentationTime e paintTime às entradas de performance

Isso expõe paintTime e presentationTime no tempo de elemento, LCP, frames de animação longos e tempo de pintura.

paintTime significa o momento em que a fase de renderização terminou e o navegador iniciou a fase de pintura. presentationTime significa o momento em que os "pixels chegaram à tela", o que é um pouco definido pela implementação.

Essa entrada de recurso omite a marcação de tempo do evento, que é feita separadamente.

Bug de rastreamento nº 378827535 | Entrada do ChromeStatus.com | Especificação

Uso de CssPixels na API LayoutShift

Esse recurso muda os dados de atribuição (prevRect e currentRect) na API LayoutShift para serem informados em pixels CSS em vez de pixels físicos. O comportamento é inconsistente com outras APIs relacionadas ao layout, que usam pixels CSS. Essa mudança melhora a consistência, simplifica o uso e se alinha às unidades esperadas na depuração e nas ferramentas.

Bug de rastreamento nº 399058544 | Entrada do ChromeStatus.com | Especificação

Segurança

Credenciais de sessões vinculadas ao dispositivo

As credenciais de sessão vinculadas ao dispositivo (DBSC) permitem que os sites vinculem a sessão de um usuário ao dispositivo específico, dificultando significativamente o uso de cookies de sessão roubados em outras máquinas.

Entrada do ChromeStatus.com | Especificação

A API Origin

A origem é um componente fundamental da implementação da Web, essencial para os limites de segurança e privacidade mantidos pelos user agents. O conceito é bem definido entre HTML e URL, além de conceitos adjacentes amplamente usados, como site.

No entanto, as origens não são expostas diretamente a você. Embora haja vários getters de origem em vários objetos, cada um deles retorna a serialização ASCII de uma origem, não a origem em si. Isso tem algumas implicações negativas. Na prática, tentar fazer comparações de mesma origem ou mesmo site ao processar origens serializadas geralmente dá errado de maneiras que levam a vulnerabilidades. Filosoficamente, parece uma primitiva de segurança ausente que você tem dificuldade de fazer polyfill com precisão.

No Chrome 145, o navegador aborda essa lacuna na plataforma ao introduzir um objeto Origin que encapsula o conceito de origem e fornece métodos úteis, como comparação, serialização e análise.

Bug de rastreamento nº 434131026 | Entrada do ChromeStatus.com | Especificação

Permissões divididas de acesso à rede local

Essa é uma melhoria nas restrições de acesso à rede local (LNA), em que o Chrome divide a permissão necessária de uma permissão de acesso à rede local em duas permissões separadas.

A permissão antiga é local-network-access. As novas permissões são local-network (para solicitações de LNA a IPs no espaço de endereço local) e loopback-network (para solicitações de LNA a IPs no espaço de endereço de loopback).

A permissão antiga é mantida como um alias e continua funcionando para permissions.query e Permissions Policy. As políticas corporativas continuam funcionando da mesma forma. Políticas corporativas mais recentes e granulares serão adicionadas depois.

Bug de rastreamento nº 465491626 | Entrada do ChromeStatus.com | Especificação

Alinhamento da especificação de tipos confiáveis

O Trusted Types foi implementado e lançado originalmente no Chromium em 2019 e desde então tem sido usado em vários sites. Recentemente, ela ganhou interesse de outros fornecedores de navegadores.

A especificação Trusted Types foi coescrita como uma especificação de "monkey patch" junto com a implementação original. Ele recebe atenção renovada à medida que outros tentam implementar a mesma especificação. Ele foi "upstreamed" para HTML + DOM (além de um pouco de CSP). Como parte desse processo, várias inconsistências estão sendo identificadas e corrigidas. Algumas dessas correções podem ser observadas pelo desenvolvedor. A intenção é atualizar a implementação para corresponder à especificação à medida que ela é enviada para o HTML.

Enquanto isso, o WebKit lançou a implementação da especificação Trusted Types atualizada, o que dá ao Chrome a confiança de que essa atualização é altamente compatível com a Web.

Bug de rastreamento nº 330516530 | Entrada do ChromeStatus.com | Especificação

Gráficos

WebGPU: recurso subgroup_uniformity

Isso adiciona um novo escopo à análise de uniformidade e muda quais partes da linguagem são verificadas em cada uma para permitir que a funcionalidade de subgrupo seja considerada uniforme em mais casos.

Bug de rastreamento nº 454653380 | Entrada do ChromeStatus.com | Especificação

Apps isolados da Web

WebRequest.SecurityInfo em Controlled Frame

Esse recurso introduz uma API WebRequest.SecurityInfo para ControlledFrame. Ele permite que um app da Web intercepte uma solicitação HTTPS, WSS ou WebTransport para um servidor, recupere a impressão digital do certificado do servidor (verificada pelo navegador) e use essa impressão digital para verificar manualmente o certificado de uma conexão TCP/UDP bruta separada com o mesmo servidor. Isso fornece um método para o app confirmar que está se comunicando com o servidor correto.

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

Testes de origem

Adiciona suporte para decodificar imagens JPEG XL (image/jxl) no Blink usando jxl-rs, um decodificador puro de Rust com segurança de memória.

O JPEG XL é um formato de imagem moderno padronizado como ISO/IEC 18181 que oferece:

  • Decodificação progressiva para melhorar o desempenho de carregamento percebido.
  • Compatibilidade com ampla gama de cores, HDR e alta profundidade de bits.
  • Compatibilidade com animações.

Essa implementação usa jxl-rs em vez do decodificador de referência libjxl do C++ para atender aos requisitos de segurança de memória do Chromium. O decodificador é controlado pela flag enable-jxl-image-format e pela flag de build enable_jxl_decoder.

Entrada do ChromeStatus.com

WebAudio: quantum de renderização configurável

AudioContext e OfflineAudioContext agora aceitam um renderSizeHint opcional, que permite aos usuários pedir um tamanho de quantum de renderização específico quando um número inteiro é transmitido, usar o padrão de 128 frames se nada ou default for transmitido, ou pedir ao User-Agent para escolher um bom tamanho de quantum de renderização se hardware for especificado.

Teste de origem | Entrada do ChromeStatus.com

Descontinuações e remoções

Remoção do suporte a câmeras virtuais obsoletas no macOS

O Chrome removeu o suporte para câmeras virtuais obsoletas em todas as versões do macOS compatíveis.

Bug de rastreamento #461717105 | Entrada do ChromeStatus.com

Remover extensão BMP para incorporação de JPEG ou PNG em BMP

O Chrome remove a extensão BMP para incorporação de JPEG ou PNG em BMP.

Bug de rastreamento nº 456842524 | Entrada do ChromeStatus.com | Especificação