Next.js removes a lot of SEO plumbing, but it does not make search decisions for you. The same flexibility that makes it fast can also produce duplicated titles, client-rendered content, and bloated routes if nobody owns the details. This is the checklist we run before launch.
1. Unique metadata on every indexable URL
A template is useful for consistency, not for scaling duplicate titles. Every indexable page needs a distinct title, a description written for a human, a canonical URL, and Open Graph data that does not fall back to the homepage. Audit programmatic pages separately. City and service combinations are where duplication usually hides.
2. Confirm the content is in the HTML
Server components and static generation make it easier to ship content that crawlers can read immediately. Use client components for interaction, not for the headline, primary copy, or internal links. Check the raw HTML response with JavaScript disabled, then confirm the same content in Search Console. A page that requires a long client-side chain before showing its main copy is a page waiting to be misread.
3. Remove render-blocking weight
- Use next/font so fonts are self-hosted, subset, and swapped without external blocking requests.
- Preload the actual LCP image and serve responsive AVIF or WebP variants with fixed dimensions.
- Keep the hero content server-rendered and avoid loading a large animation library before it.
- Split heavy components by route and load media only when the user asks for it.
- Check third-party scripts: analytics, chat, and pixels belong after the page is useful, not before.
4. Make the sitemap and robots file truthful
Generate the sitemap from the same data that renders your routes. A sitemap full of redirects, noindex pages, or 404s wastes crawl attention. Keep robots.txt simple, reference the sitemap, and block only what you genuinely do not want indexed. Test both after every release.
5. Add structured data where it explains the page
Organization, Service, BreadcrumbList, FAQPage, and BlogPosting are useful when they match visible content. They are not a ranking shortcut, and mismatched markup is a liability. Validate the JSON-LD and keep it close to the page data so it does not drift.
6. Treat redirects and internal links as product work
A redesign is the most common way to lose organic traffic. Map every old URL to its new destination, avoid redirect chains, and update internal links to the final URL. Then crawl the site and fix orphan pages before launch, not after the traffic drop.
If you want this applied to your site, bring the URL to a strategy call and we will look at the crawl, metadata, and Core Web Vitals together.