Chrome 148: Prompt API leva um modelo de linguagem local para a web, e o CSS ganha força

O Chrome 148 chegou ao canal estável em 5 de maio de 2026, para Android, ChromeOS, Linux, macOS e Windows. Lendo as notas de lançamento, dá para separar a versão em duas histórias: uma de inteligência artificial rodando dentro do navegador e outra de CSS ficando mais expressivo. As duas interessam a quem constrói para a web, então vale olhar com calma.

Prompt API: um modelo de linguagem fornecido pelo navegador

O destaque é a Prompt API. Ela dá a desenvolvedores web acesso a um modelo de linguagem fornecido pelo próprio navegador e executado no dispositivo. A primeira versão aceita entrada de texto, imagem e áudio, e permite restringir a resposta a formatos definidos por expressão regular ou por JSON Schema.

Esse último ponto é o que mais me anima. Quem já tentou extrair dados estruturados de um modelo sabe quanto código defensivo vai em “e se o JSON vier quebrado?”. Com a restrição aplicada na geração, a página pode pedir uma classificação, uma extração de campos ou um resumo em formato fixo e confiar mais na forma do que volta. Não elimina validação, mas muda o tipo de erro com que você lida.

Também há um origin trial para parâmetros de amostragem da Prompt API, temperature e topK. Ou seja: o básico está no estável, e o ajuste fino ainda está em teste.

O impacto prático é rodar tarefas leves de IA sem mandar dados para um servidor, sem custo por token e sem depender de rede. O lado menos bonito é que isso amarra a funcionalidade a um modelo que você não escolhe e que só existe nesse navegador, então detecção de recurso e um caminho alternativo continuam obrigatórios.

CSS: menos boilerplate e mais controle da cascata

Do lado do CSS, a versão traz várias melhorias pequenas que se somam:

  • Container queries só por nome. @container agora pode casar apenas pelo container-name, sem exigir um container-type. Antes o tipo era obrigatório.
  • at-rule() dentro de @supports. Permite detectar se o navegador suporta uma at-rule específica.
  • Palavra-chave revert-rule. Faz a cascata voltar para a regra anterior que casava, parecido com revert-layer. As notas destacam que ela combina bem com if(), para descartar uma regra quando uma condição falha.
  • text-decoration-skip-ink: all. Aplica o “skip ink” a todos os glifos, inclusive CJK, que o valor auto pula.
  • avar2. A versão 2 da tabela avar das fontes variáveis deixa um eixo de variação influenciar outro, o que permite “meta sliders” e arquivos de fonte menores.

Um exemplo simples: estilizar cards só por estarem dentro de um container chamado sidebar, sem declarar container-type:

.sidebar {
  container-name: sidebar;
}

@container sidebar {
  .card {
    font-size: 0.875rem;
  }
}

Fora do CSS puro, o atributo loading chegou a <video> e <audio>: loading="lazy" adia o carregamento da mídia até o elemento se aproximar da viewport, como já acontecia com <img> e <iframe>. É um ganho de performance quase gratuito em páginas com muita mídia.

Android, WebGPU e autenticação

A Web Serial API chegou ao Android, incluindo dispositivos USB e Bluetooth que emulam porta serial. O SharedWorker foi reativado no Android enquanto o comportamento de ciclo de vida do processo é investigado, e o construtor agora aceita extendedLifetime: true, que mantém o worker vivo depois que todos os clientes descarregam.

No WebGPU, linear_indexing adiciona dois valores built-in para compute shaders. No WebAuthn, o modo Immediate UI do navigator.credentials.get() mostra a interface de login se houver credencial conhecida ou rejeita com NotAllowedError se não houver, o que facilita decidir rapidamente entre passkey e formulário tradicional. E a localização do manifest permite traduzir nome, descrição, ícones e atalhos de web apps de acordo com o idioma do usuário.

Origin trials para acompanhar

A lista de origin trials é longa e dá pistas de para onde a plataforma vai: Container Timing (um atributo containertiming que reporta quando uma seção marcada é pintada pela primeira vez), HTML-in-canvas (desenhar elementos em contextos 2D, WebGL e WebGPU), Connection Allowlists (o servidor envia uma lista de conexões permitidas por cabeçalho HTTP), declarative CSS module scripts para shadow roots declarativos, um elemento HTML para instalar web apps e o OpaqueRange, que representa um trecho vivo de texto dentro de um campo de formulário. Origin trials são experimentos: servem para testar e dar feedback, não para construir produto em cima.

Minha leitura

A Prompt API no estável é o tipo de mudança que parece pequena no changelog e grande na prática. Saída restrita por JSON Schema transforma o modelo local em um componente previsível, e não só em um chatbot embutido. Mas eu trataria como aprimoramento progressivo: detectar, usar quando existir e cair para outra solução quando não existir.

No CSS, revert-rule e as container queries por nome são aquelas melhorias que você só percebe que faziam falta depois de usar. Se eu tivesse que escolher uma coisa para testar esta semana, seria o loading="lazy" em vídeos, porque o ganho é imediato e o risco é praticamente zero.

Fontes