Google Search Console and Next.js indexingSSR, 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
JSON-LD and Schema.org — business website SEO in Next.js (2026 guide)
9 min read
Stripe Customer Portal — subscriptions, webhooks and Next.js in 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