February 11, 2026•3 min read••
Tags ▼
- nextjs
- seo
- app router
- web development
I used to think SEO issues came from missing tools.
Most of the time, they came from inconsistency.
One route changed but canonical didn’t.
Sitemap included URLs that no longer existed.
Titles got updated, descriptions didn’t.
If you run a content site with Next.js App Router, SEO is less about hacks and more about discipline.
This is the workflow I now use to keep indexing predictable.
Every page has three URLs that should agree:
alternates.canonicalopenGraph.urlWhen one of these drifts, trust drops. Search engines and social previews start disagreeing.
The fix is simple: treat route changes as metadata changes by default.
Sitemaps should describe reality, not history.
/articles, /notes, /docs)This one change solved a surprising amount of crawl confusion on my side.
I keep this range because it works well for readability and snippets:
Not because it is magic, but because it forces clarity.
If a description is 700 characters, it is usually trying to do too much.
I stopped treating internal links as “later.”
Now, every new piece ships with:
## Related reading sectionIt helps users discover more, and it helps crawlers understand structure.
yarn validate:content yarn validate:seo yarn build
This catches most regressions before production:
On App Router projects, SEO failures are usually process failures, not framework failures.
Keep routes, metadata, sitemap, and links in sync and indexing gets much more stable.
No. The core workflow here relies on consistent metadata, canonical URLs, internal links, and validation commands you already run in the project.
Run it every time you publish or significantly update content. Consistency is more important than complexity.
Start with yarn validate:seo, then run yarn validate:content, and finish with yarn build.
Follow on your preferred channel for new articles, notes, and experiments.