DEV Community

Cover image for Aprenda a fazer SEO no NextJs
André Peixoto
André Peixoto

Posted on

Aprenda a fazer SEO no NextJs

Bom meu camarada, aqui eu não vou explicar o que é SEO, o objetivo é mostrar como o Next resolve um problema do React quando falamos em SEO.


1° Ponto Importante

No React a renderização é CSR (Client Side Rendering), ou seja, a renderização do seu site é feita do lado do cliente, mas você pode perguntar, qual o problema disso?

Veja esse gráfico

CSR Render

Nesse processo, existem 3 principais problemas pro SEO


1» Velocidade de Carregamento

A renderização do lado do cliente pode ser mais lenta, o que pode afetar a velocidade de carregamento da página e prejudica o ranqueamento do Google.

2» Conteúdo "Invisível"

O Google pode ter dificuldade em rastrear o conteúdo da página gerado dinamicamente pelo JavaScript, o que pode afetar a capacidade de indexação da página.

3» URL Dinâmicas

A renderização do lado do cliente pode resultar em URL dinâmicas, o que pode prejudicar a capacidade do Google de rastrear e indexar a página.

Bom, agora veja esse outro gráfico, essa é a renderização SSR (Server Side Rendering), que por padrão é usado no NextJs.

SSR Render

Compare o passo 3 entre os dois métodos.

No SSR a página já foi renderizada pelo Next, mas ainda não está interativa, mas pro queridinho SEO a leitura e rastreamento da página já está funcionando.


Bom, até aqui sem novidades, o Next faz isso por padrão, mas eu queria apenas deixar clara as diferenças.

Mas você pergunta, e como melhorar meu SEO?

No Next você tem um arquivo chamado head.tsx (.js ou .jsx) e nele você define as metatags. E esse arquivo pode ser diferente em cada página e pode inclusive passar os parâmetros por Props

Essa é uma técnica que gosto bastante, criar um arquivo de tags globais, pois você vai usar em toda estrutura do site e todas as páginas, pode ser viewpoint e favicon por exemplo, mas você pode acrescentar outras que façam sentido no seu projeto, veja como ficaria.

export default function GlobalTags() {
  return (
    <>
      <meta content="width=device-width, initial-scale=1" name="viewport" />
      <link rel="icon" href="/favicon.ico" />
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode

No seu arquivo head.tsx você importa o GlobalTags e cria as metatags específicas daquela página.

import GlobalTags from "./globalTags";

export default function Head() {
  return (
    <>
      <GlobalTags/>
      <title>André Peixoto | Front End Developer</title>
      <meta name="description" content="André Peixoto | Front End Developer" />
      <meta property="og:title" content="Front-End Developer | André Peixoto" />
      <meta
        property="og:description"
        content="Um desenvolvedor apaixonado por design, responsividade e performance."
      />
      <meta property="og:type" content="website" />
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)