---
title: "The 2026 SEO Checklist for Nuxt & Vue"
description: "The SEO mistakes that silently kill rankings in Nuxt and Vue apps. Interactive checklist covering pre-launch, post-launch, AI discovery, and ongoing monitoring with framework-specific guides."
canonical_url: "https://nuxtseo.com/learn-seo/checklist"
last_updated: "2026-03-24"
---

<key-takeaways>

- 53% of websites fail Core Web Vitals. Sites that pass rank measurably higher on competitive queries
- AI discovery (ChatGPT, Perplexity, Gemini) requires explicit opt-in via llms.txt and structured data; skip it and LLMs will never cite you
- The gap between "Crawled, currently not indexed" and page one is usually 3 to 5 technical fixes, most under 10 minutes each
- A [pre-launch warmup](/learn-seo/pre-launch-warmup) started 6 to 8 weeks early can cut time to first organic traffic in half

</key-takeaways>

Most SEO problems aren't strategic. They're missed checkboxes: a `noindex` tag left over from staging, a sitemap that excludes half your pages, meta descriptions copy-pasted across every route. This checklist catches those mistakes before they cost you months.

Every item links to a framework-specific guide. For full walkthroughs, see Getting Indexed for [Nuxt](/learn-seo/nuxt/launch-and-listen/going-live) or [Vue](/learn-seo/vue/launch-and-listen/going-live).

<callout title="Do this right now" type="warning">

Open your deployed site and hit "View Source." If your meta tags and content aren't visible in the raw HTML, crawlers see an empty page. This is the single most common reason Vue and Nuxt apps fail to rank.

</callout>

## Pre-Launch Checklist

<checklist id="seo-prelaunch-ssr" title="SSR & Rendering">

- SSR implemented or prerendering configured ([Nuxt](/learn-seo/nuxt/routes-and-rendering/rendering) · [Vue](/learn-seo/vue/routes-and-rendering/rendering))
- Route rules configured for special cases (hybrid rendering, static pages)
- Hydration errors resolved (check browser console for mismatches, see debugging guides for [Nuxt](/learn-seo/nuxt/launch-and-listen/debugging) · [Vue](/learn-seo/vue/launch-and-listen/debugging))
- "View Source" tested on deployed site (meta tags and content visible in raw HTML)
- SSR framework chosen if using Vue SPA ([framework comparison](/learn-seo/vue/ssr-frameworks))

</checklist>

<checklist id="seo-prelaunch-meta" title="Meta Tags & AI Readiness">

- Page titles configured per route, under 60 chars, descriptive and unique ([Nuxt](/learn-seo/nuxt/mastering-meta/titles) · [Vue](/learn-seo/vue/mastering-meta/titles))
- Meta descriptions set per page, under 160 chars, actionable and unique ([Nuxt](/learn-seo/nuxt/mastering-meta/descriptions) · [Vue](/learn-seo/vue/mastering-meta/descriptions))
- Social sharing tags configured (OG image, Twitter Card) ([Nuxt](/learn-seo/nuxt/mastering-meta/open-graph) · [Vue](/learn-seo/vue/mastering-meta/social-sharing))
- Schema.org structured data added for applicable content types ([Nuxt](/learn-seo/nuxt/mastering-meta/schema-org) · [Vue](/learn-seo/vue/mastering-meta/schema-org))
- llms.txt configured for AI crawlers ([Nuxt](/learn-seo/nuxt/controlling-crawlers/llms-txt) · [Vue](/learn-seo/vue/controlling-crawlers/llms-txt))
- Meta tags tested in [Google Rich Results Test](https://search.google.com/test/rich-results) and [Facebook Debugger](https://developers.facebook.com/tools/debug/)

</checklist>

<checklist id="seo-prelaunch-urls" title="URL Structure">

- URL structure uses hyphens (not underscores), lowercase paths, descriptive slugs ([Nuxt](/learn-seo/nuxt/routes-and-rendering/url-structure) · [Vue](/learn-seo/vue/routes-and-rendering/url-structure))
- Trailing slashes handled consistently: pick one style, redirect the other ([Nuxt](/learn-seo/nuxt/routes-and-rendering/trailing-slashes) · [Vue](/learn-seo/vue/routes-and-rendering/trailing-slashes))
- Dynamic routes configured with unique meta per route param ([Nuxt](/learn-seo/nuxt/routes-and-rendering/dynamic-routes) · [Vue](/learn-seo/vue/routes-and-rendering/dynamic-routes))
- Query parameters excluded from indexing via canonicals ([Nuxt](/learn-seo/nuxt/routes-and-rendering/query-parameters) · [Vue](/learn-seo/vue/routes-and-rendering/query-parameters))
- Pagination uses self-referencing canonicals ([Nuxt](/learn-seo/nuxt/routes-and-rendering/pagination) · [Vue](/learn-seo/vue/routes-and-rendering/pagination))
- 404 pages return proper 404 status code, not 200 soft 404 ([Nuxt](/learn-seo/nuxt/routes-and-rendering/404-pages) · [Vue](/learn-seo/vue/routes-and-rendering/404-pages))

</checklist>

<checklist id="seo-prelaunch-crawlers" title="Crawler Control">

- robots.txt configured, including AI agent permissions ([Nuxt](/learn-seo/nuxt/controlling-crawlers/robots-txt) · [Vue](/learn-seo/vue/controlling-crawlers/robots-txt))
- XML sitemap generated with all indexable pages ([Nuxt](/learn-seo/nuxt/controlling-crawlers/sitemaps) · [Vue](/learn-seo/vue/controlling-crawlers/sitemaps))
- Canonical URLs set on every page ([Nuxt](/learn-seo/nuxt/controlling-crawlers/canonical-urls) · [Vue](/learn-seo/vue/controlling-crawlers/canonical-urls))
- Meta robots tags configured for noindex pages ([Nuxt](/learn-seo/nuxt/controlling-crawlers/meta-tags) · [Vue](/learn-seo/vue/controlling-crawlers/meta-tags))
- Redirects use 301 status codes, no redirect chains ([Nuxt](/learn-seo/nuxt/controlling-crawlers/redirects) · [Vue](/learn-seo/vue/controlling-crawlers/redirects))
- Duplicate content resolved: www vs non-www, query parameters ([Nuxt](/learn-seo/nuxt/controlling-crawlers/duplicate-content) · [Vue](/learn-seo/vue/controlling-crawlers/duplicate-content))

</checklist>

<checklist id="seo-prelaunch-security" title="Security">

- HTTPS configured with valid SSL certificate
- Security headers set (CSP, X-Frame-Options, HSTS) without blocking crawlers ([Nuxt](/learn-seo/nuxt/routes-and-rendering/security) · [Vue](/learn-seo/vue/routes-and-rendering/security))
- No sensitive data exposed in HTML source or robots.txt

</checklist>

<checklist id="seo-prelaunch-performance" title="Performance">

- Images optimized with lazy loading and descriptive alt text ([Nuxt](/learn-seo/nuxt/mastering-meta/alt-text) · [Vue](/learn-seo/vue/mastering-meta/alt-text))
- **INP (Interaction to Next Paint)** optimized: break up long tasks, use `scheduler.yield()`
- Critical CSS inlined, non-critical CSS deferred
- JavaScript code-split by route
- Fonts preloaded (WOFF2 format)
- CDN configured for static assets

</checklist>

<checklist id="seo-prelaunch-authority" title="Authority & Pre-Launch Warmup">

- Pre-launch warmup started: domain active, landing page deployed, GSC property created ([guide](/learn-seo/pre-launch-warmup))
- Internal linking structure reviewed: no orphan pages, all key pages reachable within 3 clicks ([Nuxt](/learn-seo/nuxt/routes-and-rendering/internal-linking) · [Vue](/learn-seo/vue/routes-and-rendering/internal-linking))
- [Backlinks](/learn-seo/backlinks) and cross-links from existing properties pointing to new site

</checklist>

## Post-Launch Checklist

<checklist id="seo-postlaunch-gsc" title="Google Search Console">

- GSC property created and verified ([Nuxt](/learn-seo/nuxt/launch-and-listen/search-console) · [Vue](/learn-seo/vue/launch-and-listen/search-console))
- Sitemap submitted via GSC ([Nuxt](/learn-seo/nuxt/controlling-crawlers/sitemaps) · [Vue](/learn-seo/vue/controlling-crawlers/sitemaps))
- URL Inspection tool tested on key pages (check rendered HTML)
- Page Indexing report reviewed: resolve "Crawled - currently not indexed" and "Discovered - currently not indexed"
- IndexNow configured for instant content change notifications ([Nuxt](/learn-seo/nuxt/launch-and-listen/indexnow) · [Vue](/learn-seo/vue/launch-and-listen/indexnow))

</checklist>

<checklist id="seo-postlaunch-indexing" title="Indexing Verification">

- Indexing status checked for important pages (`site:yoursite.com` in Google) ([Nuxt](/learn-seo/nuxt/launch-and-listen/indexing-issues) · [Vue](/learn-seo/vue/launch-and-listen/indexing-issues))
- Rendered HTML verified via URL Inspection tool (meta tags appear in rendered output)
- Soft 404 errors resolved (404 pages must return 404 status, not 200)
- No "Duplicate without user-selected canonical" errors in GSC
- Orphan pages linked from sitemap or internal navigation

</checklist>

<checklist id="seo-postlaunch-ai" title="AI Discovery & Citations">

- AI Mode impressions monitored in GSC Performance report ([Nuxt](/learn-seo/nuxt/launch-and-listen/search-console) · [Vue](/learn-seo/vue/launch-and-listen/search-console))
- Content tested in [ChatGPT](https://chatgpt.com), [Perplexity](https://perplexity.ai), and [Gemini](https://gemini.google.com) (verify citation accuracy)
- Brand mentions tracked on authoritative third-party sites

</checklist>

<checklist id="seo-postlaunch-cwv" title="Performance & Core Web Vitals">

- Core Web Vitals passing p75 thresholds: LCP ≤2.5s, **INP ≤200ms**, CLS ≤0.1 ([Nuxt](/learn-seo/nuxt/launch-and-listen/core-web-vitals) · [Vue](/learn-seo/vue/launch-and-listen/core-web-vitals))
- Mobile-first indexing verified (use Mobile-Friendly Test)
- Real user metrics (RUM) monitored via web-vitals library or speed insights

</checklist>

<checklist id="seo-postlaunch-social" title="Social Sharing">

- OG images tested in [Facebook Debugger](https://developers.facebook.com/tools/debug/) (clear cache if needed)
- Twitter Cards validated (compose tweet without posting to preview card)
- Slack and Discord link previews tested (OG tags control unfurls)

</checklist>

<checklist id="seo-postlaunch-analytics" title="Analytics">

- Analytics configured (GA4, Plausible, Fathom, or Umami) ([Nuxt](/learn-seo/nuxt/launch-and-listen/seo-monitoring) · [Vue](/learn-seo/vue/launch-and-listen/seo-monitoring))
- SPA tracking set up if applicable (router change events fire pageview events)
- Conversion tracking enabled for key user actions

</checklist>

## Ongoing Monitoring

SEO degrades silently. A plugin update breaks your schema markup, a deploy adds `noindex` to a template, a redirect chain forms over three months of URL changes. These tasks catch regressions before they compound.

<checklist id="seo-ongoing-weekly" title="Weekly Tasks">

- GSC Performance report reviewed (track impressions, clicks, CTR, **AI citations**)
- Page Indexing report checked for new errors
- **p75 INP** monitored for responsiveness regressions
- Broken links scanned

</checklist>

<checklist id="seo-ongoing-monthly" title="Monthly Tasks">

- SEO monitoring tools reviewed ([Nuxt](/learn-seo/nuxt/launch-and-listen/seo-monitoring) · [Vue](/learn-seo/vue/launch-and-listen/seo-monitoring))
- Competitor rankings and AI citation share tracked
- Content gaps identified (check GSC for queries where you rank #5-#20, or use [gscdump's striking-distance analysis](https://gscdump.com) which auto-filters to positions 4-20 sorted by potential clicks)
- Backlink profile reviewed (identify new links, lost links, disavow spam if needed)

</checklist>

<checklist id="seo-ongoing-quarterly" title="Quarterly Tasks">

- Full technical SEO audit (crawl site with [Screaming Frog](https://screamingfrog.co.uk) or Sitebulb)
- Redirect chains audited and flattened
- Internal link audit performed: orphan pages, crawl depth, broken links ([Nuxt](/learn-seo/nuxt/routes-and-rendering/internal-linking) · [Vue](/learn-seo/vue/routes-and-rendering/internal-linking))
- Structured data updated for deprecated types (Google removes schema types periodically)
- Canonical URL configuration verified (GSC shows user-declared vs Google-selected canonical)
- llms.txt updated with new documentation sections

</checklist>

<checklist id="seo-ongoing-changes" title="After Major Changes">

- Site migration checklist followed if domain or URL structure changed ([Nuxt](/learn-seo/nuxt/launch-and-listen/site-migration) · [Vue](/learn-seo/vue/launch-and-listen/site-migration))
- IndexNow or URL submission used for urgent updates ([Nuxt](/learn-seo/nuxt/launch-and-listen/indexnow) · [Vue](/learn-seo/vue/launch-and-listen/indexnow))
- Redirects tested after URL structure changes (301s in place, no 404s)
- GSC URL Inspection re-run on changed pages
- Search rankings monitored weekly for 60 days post-migration

</checklist>

## Mistakes That Cost Months

These aren't edge cases. Each one regularly costs sites months of lost traffic, even when the content itself is strong.

<callout title="Ignoring INP" type="danger">

Interaction to Next Paint replaced FID as the primary responsiveness metric. High INP tanks competitive rankings. Break up long tasks, use `scheduler.yield()`, and watch your p75 weekly.

</callout>

<callout title="Accidentally blocking AI bots" type="danger">

One stray `Disallow: /` for AI crawlers in robots.txt and ChatGPT, Perplexity, and Gemini will never cite you. [Check your robots.txt](/learn-seo/nuxt/controlling-crawlers/robots-txt) now.

</callout>

<callout title="Soft 404s" type="warning">

Your 404 page must return a 404 status code, not a 200. Google treats soft 404s as low quality indexed pages that dilute crawl budget.

</callout>

<callout title="Template meta descriptions" type="warning">

"Welcome to <span>

page

</span>

" hurts CTR across your entire site. Write one unique sentence per page. Even a short, specific description outperforms a generic template.

</callout>

<callout title="Redirect chains" type="warning">

A→B→C dilutes authority and wastes crawl budget. Flatten to A→C. Audit quarterly.

</callout>

## Automate the Hard Parts

Tooling handles half of this checklist. Let the framework do the work so you can focus on content and authority.

### Nuxt

One command covers most of the pre-launch checklist automatically:

```bash
npx nuxi module add @nuxtjs/seo
```

The [Nuxt SEO module](/docs/nuxt-seo/getting-started/introduction) sets up XML sitemaps, robots.txt (with AI crawler rules), schema.org via `useSchemaOrg()`, canonical URLs, trailing slash normalization, and OG image generation. See the full [Nuxt SEO learning path](/learn-seo/nuxt) for details on every item.

### Vue

Vue SPAs need explicit setup. Your options: [prerendering](/learn-seo/vue/spa/prerendering), [dynamic rendering](/learn-seo/vue/spa/dynamic-rendering), or an [SSR framework](/learn-seo/vue/ssr-frameworks). See the full [Vue SEO learning path](/learn-seo/vue).

Coming from vue-meta? The [migration guide](/learn-seo/vue/mastering-meta/migrating-vue-meta) covers switching to Unhead.

## What's Next

**Launching soon?** The [Pre-Launch Warmup](/learn-seo/pre-launch-warmup) guide shows how to build domain authority 6 to 8 weeks before launch so Google already trusts you on day one.

**Already live?** Start with the post-launch section above. Highest impact first: submit your sitemap to [Search Console](https://search.google.com/search-console), verify SSR rendering, and fix soft 404s.

**Want to verify right now?** These free tools catch the most common issues in minutes:

- [Meta Tag Checker](/tools/meta-tag-checker): Are your titles, descriptions, and OG tags rendering?
- [XML Sitemap Validator](/tools/xml-sitemap-validator): Does your sitemap include all indexable pages?
- [Schema Validator](/tools/schema-validator): Will Google accept your structured data?
- [Social Share Debugger](/tools/social-share-debugger): How do your links look on Twitter, Slack, and Discord?

**Building habits?** Bookmark this page. The weekly, monthly, and quarterly sections above keep your SEO from quietly degrading.
