injection if any field contains user content — the one sharp edge of dangerouslySetInnerHTML here. Because it renders server-side from the same data as the page, it can't drift from visible content — which is also Google's requirement (markup must match what users see). What it buys: not ranking, but rich results — product price/rating snippets, FAQ dropdowns, article carousels, breadcrumbs, event cards — which move click-through significantly. Validate with the Rich Results Test; typed schemas via schema-dts catch shape mistakes at compile time. Honest caveat: eligibility ≠ guarantee — Google decides per-query whether to show rich results."}},{"@type":"Question","name":"How does i18n routing work in the App Router?","acceptedAnswer":{"@type":"Answer","text":"The App Router has no built-in i18n config (that was the Pages Router); the standard pattern is an explicit [lang] segment plus middleware for detection. Every localized route lives under app/[lang]/..., the layout receives lang via params and sets , and dictionaries load server-side so translation strings never bloat the client bundle — a genuinely underrated RSC win. Middleware handles the entry experience: parse Accept-Language (with a proper negotiator library), check a locale cookie for returning users, and redirect /pricing → /de/pricing: (code example) The SEO-critical rules: locale detection applies only to locale-less entry URLs — never auto-redirect between localized URLs based on IP or headers, because Googlebot crawls mostly from the US and would only ever see your English site. Each locale must have its own stable, crawlable URL. Libraries like next-intl package this pattern plus formatting; generateStaticParams over locales × slugs keeps localized pages static."}},{"@type":"Question","name":"How do hreflang and canonical work together in Next?","acceptedAnswer":{"@type":"Answer","text":"Both live in the alternates metadata field. Canonical declares \"this URL is the definitive version of this content\" (self-referencing on unique pages, pointing at the primary version on parameter/duplicate variants). hreflang declares \"these are the *language* variants of this content\" so Google serves German users the German URL instead of treating variants as duplicates: (code example) With metadataBase set these emit absolute tags. Rules examiners probe: hreflang must be reciprocal — every variant lists every other variant (including itself), or Google ignores the cluster; each variant's canonical is self-referencing, never pointing across languages (canonicalizing German to English tells Google to drop the German page — the classic i18n-SEO bug); x-default names the fallback for unmatched locales. For large sites, hreflang can move into the sitemap instead of per-page tags — same semantics, easier auditing."}},{"@type":"Question","name":"How do search params, faceted navigation, and infinite scroll interact with SEO in Next?","acceptedAnswer":{"@type":"Answer","text":"Search params are where crawl budget dies. A listing page with sort × filter × page params generates a combinatorial URL space of near-duplicates; left alone, crawlers burn budget on ?sort=price&color=red&page=47 instead of your new content. Next-specific handling: reading searchParams in a page makes it dynamically rendered — fine, but each variant is a distinct URL to a crawler. Defenses: canonical pointing at the clean base URL from generateMetadata (which receives searchParams), noindex on low-value combinations, and representing crawl-worthy facets (category, maybe brand) as path segments with real pages while relegating the rest to params. Infinite scroll is the other trap: content loaded by client-side fetch on scroll is invisible to a crawler that doesn't scroll. The robust pattern is paginated URLs (/blog/page/2) that server-render, with infinite scroll as progressive enhancement layered on top — every item reachable through crawlable links. navigation helps here generally: real in the HTML is what crawlers follow; button-driven router.push navigation is a dead end to them. Senior summary: \"SSR makes each URL crawlable; information architecture decides whet"}}]}