Pular para o conteúdo principal

11 publicações com a etiqueta "javascript"

Ver todas as etiquetas

jsdom ou happy-dom? Vantagens, desvantagens e um benchmark que você consegue reproduzir

· 10 min para ler
Bruno Carneiro
Fundador da @TautornTech
jsdom vs happy-dom

Todo projeto front-end com Vitest chega nessa pergunta em algum momento: environment: 'jsdom' ou environment: 'happy-dom'?

A resposta que circula por aí é "happy-dom é 2 a 4 vezes mais rápido". Fui atrás de onde vem esse número e, na maioria dos artigos, ele não tem código, não tem metodologia e não tem versão. Então resolvi medir.

Montei uma suíte com 240 testes de componentes React, rodei nos dois ambientes, em configurações diferentes do Vitest, várias vezes. Também testei 20 APIs e comportamentos do navegador nos dois pra ver o que cada um realmente implementa. O resultado tem uma surpresa: a configuração do Vitest pesa mais que a escolha da biblioteca.

Temporal e o fim do new Date() (e dos bugs de data que a gente aceitou por 30 anos)

· 14 min para ler
Bruno Carneiro
Fundador da @TautornTech
Temporal API no JavaScript

Todo dev JavaScript tem uma história com Date. O relatório que mostrava o dia anterior. O vencimento que pulou de 31 de janeiro pra 3 de março. A data de nascimento que mudou de dia quando o usuário estava em outro fuso. O moment de 300KB instalado só pra somar um mês.

O Date foi criado em 1995, em poucos dias, copiado do java.util.Date. O próprio Java depreciou boa parte dela pouco tempo depois. O JavaScript ficou com ela por 30 anos.

Isso acabou. Em março de 2026 o Temporal chegou ao Stage 4 no TC39 e virou parte do ECMAScript 2026. Já roda sem flag no Chrome, no Edge, no Firefox e no Node 26.

Esse artigo é sobre o que de fato melhorou. Com exemplo real, rodando, lado a lado com o new Date().

Rodando IA direto no browser com TensorFlow.js

· 9 min para ler
Bruno Carneiro
Fundador da @TautornTech

Machine learning sempre pareceu algo distante do frontend — Python, servidores potentes, GPUs caríssimas. Mas isso mudou. Hoje é possível rodar um modelo de IA treinado diretamente no browser, com zero backend, usando JavaScript puro e a GPU do próprio usuário.

Este artigo explica como isso funciona na prática, usando o TensorFlow.js como base — e como apliquei isso em um projeto chamado SeeFood, um classificador que resolve o maior problema da humanidade: saber se o que você está prestes a comer é um hot dog ou não.

Detectando imports circulares com Madge (e travando regressões no lint)

· 9 min para ler
Bruno Carneiro
Fundador da @TautornTech
Diagrama ilustrativo de um ciclo de imports entre módulos TypeScript

Quem já passou horas caçando um undefined no meio de um bundle ou um comportamento estranho só em produção sabe como uma corrente de imports mal resolvida pode virar dor de cabeça. Um dos culpados frequentes é o import circular: o módulo A importa B, B importa C, e em algum lugar da cadeia alguém importa de novo o A — fechando um ciclo.

Isso é uma maravilha, o build funciona, o projeto roda local mas na hora de subir da pau! \o/

Eu já vi isso em projeto pequeno e em projeto grande; a diferença é só o tamanho do problema que você vai enfrentar. Da pra ver a dor de cabeça com o Madge e isso salva vida!

Pra travar o typescript é uma beleza circular import.