React 19.3 e o browser(): o fim do useEffect(() => setMounted(true))
· 12 min para ler
Se você já trabalhou com React e renderização no servidor (SSR), com certeza já escreveu isso aqui:
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
if (!mounted) return null;
Ou essa outra versão, que parece mais simples e é pior:
if (typeof window === 'undefined') return null;
As duas existem pelo mesmo motivo: alguns componentes simplesmente não têm o que mostrar no servidor. Eles dependem do localStorage, do fuso horário do usuário, do tamanho da tela, de uma biblioteca que mexe no window. E o React nunca teve um jeito oficial de dizer "esse aqui, só no navegador".
No React 19.3, lançado em 9 de setembro de 2026, isso mudou. Chegou o browser().
