Skip to content

Releases: harlan-zw/nuxt-seo

v5.1.3

12 Apr 03:44
Immutable release. Only release title and notes can be modified.
8006fd0

Choose a tag to compare

   🐞 Bug Fixes

    View changes on GitHub

v5.1.2

07 Apr 14:58
Immutable release. Only release title and notes can be modified.
1b36973

Choose a tag to compare

No significant changes

    View changes on GitHub

v5.1.1

07 Apr 13:16
Immutable release. Only release title and notes can be modified.
1108b5d

Choose a tag to compare

   🐞 Bug Fixes

    View changes on GitHub

v5.1.0

30 Mar 02:13
Immutable release. Only release title and notes can be modified.
ab12ca3

Choose a tag to compare

   🚀 Features

    View changes on GitHub

v5.0.0

26 Mar 16:17
Immutable release. Only release title and notes can be modified.
96eb27c

Choose a tag to compare

Nuxt SEO v5 bumps every sub-module to a new major version (except OG Image, which stays on v6). The common thread is the Site Config v4 dependency; addressing those changes first will make the rest of the migration smooth.

For step-by-step upgrade instructions, see the v4 to v5 migration guide.

🛠️ DevTools Unity

image

The biggest change in v5 is that every Nuxt SEO module now shares a single DevTools foundation through our new shared DevTools layer (nuxtseo-layer-devtools).

Previously each module shipped its own DevTools client with inconsistent layouts, patterns, and capabilities. In v5, all DevTools clients extend a common Nuxt layer that provides:

  • Consistent layout and navigation across every module, with a module switcher to jump between them
  • Setup checklist that validates your configuration across all installed modules, flagging required and recommended actions
  • Built-in troubleshooting, update indicators, and production mode preview in every module
image

Nuxt SEO Utils gets a brand new DevTools client for the first time, and the DevTools for Robots, Sitemap, Schema.org, and Link Checker have all been revamped to use the shared layer.

image

🔗 ESLint Link Checking

Nuxt Link Checker v5 ships an ESLint integration with zero-config @nuxt/eslint support:

  • link-checker/valid-route (error): validates relative URLs match known routes with "did you mean?" suggestions
  • link-checker/valid-sitemap-link (warn): checks URLs exist in the sitemap
  • Scans Vue templates, TS/JS (navigateTo, router.push), and Markdown links

If you're using @nuxt/eslint, the rules are registered automatically. Otherwise, add them manually:

import linkChecker from 'nuxt-link-checker/eslint'

export default [
  linkChecker,
]

Example output when a link doesn't match any route:

error  Link "/abut" does not match any known route. Did you mean "/about"?  link-checker/valid-route

📱 Social Share Links

SEO Utils v8 introduces useShareLinks(), a composable for generating social sharing URLs (Twitter, Facebook, LinkedIn, WhatsApp, Telegram, Reddit, Pinterest, Email) with built-in UTM tracking.

<script setup lang="ts">
const links = useShareLinks({
  title: 'Check out Nuxt SEO v5!',
  twitter: { via: 'harlodev', hashtags: ['nuxt', 'seo'] },
  utm: { campaign: 'v5-launch' },
})
</script>

<template>
  <nav>
    <a :href="links.twitter">Share on X</a>
    <a :href="links.linkedin">Share on LinkedIn</a>
    <a :href="links.reddit">Share on Reddit</a>
  </nav>
</template>

🖼️ Favicon Generation CLI

New nuxt-seo-utils icons CLI command generates all favicon and icon variants from a single source image:

npx nuxt-seo-utils icons --source logo.svg

This generates favicon.ico, apple-touch-icon.png (180x180), and PNG icons at 16, 32, 192, and 512px from your source image in public/. Requires sharp as a dev dependency.

⚡ Inline Minification

SEO Utils v8 automatically minifies inline scripts and styles injected via useHead.

Before (what you write):

useHead({
  script: [{
    innerHTML: `
      // Track page view
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({
        'event': 'page_view',
        'page_path': window.location.pathname
      });
    `,
  }],
  style: [{
    innerHTML: `
      /* Critical above-the-fold styles */
      .hero {
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 100vh;
      }
    `,
  }],
})

After (rendered HTML):

<script>window.dataLayer=window.dataLayer||[];window.dataLayer.push({event:"page_view",page_path:window.location.pathname});</script>
<style>.hero{display:flex;align-items:center;justify-content:center;min-height:100vh}</style>

📄 definePageMeta Sitemap Config

Sitemap v8 lets you configure sitemap options directly in definePageMeta:

<script setup lang="ts">
definePageMeta({
  sitemap: {
    changefreq: 'daily',
    priority: 0.8,
  },
})
</script>

🌐 i18n Multi-Sitemap Improvements

Custom sitemaps are now auto-expanded per locale when using i18n multi-sitemap mode.

🐛 Debug Production Endpoints

Several modules now expose debug endpoints in production:

  • Robots: /__robots__/debug-production.json
  • Sitemap: /__sitemap__/debug-production.json
  • SEO Utils: /__nuxt-seo-utils

🏷️ Site Config Priority Constants

Named priority constants are now available via SiteConfigPriority.runtime, etc.

⚠️ Breaking Changes

All modules now depend on Site Config v4, which removes implicit site name inference, legacy site* runtime config keys, and several deprecated server-side APIs. Several Content v3 composables have also been renamed (e.g. asSitemapCollection()defineSitemapSchema()).

See the migration guide for the full list of breaking changes and how to address them.

🐞 Bug Fixes

SSR Memory Leaks Fixed

  • Schema.org: reactive scopes not being disposed
  • Site Config: computed refs in i18n plugin

i18n Fixes

  • Sitemap: base URL in multi-sitemap redirect, exclude filters with base URL/i18n prefixes, respect `autoI18n: false
  • SEO Utils: resolve fallback page titles from translation keys

Other Fixes

  • Schema.org: @id URLs now respect app.baseURL, Nuxt context preserved in computed refs
  • Robots: skipSiteIndexable now skips Disallow: / rules, route rules nullish guard
  • SEO Utils: error pages preserve user-defined titles, useServerSeoMeta takes precedence over site defaults
  • Sitemap: chunked sitemaps path resolution, Content v3 .navigation path filtering
  • Link Checker: serialize RegExp in excludeLinks for client-side filtering

📚 Live Examples

Every module now ships standalone examples in its repository. These are real Nuxt apps that stay in sync with the latest code, so they always reflect the current API.

Open any example directly in StackBlitz:

Module Examples
Robots basic, i18n, custom-rules
Sitemap basic, i18n, dynamic-urls
OG Image basic-satori, basic-takumi, content, i18n
Schema.org basic, blog, e-commerce
Link Checker basic, broken-links, skip-inspection
SEO Utils basic, breadcrumbs, meta-tags
Site Config basic, env-driven, multi-site

Because examples live alongside each module's source, they are always tested against the latest version and never fall out of date.

Module Version Summary

Module v4 v5
nuxt-site-config v3 v4
nuxt-seo-utils v7 v8
@nuxtjs/sitemap v7 v8
@nuxtjs/robots v5 v6
nuxt-schema-org v5 v6
nuxt-link-checker v4 v5
nuxt-og-image v6 v6 (no major change)

Changelog

   🐞 Bug Fixes

  • Deprecate asSeoCollection  -  by @harlan-zw (40d4f)
  • Add publish-packages input to reusable-nightly workflow  -  by @harlan-zw (a149d)
  • Make Playwright install non-fatal in reusable CI  -  by @harlan-zw (b55b7)
  • ci: Use >= version constraints and fix work...
Read more

v4.0.0

19 Mar 12:35
Immutable release. Only release title and notes can be modified.
ef6be66

Choose a tag to compare

This is a major release upgrading OG Image to v6 with a new Takumi renderer, multiple OG images per page, native Tailwind v4 support, and redesigned DevTools — plus stability fixes across Robots and Site Config.

Highlights

⚠️ Breaking Changes

✅ Upgrading

Our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe 

This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.

For OG Image v6, run the migration CLI:

npx nuxt-og-image migrate v6      

Full migration guide: https://nuxtseo.com/og-image/migration-guide/v6

📦 Module Updates

    v3.4.0...v4.0.0

v3.4.0

28 Jan 07:28
Immutable release. Only release title and notes can be modified.
52283ae

Choose a tag to compare

This release brings major updates to Robots and Sitemap with definePageMeta() integration, a new zeroRuntime sitemap mode, a redesigned sitemap.xsl, and improved i18n support across modules, plus stability fixes throughout.

Highlights:

✅ Upgrading

Our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe                                                                                                                                                                                                         

This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.

📦 Module Updates

Nuxt Robots (v5.6.4v5.7.0)
  • ✨ Robots definePageMeta integration
  • ✨ i18n support for custom route paths in allow/disallow expansion
  • 🐛 Fix runtime resolution bug on @nuxtjs/robots/util
  • 🐛 Fix useBotDetection() empty when ran client-side only
  • 🐛 Fix broken route rules for Nuxt v3
  • 🐛 Fix type augmentation / definitions rework
  • 🐛 Fix Content-Usage/Content-Signal parsing with spaces after commas
  • 🐛 Fix broken useRobotsRule type, prevent _robots.txt in final bundle
Nuxt Sitemap (v7.4.9v7.6.0)
  • zeroRuntime mode for fully static sitemap generation
  • ✨ Build-time hook sitemap:prerender:done
  • ✨ Support sitemap on definePageMeta
  • ✨ Sitemap.xsl redesign with light/dark mode and validation warnings
  • ✨ Nuxt Content collection filters and onUrl function
  • ✨ DevTools UI refresh
  • parseSitemapIndex() utility
  • ⚡ Optimized XML generation, faster entry resolution, precomputed filter functions
  • 🐛 Fix memory leak on recursive sitemap requests
  • 🐛 Fix discoverImages missing body
  • 🐛 Fix chunked sitemaps with sitemapsPathPrefix /
  • 🐛 Fix i18n custom route paths, don't extract alternatives when autoI18n enabled
  • 🐛 Fix h3 v2 resolution, sitemaps with slash in name
  • 🐛 Fix type augments / overrides rework
Nuxt Site Config (v3.2.11v3.2.19)
  • 🐛 Fix env support for internal origin URL resolution
  • 🐛 Fix getNitroOrigin resolution rework
  • 🐛 Fix DevTools broken build and 500 error
  • 🐛 Fix respect devServer.host
  • 🐛 Fix i18n possible memory leak
  • 🐛 Fix handle undefined import.meta.env

    View changes on GitHub

v3.3.0

12 Dec 00:11
Immutable release. Only release title and notes can be modified.
afa69a3

Choose a tag to compare

This release brings significant updates across all Nuxt SEO modules with new features for robots and sitemap, plus numerous stability improvements throughout the ecosystem.

Highlights:

✅ Upgrading

Our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe

This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.

📦 Module Updates

Nuxt Robots

https://github.com/nuxt-modules/robots/releases/tag/v5.5.5https://github.com/nuxt-modules/robots/releases/tag/v5.6.4

Nuxt Sitemap

https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.7https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.9

  • ✨ Chunking support with URL filtering
  • 🐛 Fix Windows unicode escape errors when reading sources
  • 🐛 Fix prerendering pages not consistently appearing in sources
  • 🐛 Fix robots meta rules respected during prerendering
  • 🐛 Fix XML spec compliance (snake_case for geo_location)

Nuxt Link Checker

https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.2https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.9

  • 🐛 Fix ignore all /_* paths
  • 🐛 Fix pages hang edge case
  • 🐛 Fix hanging when pages dir is missing
  • 🐛 JSON report only shows failing results
  • 🐛 Tree sort for markdown reports

Nuxt OG Image

https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.11https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.13

  • 🐛 Fix broken Google font mirror
  • 🐛 Fix WASM Satori API compatibility
  • 🐛 Fix _query params disrupting render path

Nuxt Schema.org

https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.9https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.10

  • 🐛 Fix zod as optional peer dep

Nuxt SEO Utils

https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.16https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.19

  • 🐛 Fix Vite plugin ordering
  • 🐛 Fix normalize incorrect BCP 47 locales

Nuxt Site Config

https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.7https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.11

  • 🐛 Fix redundant baseUrl warning in development
  • 🐛 Fix IPv6 address support in host parsing
  • 🐛 Fix safe runtime type generation

    v3.2.0...v3.3.0

v3.2.2

17 Sep 07:38
Immutable release. Only release title and notes can be modified.
4140f31

Choose a tag to compare

No significant changes

    View changes on GitHub

v3.2.1

17 Sep 05:38
Immutable release. Only release title and notes can be modified.
0e03063

Choose a tag to compare

No significant changes

    View changes on GitHub