O Firefox 155 chegou estável em 1º de setembro com uma combinação que gosto bastante: melhorias que não pedem uma nova arquitetura, mas removem pequenas irritações do trabalho diário. O DevTools passou a entender NDJSON e o CSS ganhou um attr() bem mais útil que o velho truque de gerar texto em content.
NDJSON deixa de parecer um arquivo quebrado
NDJSON, também chamado JSON Lines, guarda um objeto JSON completo por linha. É um formato conveniente para logs, exportações grandes e respostas transmitidas aos poucos: o consumidor processa cada registro sem esperar um array inteiro fechar.
{"level":"info","requestId":"a1","message":"started"}
{"level":"error","requestId":"a1","status":502}
{"level":"info","requestId":"b7","message":"finished"}
Antes, abrir esse conteúdo no visualizador de JSON podia resultar em erro, porque três objetos consecutivos não formam um documento JSON único. No Firefox 155, o JSON Viewer reconhece tipos MIME de NDJSON e arquivos .jsonl. Cada linha vira uma estrutura recolhível, e uma linha malformada é marcada no lugar sem impedir a inspeção das demais.
Essa tolerância é particularmente útil em diagnóstico. Um evento truncado no meio de uma transferência não deveria esconder os 30 mil registros válidos que vieram antes. Ainda é preciso servir um tipo de conteúdo adequado; depender apenas da extensão nem sempre existe numa resposta HTTP.
attr() agora alimenta propriedades de verdade
Durante anos, attr() ficou associado a content: attr(data-label). A implementação nova permite usar o valor de um atributo em qualquer propriedade CSS, com tipo, unidade e fallback. Isso aproxima dados simples do HTML da apresentação sem exigir uma variável inline ou um script só para transferir um número.
<div class="meter" data-progress="72"></div>
.meter {
width: calc(attr(data-progress type(<number>), 0) * 1%);
}
O exemplo exato depende do tipo e da propriedade escolhidos, e a validação continua sendo do CSS. Atributo ausente ou valor incompatível precisa de fallback. Também não é convite para colocar regra de negócio em data-*: o ganho está em componentes declarativos pequenos, nos quais o dado já pertence ao elemento.
Outras peças interessantes do CSS
A versão também habilita style queries em container queries e acrescenta as funções progress() e alpha(). A primeira normaliza um valor dentro de um intervalo, útil para interpolar estilos. A segunda ajusta o canal alfa de uma cor com uma sintaxe própria. São ferramentas expressivas, mas ainda pedem verificação de compatibilidade antes de entrar num componente compartilhado.
No DevTools, a emulação de mídia ganhou um painel dedicado e incluiu prefers-reduced-motion. Isso tira uma desculpa comum para testar animação apenas no estado padrão. Se o componente usa movimento para comunicar mudança, o modo reduzido precisa conservar o significado sem obrigar o usuário a acompanhar a coreografia.
Como adotar sem criar uma surpresa multibrowser
- Use NDJSON no DevTools imediatamente; é uma melhoria da ferramenta.
- Trate
attr()ampliado como progressive enhancement enquanto sua matriz de navegadores não cobrir a sintaxe. - Defina um valor CSS convencional antes da declaração nova quando o fallback visual for aceitável.
- Teste valores ausentes, inválidos e extremos nos atributos.
Firefox 155 não muda a forma de construir a web de uma vez. Ele melhora dois pontos de contato: o dado que o desenvolvedor precisa inspecionar e o dado simples que um elemento pode expor ao CSS. É o tipo de release que começa discreto e, algumas semanas depois, faz o fluxo antigo parecer desnecessariamente trabalhoso.
