Chrome 147

Data de lançamento da versão estável:7 de abril de 2026

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

CSS e interface

Transições de visualização no escopo do elemento

Expõe element.startViewTransition() em elementos HTML arbitrários. O elemento estabelece um escopo para a transição, o que significa que os pseudoelementos de transição são afetados por clipes e transformações ancestrais, e várias transições em elementos separados podem ser executadas simultaneamente.

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

CSS contrast-color()

Essa função ajuda você a atender aos requisitos de contraste para acessibilidade.

Você pode usar a função contrast-color() em qualquer lugar do CSS em que um valor de cor seja esperado. Ele usa um argumento de valor de cor e retorna "black" ou "white", dependendo de qual oferece o maior contraste com o argumento de cor.

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

Intervalo nomeado da linha do tempo scroll

Esse recurso expande o conjunto de intervalos nomeados para linhas do tempo de visualização adicionando um intervalo scroll ao conjunto atual de entry, exit, cover e contain.

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

Propriedade CSS border-shape

A propriedade CSS border-shape permite criar bordas não retangulares com qualquer forma arbitrária, por exemplo, um polígono, um círculo ou um shape().

Embora border-shape aceite as mesmas formas que clip-path, ele é fundamentalmente diferente. border-shape define o formato da borda, decora e corta apenas a parte interna.

border-shape tem duas variantes: uma que traça uma forma e outra que preenche entre duas formas.

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

Interface CSSPseudoElement

A interface CSSPseudoElement representa um pseudoelemento em JavaScript.

CSSPseudoElement é retornado de Element.pseudo(type), em que type é atualmente ::after, ::before ou ::marker. CSSPseudoElement é um objeto proxy que representa um pseudoelemento. Ao contrário de um pseudoelemento, um CSSPseudoElement sempre existe.

O CSSPseudoElement tem os seguintes atributos e métodos:

  • O atributo type é uma string que representa o tipo do pseudoelemento.
  • O atributo element é o elemento de origem final do pseudo-elemento.
  • O atributo parent é o elemento de origem do pseudoelemento (Element ou CSSPseudoElement para pseudoelementos aninhados).
  • O método pseudo(type) recupera pseudoelementos aninhados.

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

Pseudodestino em eventos

Eventos específicos agora incluem um .pseudoTarget, que é CSSPseudoElement (se a interação foi com um pseudoelemento) ou null.

Isso fornece informações mais específicas sobre a origem do evento. Por exemplo, ele indica que um pseudoelemento ::after foi clicado, e não apenas o elemento de origem final (Event.target). Observe que Event.target permanece inalterado. Portanto, o evento só tem informações extras sobre a interação do pseudoelemento.

Os eventos são UIEvent, AnimationEvent e TransitionEvent.

mouseover, mouseout, mouseenter, mouseleave e os equivalentes pointer* ainda não são compatíveis.

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

Desvincular propriedades *-width e *-style

O Chrome 147 se alinha às especificações de CSS atualizadas para o comportamento das propriedades border-width, outline-width e column-rule-width. Antes, se o border-style, outline-style ou column-rule-style correspondente fosse definido como none ou hidden, a largura calculada dessas propriedades seria forçada a 0px, independente do valor especificado.

Com essa mudança, os valores calculados de border-width, outline-width e column-rule-width sempre refletem os valores especificados pelo autor, independente da propriedade *-style. Além disso, os valores resolvidos (retornados por getComputedStyle()) para outline-width e column-rule-width também refletem os valores especificados.

Essa mudança alinha o Chrome ao Firefox e ao WebKit, que já implementaram esse comportamento.

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

Suporte ao atributo path no elemento SVG <textPath>

Essa mudança adiciona suporte ao atributo path no elemento SVG <textPath>. Isso permite que os desenvolvedores definam a geometria do caminho de texto inline usando dados de caminho SVG e reduz a necessidade de elementos <path> definidos separadamente.

O elemento <textPath> resolve a geometria do caminho de texto usando as seguintes regras:

  1. Se path e href estiverem presentes, a geometria será resolvida pelo atributo path.
  2. Se apenas o atributo path estiver presente e for analisado com êxito, a definição de caminho inline será usada.
  3. Se o atributo path estiver ausente ou não for analisado, e um atributo href for fornecido, o elemento <path> referenciado será usado como substituto.
  4. O comportamento atual do href não muda.

Essa implementação segue a definição do atributo path em <textPath> da especificação SVG 2. O comportamento de resolução é consistente com outros mecanismos de navegador, o que melhora a interoperabilidade e a conformidade com os padrões. Observação: quando path e href são especificados em <textPath>, path tem precedência, de acordo com a especificação SVG 2.

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

Dispositivo

Detecção de planos do WebXR

Com a API WebXR Plane Detection, os sites podem recuperar o conjunto de planos detectados no ambiente do usuário. Isso dá menos trabalho para os desenvolvedores e é mais eficiente do que usar o recurso WebXR de detecção de profundidade. Por exemplo, planos como paredes que são ocluídos por objetos ainda podem ser totalmente representados se o sistema souber dos limites da parede. Um mapa de profundidade mostraria a parede, mas os objetos na frente dela a quebrariam, possivelmente obscurecendo o escopo total da parede. Além disso, as informações de rotulagem semântica são expostas quando o dispositivo reconhece esses rótulos e eles se encaixam em categorias predefinidas, o que fornece um conhecimento melhor sobre o mundo.

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

DOM

Adiciona suporte a tipos de módulo JSON e de estilo como destinos <link rel="modulepreload">. O <link rel="modulepreload"> já é compatível com o Chromium (consulte o recurso do Chromestatus), mas no momento, ele só é compatível com scripts de módulos semelhantes a scripts de pré-carregamento. Esse recurso resolve uma lacuna de funcionalidade porque os scripts de módulo JSON e CSS são compatíveis em outros lugares do Chromium, mas não como destinos <link rel="modulepreload">. É possível pré-carregar módulos de estilo com <link rel="modulepreload" as="style" href="..."> e módulos JSON com <link rel="modulepreload" as="json" href="...">.

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

Análise XML em Rust para cenários não XSLT

Implementa o analisador XML do Rust para cenários em que não é necessário processamento XSLT.

O analisador XML Rust melhora a segurança eliminando bugs de corrupção de memória na análise XML. Ele substitui o uso de libxml2 (escrito em C) por uma alternativa segura.

Estamos descontinuando o XSLT. Enquanto esse processo continua, você já pode usar a análise XML segura do Rust em cenários em que o XSLT não é necessário.

Bug de rastreamento nº 466303347 | Entrada do ChromeStatus.com

Gráficos

Camadas WebXR

As camadas WebXR oferecem uma maneira mais eficiente de desenhar conteúdo imersivo.

Além de oferecer suporte a texturas nativas de cor e profundidade e matrizes de textura, ele também oferece suporte a diferentes tipos de camadas gerenciadas pelo compositor do sistema (em vez de JavaScript).

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

JavaScript

Math.sumPrecise

Implementa uma proposta do TC39 para adicionar um método de soma de vários valores em JavaScript.

Adicione um método Math.sumPrecise que usa iteráveis e retorna a soma dos valores no iterável usando um algoritmo mais preciso do que a soma simples.

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

Rede / Conectividade

Request.isReloadNavigation atributo

Adiciona o atributo booleano somente leitura isReloadNavigation à interface Request da API Fetch. Esse atributo indica se a solicitação de navegação atual foi iniciada como uma recarga acionada pelo usuário (por exemplo, usando o botão Atualizar, location.reload() ou history.go(0)). Esse indicador é exposto principalmente no objeto Request em um FetchEvent do service worker.

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

Desempenho

Atualizar os limites da API Device Memory

Atualizações para um novo conjunto de valores possíveis da API Device Memory:

  • Android: 1, 2, 4, 8
  • Outros: 2, 4, 8, 16, 32. Esses valores substituem os antigos 0,25, 0,5, 1, 2, 4 e 8, que ficaram desatualizados.

Isso reduz os riscos de impressão digital na extremidade inferior porque os recursos do dispositivo melhoraram desde que foram definidos. Ele também permite um uso e uma segmentação melhores de dispositivos sofisticados, conforme solicitado pelos desenvolvedores. Para mais informações, consulte Problema de memória do dispositivo.

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

Acesso à rede local (LNA)

Para mais informações sobre o LNA, consulte Acesso à rede local.

Restrições de acesso à rede local no service worker WindowClient.navigate()

As restrições de acesso à rede local (LNA, na sigla em inglês) foram adicionadas recentemente para impedir que sites façam solicitações unilaterais para redes e dispositivos locais. Essas restrições foram adicionadas para solicitações de busca iniciadas pelo service worker, mas não para navegações que os service workers realizam por WindowClient.navigate().

Esse lançamento preenche essa lacuna adicionando restrições de LNA às chamadas WindowClient.navigate(). Ele usa o WindowClient como iniciador da navegação para determinar se ela é uma solicitação de LNA.

Isso só se aplica se o WindowClient sendo navegado for um subframe. No momento, o Chrome não aplica restrições de LNA em navegações de frame principal.

Entrada do ChromeStatus.com

Restrições de acesso à rede local para WebTransport

Restringe a capacidade de fazer solicitações para a rede local do usuário usando WebTransport, que é protegida por uma solicitação de permissão.

Uma solicitação de rede local é qualquer solicitação de um site público a um endereço IP local ou loopback, ou de um site local (por exemplo, uma intranet) a loopback. Restringir a capacidade dos sites de fazer essas solicitações por trás de uma permissão reduz a capacidade dos sites de usar essas solicitações para criar uma impressão digital da rede local do usuário.

Essa permissão é restrita a contextos seguros.

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

Restrições de acesso à rede local para WebSockets

As restrições de acesso à rede local (LNA, na sigla em inglês) estão sendo expandidas para incluir WebSockets. As conexões WebSockets com endereços locais agora acionam solicitações de permissão.

Todas as políticas corporativas atuais da LNA ainda se aplicam às restrições de WebSockets da LNA (LocalNetworkAccessAllowedForUrls, LocalNetworkAccessBlockedForUrls e LocalNetworkAccessRestrictionsTemporaryOptOut).

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

Apps isolados da Web (IWA)

API Web Printing

Essa API permite uma integração mais profunda com a funcionalidade relacionada à impressora em Apps Isolados da Web.

Essa API é destinada apenas a Apps Isolados da Web e segue o processo de Apps Isolados da Web.

Essa API oferece um conjunto de métodos JavaScript que permitem aos desenvolvedores consultar impressoras locais, enviar trabalhos de impressão para as impressoras mais adequadas e gerenciar opções e status de trabalhos de impressão. Para representar esses conceitos, ele usa nomes e semântica de atributos das especificações do protocolo de impressão via Internet (IPP).

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

Testes de origem

Pré-renderizar iframes entre origens

Pré-renderiza iframes de origem cruzada usando um cabeçalho de resposta de ativação.

Os navegadores agora pré-renderizam todos os frames de origem cruzada se a resposta HTTP do frame de nível superior incluir Supports-Loading-Mode: prerender-cross-origin-frames.

Teste de origem | Bug de rastreamento nº 440387014 | Entrada do ChromeStatus.com | Especificação

Evento de preenchimento automático

O preenchimento automático é um recurso essencial da Web que reduz o atrito para milhões de usuários todos os dias. No entanto, para que o preenchimento automático funcione de maneira confiável com formulários dinâmicos em várias implementações, é necessário um esforço significativo.

Esse recurso adiciona um evento autofill que permite aos desenvolvedores modificar os formulários para ajustar os dados preenchidos automaticamente e notificar o navegador quando isso for feito.

Teste de origem | Bug de rastreamento nº 466333215 | Entrada do ChromeStatus.com | Especificação

WebNN

A WebNN permite que aplicativos e frameworks da Web aproveitem os serviços nativos do sistema operacional para machine learning e os recursos de hardware disponíveis no computador de um usuário. Isso ajuda a implementar experiências de ML consistentes, eficientes e confiáveis na Web.

Teste de origem | Bug de rastreamento nº 40206287 | Entrada do ChromeStatus.com | Especificação

Descontinuações e remoções

Remover XSLT inline para produção de SVG

Um arquivo XML especialmente criado pode conter uma folha de estilo XSL que transforma dados XML genéricos em um arquivo SVG.

Por exemplo, consulte gist.github.com.

Esse é um caso especial de processamento XSLT que, de acordo com os contadores de uso XSLPIInSVGImage (ID do UseCounter 5777) e XSLPIInSVGStandaloneDoc (ID do UseCounter 5778) introduzidos recentemente, consideramos praticamente inexistente na Web. Queremos descontinuar e remover o XSLT antes de desativá-lo completamente.

Isso será lançado em sincronia com o teste experimental do analisador XML baseado em Rust. Isso não será implantado imediatamente em 100% no Chrome 147.

Bug de rastreamento nº 482223009 | Entrada do ChromeStatus.com