Um mismatch significa que o HTML renderizado no servidor não bate com o primeiro render do cliente. As causas de sempre são datas e formatação de locale, valores aleatórios, ler window ou localStorage durante o render, e aninhamento de HTML inválido que o navegador conserta em silêncio. Leia o diff que o React loga para achar o nó, e então mova o valor para um efeito para que o primeiro render bata, ou renderize aquela parte só no cliente.
Por que os entrevistadores perguntam isso
Erros de hidratação são um rito de passagem para quem faz renderização no servidor, e a resposta mostra se você já entregou isso. O entrevistador quer uma abordagem sistemática em vez de um dar de ombros e um suppressHydrationWarning. Ele também está checando se você sabe por que mismatches importam, já que o React descarta o markup do servidor daquela subárvore e pode deixar event handlers presos nos nós errados.
Como estruturar sua resposta
- Defina o mismatch como HTML do servidor contra o primeiro render do cliente.
- Liste os suspeitos de sempre em ordem de probabilidade.
- Descreva como você estreita a busca a partir do diff logado.
- Dê os consertos corretos e quando suprimir é aceitável.
Exemplo de resposta
Primeiro eu leio o erro direito, porque o React 19 te dá um diff decente mostrando qual nó divergiu, e isso normalmente já basta para nomear o culpado. Depois eu passo pelos suspeitos. Qualquer coisa baseada em tempo é a número um, então uma data formatada ou um timestamp relativo renderizado no servidor num segundo e no cliente em outro. Depois formatação de locale e fuso horário, porque o servidor é quase sempre UTC. Depois ids aleatórios ou Math.random num componente. Depois qualquer coisa lendo window, matchMedia ou localStorage durante o render, o que é comum com alternadores de tema. E por fim aninhamento inválido, tipo uma div dentro de um p, onde o navegador conserta o HTML antes de o React ver. O conserto depende de qual for. Para valores que são genuinamente só do cliente eu renderizo um placeholder estável no servidor e defino o valor real num efeito, ou carrego aquele pedaço com lazy load e renderização no servidor desligada. Eu só recorro ao suppressHydrationWarning numa folha isolada como um timestamp, nunca num wrapper.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Por que um hydration mismatch é pior do que só um aviso no console?
- Como você lidaria com um alternador de tema que lê o localStorage?
- O que o React faz com o HTML do servidor de uma subárvore que deu mismatch?
Mais perguntas para Desenvolvedor React
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas