Why App Router SEO is different
Next.js App Router gives you first-class metadata APIs, static generation, and streaming. For a service business, every commercial page can ship unique titles, canonicals, and structured data without bolting on a separate SEO plugin layer.
Treat SEO as product engineering: stable URLs, honest markup, fast HTML, and content clusters that match how buyers search.
Metadata that actually helps
Use a shared metadata helper so every route consistently sets:
- Unique title and description (no template-only titles)
- Canonical URL on the primary host
- Open Graph and Twitter cards for sharing
- Robots directives (
noindexon thin, private, or error pages)
Avoid a root canonical that accidentally points every page back to /. Spot-check rendered <head> on staging after layout refactors.
Sitemaps, robots, and indexable surfaces
Ship a dynamic sitemap.js that lists only live public URLs, and a robots.js that points crawlers to it. Keep legal pages (/privacy, /terms) indexable — they are trust signals.
Do not index preview, staging, or search-result pages. Duplicate URL patterns (trailing slash vs not) should resolve to one canonical form.
Structured data without spam
Add Organization, Service, FAQ, Breadcrumb, and Article schema where the visible page content supports it. Never invent reviews, ratings, or FAQs that users cannot see. Quality systems punish fabricated markup.
Core Web Vitals basics for SEO pages
- One clear LCP element (hero heading or primary image)
- Reserved space for images and fonts (
next/font,next/image) - Less client JavaScript above the fold
- Server-rendered indexable marketing copy
Lab scores guide engineering. Field data decides ranking impact — prioritize pages that already get traffic.
Internal linking
Connect service landers, case studies, and blog posts with descriptive anchors. Orphan pages rarely rank and rarely convert. A simple cluster map beats random footer links.
Takeaway
XYRONEXT builds web and custom software sites where SEO is part of delivery — not a punch list after launch.