Google Search Console and Next.js indexing, SSR, SSG and sitemap in 2026

google search console5 min readJuly 20, 2026

Author: DevStudio.it

TL;DR

Your Next.js site looks fine in the browser but Google does not index subpages, in 2026 the usual causes are missing sitemap, noindex in metadata, client-only rendering without HTML in the first response and wrong canonicals across locales. Below: GSC setup, URL Inspection step by step, sitemap.ts in App Router, SSR/SSG checklist and common errors after deploy on DevStudioIT Cloud.

Who this is for

  • Marketing seeing “Discovered, currently not indexed” in Search Console
  • Next.js developers (App Router) responsible for technical SEO
  • Companies after migration or redesign with organic traffic drop
  • Multilingual site owners with hreflang issues

Keyword (SEO)

google search console indexing nextjs, url inspection sitemap, nextjs ssg ssr seo 2026, site not indexed google

GSC, first steps after deploy

  1. Add property (domain example.com or URL prefix https://www.example.com)
  2. Verify DNS TXT or HTML file, record stays permanently
  3. Submit /sitemap.xml under Sitemaps
  4. Check Pages → Indexed vs Not indexed (filter by reason)
  5. For key URLs: URL Inspection → “Test live URL” → “Request indexing”

Do not spam “Request indexing” for hundreds of URLs, Google has daily limits. Prioritize: homepage, services, top blog, campaign landings.

URL Inspection, reading results

Status Meaning Typical action
URL is on Google OK Monitor CTR in Performance
Crawled, currently not indexed Quality / duplicate / thin Strengthen content, canonical
Discovered, not indexed Crawl budget / internal links Menu links, sitemap
Excluded by ‘noindex’ Tag in HTML Remove robots: { index: false }
Soft 404 Empty page to Google Content + 200, not fake 404
Redirect error Redirect chain Max 1 hop 301

“View crawled page” → HTML tab: does Google see H1 and paragraphs, or only empty <div id="root">?

Next.js App Router, metadata and indexability

Server Components render HTML server-side by default, good for SEO. Problems start with 'use client' on the entire page without SSR fallback.

// app/en/services/page.tsx
import type { Metadata } from 'next';

export const metadata: Metadata = {
  title: 'Services, DevStudio.it',
  description: 'Corporate websites and Next.js apps for business.',
  alternates: {
    canonical: 'https://www.example.com/en/services',
    languages: {
      pl: 'https://www.example.com/pl/oferta',
      en: 'https://www.example.com/en/services',
      de: 'https://www.example.com/de/leistungen',
    },
  },
  robots: { index: true, follow: true },
};

export default function ServicesPage() {
  return (/* server-rendered content */);
}

Avoid global noindex on staging, env leak to production is a classic. On DevStudioIT Cloud (devstudioit.cloud) staging uses a separate domain with robots.txt Disallow all.

SSR vs SSG vs ISR, what Google prefers

Strategy Next.js Indexing When
SSG generateStaticParams Fastest crawl, stable HTML Blog, services, FAQ
SSR dynamic = 'force-dynamic' OK, slower crawl Dashboard, personalization
ISR revalidate: 3600 OK, cache + freshness Case study listing
CSR only entire page client Risk empty HTML Avoid on SEO URLs

Corporate sites and blogs: SSG/ISR for 95% of URLs. SSR only where content depends on session.

Sitemap in App Router

// app/sitemap.ts
import { MetadataRoute } from 'next';
import { getBlogPosts } from '@/lib/content';
import { locales } from '@/i18n';

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const base = 'https://www.example.com';
  const staticPaths = ['', '/services', '/contact'];

  const entries: MetadataRoute.Sitemap = [];

  for (const locale of locales) {
    for (const path of staticPaths) {
      entries.push({
        url: `${base}/${locale}${path}`,
        lastModified: new Date(),
        changeFrequency: path === '' ? 'weekly' : 'monthly',
        priority: path === '' ? 1 : 0.8,
      });
    }
  }

  const posts = await getBlogPosts();
  for (const post of posts) {
    entries.push({
      url: `${base}/${post.locale}/blog/${post.slug}`,
      lastModified: post.updated,
    });
  }

  return entries;
}

Submit in GSC: https://www.example.com/sitemap.xml. With ISR the sitemap refreshes on build, no manual entry per post (per project README).

robots.txt

// app/robots.ts
import { MetadataRoute } from 'next';

export default function robots(): MetadataRoute.Robots {
  return {
    rules: { userAgent: '*', allow: '/', disallow: ['/api/', '/admin/'] },
    sitemap: 'https://www.example.com/sitemap.xml',
  };
}

Check GSC → Settings → robots.txt tester. Blocking /api/ is OK; blocking /_next/ only if you know why (Google needs JS/CSS).

Multilingual and hreflang

Same translationId in blog frontmatter (e.g. google-search-console-indexing-nextjs-2026) plus alternates.languages in metadata = consistent hreflang. Error: PL page canonical points to EN, Google indexes one version, rest show “Duplicate without user-selected canonical”.

Dynamic data (forms) in Branchly (branchly.cloud) does not affect crawl, public pages must not require login.

Core Web Vitals and indexing

CWV is not a direct “index switch”, but slow mobile LCP lowers crawl efficiency. After deploy on DevStudioIT Cloud:

  • next/image with priority on LCP
  • Font display: swap
  • Avoid layout shift under cookie banner

GSC → Experience → Core Web Vitals, fix “Poor” URLs before mass request indexing.

Diagnostics, 10 checks when “nothing gets indexed”

  1. curl -I URL, 200, not 403/401
  2. View source, H1 in HTML (not only after hydration)
  3. Search site:example.com, how many pages indexed
  4. GSC Coverage, dominant exclusion reason
  5. noindex / X-Robots-Tag in headers
  6. Canonical points to another domain (staging leak)
  7. Sitemap contains 404 URLs
  8. Redirect loop www/apex
  9. Content <300 words on key landings
  10. No internal links to new subpages

FAQ

How long after request indexing?

From hours to 2 weeks, depends on domain authority. New domain slower than refresh on established one.

Does Google index Next.js JavaScript?

Yes, rendering queue. SSR/SSG gives faster, more reliable results than pure CSR.

Separate sitemap per locale?

One sitemap with all URLs + hreflang in metadata is enough for most projects.

Should /api/ be in sitemap?

No, do not index API. Only public HTML pages.

Staging on DevStudioIT Cloud, avoid indexing?

Basic auth, noindex in metadata, separate subdomain + Disallow in robots. Never same canonical as production.

CTA

Next.js site missing from Google or GSC shows hundreds of errors?

Related posts

Sitemap.xml and RSS Feed in Next.js App Router, Technical SEO 2026
6 min read
FAQPage Schema and Rich Results, When Google Shows FAQs (2026)
5 min read
robots.txt in Next.js App Router, Crawl Budget and Disallow Pitfalls (2026)
5 min read

About the author

We build fast websites, web/mobile apps, AI chatbots and hosting setups — with a focus on SEO and conversion.

Recommended links

From theory to production — Branchly, our hosting stack and shipped work.

Like how we think? Let's build something together.

Start project configuration