Salvo indicação em contrário, as mudanças descritas abaixo se aplicam à versão mais recente do Canal Beta do Chrome para Android, Chrome OS, Linux, macOS e Windows. Veja uma lista completa dos recursos do Chrome 71 em ChromeStatus.com. O Chrome 71 está na fase Beta desde 25 de outubro de 2018.

Formato relativo internacional de data/hora

Na escrita (e na fala), frases como “ontem” ou “daqui a três meses” são comuns. No entanto, frases desse tipo não fazem parte das APIs de data e hora integradas. Para suprir essa necessidade, as bibliotecas oferecem funções de utilitários para proporcionar versões localizadas dessas frases. Para usar essas funções na Web, é preciso fazer o download de listas de palavras ou frases usuais de cada idioma compatível. Esse é um ponto negativo dessa abordagem, pois aumenta o tamanho do pacote e o tempo de download da biblioteca.

O Chrome 71 introduz a Intl.RelativeTimeFormat(), que transfere a carga para o mecanismo JavaScript. Veja como isso funciona com alguns exemplos.


const rtf = new Intl.RelativeTimeFormat('en');

rtf.format(3.14, 'second');
// → 'in 3.14 seconds'

rtf.format(-15, 'minute');
// → '15 minutes ago'

Essa nova API tem uma série de recursos que vão além do que é mostrado aqui, incluindo a recuperação de informações para vários idiomas, a manipulação de partes individuais de data ou hora (ou seja, formatToParts()), entre outros. Leia nosso artigo para saber mais.

Outros recursos desta versão

Adicionar FullscreenOptions

Agora, o método Element.requestFullscreen() pode ser personalizado no Android usando um parâmetro de opções alternativas. Seu parâmetro navigationUI permite escolher tornar a barra de navegação visível ou optar por um modo completamente imersivo no qual nenhum controle de user agent é mostrado até que um gesto seja realizado. Possíveis valores são "auto", "show" e "hide". Esse valor expressa a preferência de um aplicativo, no qual "auto" significa sem preferência. A IU prevalece sobre esse valor em todos os casos.

Adicionar a propriedade “persistent-storage” à Permission API

A propriedade "persistent-storage" é uma nova permissão da Permission API. O estado da permissão já pode ser consultado com navigator.storage.persisted(). Além disso, com essa mudança, navigator.permissions.query({name:"persistent-storage"}) também pode ser usado.

Eventos de zoom com gesto de pinça no touchpad Async

Os eventos de zoom com gesto de pinça no touchpad Async servem para melhorar o desempenho do zoom na página com gesto de pinça. Atualmente, o zoom com o gesto de pinça no touchpad expõe um evento de roda de controle que permite que JS o cancele. Com essa mudança, se o usuário não fizer o gesto de pinça no touchpad, de fato cancelando o evento de roda de controle, então os eventos de roda de controle seguintes não poderão ser cancelados. No entanto, o JavaScript não sabe qual roda de controle é a primeira na sequência. Assim, se quiser cancelar o zoom pelo gesto de pinça, será preciso cancelar todos os eventos desse tipo.

Suporte à fonte COLR/CPAL

O Chrome agora é compatível com as fontes COLR/CPAL, que são um tipo de fonte colorida OpenType composta por camadas de glifos geométricos vetoriais e informações da paleta de cores no glifo colorido final. Com essa mudança, o Chrome é compatível com três formatos de fonte colorida de multiplataforma, e as outras duas são CBDT/CBLC e SBIX. Como elas são baseadas em vetores, as fontes COLR/CPAL oferecem downloads mais rápidos e precisam de menos espaço de armazenamento. Um exemplo de fonte COLR/CPAL é a fonte colorida Twemoji.

Cor de gradiente CSS interrompe sintaxe de posição dupla

Adicionamos suporte à sintaxe de posição de parada a partir da especificação CSS Image Values and Replaced Content Module Level 4 (Módulo CSS4 dos valores CSS para imagens e conteúdo substituído). Atualmente, as cores recorrentes precisam de posições explícitas. Por exemplo:

linear-gradient(45deg, black 25%, black 50%, white 50%, white 75%)

para simplificar a definição de bandas de cor sólida, duas posições podem ser especificadas. Por exemplo:

linear-gradient(45deg, black 25% 50%, white 50% 75%)

Implemente os valores “left” e “right” para “text-underline-position”

Atualmente, no fluxo vertical de chinês e japonês, o lado em que o sublinhado aparece não é o mesmo em todos os navegadores. Para corrigir isso, o Chrome adicionou suporte para os valores 'left' e 'right' da propriedade 'text-underline-position'. Essa propriedade faz parte das especificações do Text Decoration do CSS3 (decoração de texto), que adiciona propriedades que implementam novos recursos de formatação de texto, como linhas, cores e estilo, incluindo 'text-underline-position'.

Módulos de JavaScript: Modo de credenciais padronizadas como “same-origin”

O modo padrão de credenciais das solicitações de script de módulo está mudando de "omit" para "same-origin", oferecendo credenciais para solicitações de script de módulo de mesma origem e seus scripts descendentes (importações estáticas e dinâmicas). O comportamento atual pode ser surpreendente, pois está desalinhado em relação a outros recursos de alto nível, como a Fetch API. Na arquitetura atual da plataforma da Web, isso causa uma segunda conexão do servidor. Isso é prejudicial para desenvolvedores que buscam reduzir a latência.

APIs TextEncoderStream e TextDecoderStream

A codificação e a decodificação de texto é compatível com streams para permitir a fácil conversão de streams de dados binários para texto e vice-versa. Os streams legíveis são um exemplo da utilidade disso. Com um objeto Response sem stream, response.body.text() retornará texto. Não há equivalente para o ReadableStream retornado pelo Response.Body, que só pode retornar bytes. Com a nova API, o corpo de uma resposta de streaming pode ser convertido para texto como: Response.Body.pipeThrough(new TextDecoderStream()).

Fullscreen API não prefixada

A Fullscreen API tem recursos para entrar e sair do modo tela cheia, assim como gerenciadores de evento para monitorar essas mudanças. O Chrome 15 era compatível com a versão prefixada da API. Essa atualização adiciona uma versão não prefixada da API.

MediaElement e MediaStream definidos somente para AudioContext

Agora, o Chrome só permite a criação de elementos MediaElementAudioSourceNode, MediaStreamAudioSourceNode e MediaStreamAudioDestinationNode usando AudioContext. Anteriormente, esses elementos podiam ser criados com OfflineAudioContext, mas isso não está em conformidade com as especificações. O comportamento com OfflineAudioContext não é bem definido e é contrário à natureza de tempo real dos próprios nós.

Melhorias de interoperabilidade

Melhorar a especificidade de :host, :host-context e ::slotted

O Chrome agora calcula a especificidade das pseudoclasses :host() e :host-context(), assim como dos argumentos de ::slotted(). Isso traz conformidade com a especificação Shadow DOM v1.
Lançar isso garantirá a interoperabilidade entre navegadores, já que outros navegadores têm ou lançarão isso nas versões estáveis.

Suspensões de uso e remoções

Ocasionalmente, o Chrome suspende, remove ou altera recursos para melhorar a interoperabilidade com outros navegadores. Esta versão do Chrome inclui as seguintes mudanças desse tipo.

SpeechSynthesis.speak removido sem ativação de usuário

O método speechSynthesis.speak() agora emite um erro se o documento não receber a ativação do usuário. Os sites têm abusado dessa API, já que ela é uma das únicas APIs restantes que não aderiu às políticas de reprodução automática no Chrome.

importScripts() removido de novos scripts após a instalação do service worker

Antes, um service worker podia usar importScripts() para importar qualquer script a qualquer momento. Após a mudança, um service worker só pode usar importScripts() em dois casos:
  • Antes de a instalação terminar (a partir da execução inicial do service worker até atingir o estado `installed`).
  • Após a instalação terminar, somente para scripts que já foram importados na fase anterior.

Versões prefixadas removidas de várias APIs

O Chrome removeu aliases não padrão em duas interfaces padrão amplamente compatíveis.

URL.createObjectURL removido de MediaStream

O método URL.createObjectURL() foi removido da interface MediaStream. Esse método ficou obsoleto em 2013 e foi substituído pela atribuição de streams a srcObject.

document.origin removido

A propriedade document.origin foi removida. Essa propriedade só foi implementada no Chromium e no WebKit. É redundante com self.origin, que pode ser usado em contextos de janela e trabalho e tem maior suporte.