# Nuxt SEO
> Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines.
Canonical Origin: https://nuxtseo.com
## LLM Resources
- [Full Content](https://nuxtseo.com/llms-full.txt)
Complete page content in markdown format.
- [MCP](https://nuxtseo.com/mcp)
Model Context Protocol server endpoint for AI agent integration.
## Pages
### /tools
Source: https://nuxtseo.com/tools
Description: Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines.
Nuxt SEO on GitHub
h1. **SEO Tools **
Developer utilities for technical SEO. Free tools, no signup required.
h2. **SEO Audit**
Validate your markup, check your meta tags, and debug social sharing.
[
**Meta Tag Checker **
Check title length, meta description & OG tags. Preview Google SERP appearance.](https://nuxtseo.com/tools/meta-tag-checker) [**Schema.org Validator **
Free structured data validator for JSON-LD & Microdata. Check rich results eligibility.](https://nuxtseo.com/tools/schema-validator) [**Social Share Debugger **
Preview and debug social share cards across Twitter, Facebook, LinkedIn, and more.](https://nuxtseo.com/tools/social-share-debugger)
h2. **Technical SEO**
Generate configs, validate sitemaps, and convert content formats.
[**Robots.txt Generator **
Free robots.txt generator with AI bot blocking. Block GPTBot, ClaudeBot & 20+ crawlers.](https://nuxtseo.com/tools/robots-txt-generator) [**Robots.txt Validator **
Check your robots.txt for syntax errors, AI signals, and verify bot access rules.](https://nuxtseo.com/tools/robots-txt-validator) [**XML Sitemap Validator **
Free sitemap checker with index support. Validate URLs, detect duplicates & errors.](https://nuxtseo.com/tools/xml-sitemap-validator) [**HTML to Markdown **
Convert any webpage or HTML to clean Markdown for Nuxt Content or LLMs.](https://nuxtseo.com/tools/html-to-markdown)
h2. **Pro Tools**
Keyword research, SERP analysis, and domain intelligence. 2 free requests/day.
[**Keyword Research ****Pro **
Find keyword opportunities with volume, difficulty, and intent data.](https://nuxtseo.com/tools/keyword-research) [**SERP Analyzer ****Pro **
See who ranks for any keyword and what SERP features are present.](https://nuxtseo.com/tools/serp-analyzer) [**Domain Rankings ****Pro **
Check what keywords any domain ranks for in Google.](https://nuxtseo.com/tools/domain-rankings)
---
### /
Source: https://nuxtseo.com/
Description: Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines.
Nuxt SEO on GitHub
h1. *Fully equipped*** **Technical SEO** for busy **Nuxters**. **
An ecosystem built to help Nuxt developers win at SEO. 8 production ready [**modules **](https://nuxt.com/modules), 10 free tools, and education resources.
[**Get Started **](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction) [** Install Nuxt SEO **](https://nuxtseo.com/docs/nuxt-seo/getting-started/installation)
terminal
$ npx nuxt module add **seo**
6 modulesvia @nuxtjs/seo
[Robots **v6.0.6**8.7M515 Tame the robots crawling and indexing your site with ease.](https://nuxtseo.com/docs/robots/getting-started/introduction)
[Sitemap **v8.0.11**10M420 Powerfully flexible XML Sitemaps that integrate seamlessly.](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
[Schema.org **v6.0.4**3.9M185 The quickest and easiest way to build Schema.org graphs.](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
[SEO Utils **v8.1.5**2.2M123 SEO utilities to improve your Nuxt sites discoverability and shareability.](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
[OG Image **v6.3.2**3.7M531 Generate OG Images with Vue templates in Nuxt.](https://nuxtseo.com/docs/og-image/getting-started/introduction)
[SEO Utils **v8.1.5**2.2M123 SEO utilities to improve your Nuxt sites discoverability and shareability.](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
[Link Checker **v5.0.6**2.8M98 Find and magically fix links that may be negatively effecting your SEO.](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
h2. **Nuxt SEO Principles **
h3. **Delightful Developer Experience**
Full featured modules that do everything you expect and more.
h3. **Zero Config Defaults**
Provide a site URL and all modules are good to go. Fully extensible with config and hooks.

h3. **Integrate with Ecosystem**
Modules integrate with themselves as well as Nuxt Content, Nuxt I18n and Nuxt DevTools.
h3. **For Apps All Shapes and Sizes **
**Single Page**
**Server-Side Generated**
**Server-Side Rendered**
**Multi-tenancy**
**Base URL**
**Trailing Slashes**
h2. **Learn SEO **
Comprehensive guides for technical SEO with code examples and best practices.
[**Nuxt SEO Guide **
Meta tags, sitemaps, robots.txt, Schema.org, and more. Everything you need for Nuxt applications. - Mastering Meta Tags - Controlling Web Crawlers - Routes & Rendering Modes](https://nuxtseo.com/learn-seo/nuxt) [**Vue SEO Guide **
SPA SEO challenges, SSR frameworks comparison, Unhead integration, and Core Web Vitals optimization. - SPA SEO Solutions - SSR Framework Comparison - Vue SEO Checklist](https://nuxtseo.com/learn-seo/vue)
h2. **Free SEO Tools **
Developer-focused tools to debug, validate, and optimize your site's SEO.
[**Schema.org Validator**
Free structured data validator for JSON-LD & Microdata. Check rich results eligibility.](https://nuxtseo.com/tools/schema-validator)
[**XML Sitemap Validator**
Free sitemap checker with index support. Validate URLs, detect duplicates & errors.](https://nuxtseo.com/tools/xml-sitemap-validator)
[**Meta Tag Checker**
Check title length, meta description & OG tags. Preview Google SERP appearance.](https://nuxtseo.com/tools/meta-tag-checker)
[**Social Share Debugger**
Preview how links appear on Twitter, Facebook, LinkedIn, Slack & Discord.](https://nuxtseo.com/tools/social-share-debugger)
[**Robots.txt Generator**
Free robots.txt generator with AI bot blocking. Block GPTBot, ClaudeBot & 20+ crawlers.](https://nuxtseo.com/tools/robots-txt-generator)
[**HTML to Markdown**
Convert any webpage or HTML to clean Markdown for Nuxt Content or LLMs.](https://nuxtseo.com/tools/html-to-markdown)
[**Keyword Research**
**Pro ** Find long-tail opportunities with volume & difficulty data.](https://nuxtseo.com/tools/keyword-research)
[**SERP Analyzer**
**Pro ** See who ranks for any keyword. Analyze AI Overview & SERP features.](https://nuxtseo.com/tools/serp-analyzer)
[**Domain Rankings**
**Pro ** Check keyword positions, search volume & estimated traffic.](https://nuxtseo.com/tools/domain-rankings)
[**View All Tools **](https://nuxtseo.com/tools)
h2. **Technical SEO Audits **
Nuxt SEO provides you with with all the tools needed to help you pass technical SEO audits on Google Lighthouse.
SEO
h2. **Up To Date. Always. **
Nuxt SEO was started at the end of 2022 and has received continuous bug fixes and feature improvements from the community.

7.6K
Commits
1.3K
Issues Closed
106
Contributors
h2. **Loved by Nuxt Developers **
Nuxt SEO was built for the community. Here's what some of them have to say.
_**Israel Ortuño**@IsraelOrtuno_
> I've been doing technical SEO for years, always liked it. With @nuxt_js SEO is way easier. It's a gem in the ecosystem. Amazing job by @harlan_zw.
_**Ju Nogueira**@nogueiraju_
> Nuxt SEO by @harlan_zw. Makes my life a lot easier.
_**Estéban**@soubiran__
> I have to say that your SEO modules are one of the things that make me stay on Nuxt for every one of my websites.
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**Israel Ortuño**@IsraelOrtuno_
> I've been doing technical SEO for years, always liked it. With @nuxt_js SEO is way easier. It's a gem in the ecosystem. Amazing job by @harlan_zw.
_**Ju Nogueira**@nogueiraju_
> Nuxt SEO by @harlan_zw. Makes my life a lot easier.
_**Estéban**@soubiran__
> I have to say that your SEO modules are one of the things that make me stay on Nuxt for every one of my websites.
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**marcustoy**marcustoy_
> Hey man, appreciate all your great work on those Nuxt modules. I'm using Nuxt SEO and it's awesome! 💪🏻
_**Sun**@__Sun___
> how freaking cool is this ?! OG Image preview of community templates, as well as the ones i made, right in the @nuxt_js dev tools 🤯 amazing work @harlan_zw
_**Sébastien Chopin**@Atinux_
> What an impressive work done by @harlan_zw on Nuxt OG Image v3 🙌
_**Fabian B.**@madebyfabian_
> Nuxt GraphQL middleware by @dulnan is really, really good. And Nuxt SEO by @harlan_zw is also something I use in almost every project. There are so many more though!
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**marcustoy**marcustoy_
> Hey man, appreciate all your great work on those Nuxt modules. I'm using Nuxt SEO and it's awesome! 💪🏻
_**Sun**@__Sun___
> how freaking cool is this ?! OG Image preview of community templates, as well as the ones i made, right in the @nuxt_js dev tools 🤯 amazing work @harlan_zw
_**Sébastien Chopin**@Atinux_
> What an impressive work done by @harlan_zw on Nuxt OG Image v3 🙌
_**Fabian B.**@madebyfabian_
> Nuxt GraphQL middleware by @dulnan is really, really good. And Nuxt SEO by @harlan_zw is also something I use in almost every project. There are so many more though!
**0 downloads**per day, on average
Nuxt SEO is used and trusted by thousands of developers and companies around the world.
0
Downloads/ month
3.3K
Total Stars
h2. **Funded by the community **
Nuxt SEO is completely free and open-source due to the generous support of the community.
[**Become a sponsor **](https://github.com/sponsors/harlan-zw)
**Top Sponsors **
[**Daniel Roe** roe.dev](https://roe.dev)
[**Laioutr GmbH** laioutr.com](https://laioutr.com)
**Divyansh Singh**
**Gold Sponsors **
[**Localazy** localazy.com](https://localazy.com)
[**Massive Monster** massivemonster.co](https://massivemonster.co)
**Backers **
[](https://itinsights.org)
[](https://github.com/timhanlon)
[](https://github.com/Idrinth)
[](https://github.com/milos018)
[](https://github.com/aussieboi)
[](https://ducrot.de)
[](https://github.com/just-maik)
[](https://adkit.so)
[](https://reshepe.dev)
[](https://github.com/smtplabs)
[](https://github.com/moritzmyrz)
[](https://github.com/PetyXbron)
[](https://github.com/jpsc)
---
### /releases
Source: https://nuxtseo.com/releases
Description: Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines.
Nuxt SEO on GitHub
h1. **Nuxt SEO Releases**
See what has been shipping recently.
Last fetched just now. Updated every 24 hours.
**Major releases only**
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)yesterdayv6.3.2** Latest **_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.1...v6.3.2)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)yesterdayv1.1.1** Latest **### 🐞 Bug Fixes
- Infinite ping pong - by @harlan-zw [`**(800cc)**`](https://github.com/harlan-zw/nuxt-skew-protection/commit/800cc0c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-skew-protection/compare/v1.1.0...v1.1.1)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 days agov1.1.2** Latest **_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-ai-ready/compare/v1.1.1...v1.1.2)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 days agov1.1.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.1.0...v1.1.1)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)2 days agov8.1.5** Latest **### 🐞 Bug Fixes
- Set og:locale at low priority so i18n can override - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/102~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/102) [`**(5633a)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5633ac0) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.4...v8.1.5)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)3 days agov8.1.4 ### 🐞 Bug Fixes
- Support empty `**canonicalQueryWhitelist**` override - by @harlan-zw [`**(aa555)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/aa55573) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.3...v8.1.4)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 days agov8.0.10_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.9...v8.0.10)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 days agov8.0.11** Latest **### 🐞 Bug Fixes
- `**zeroRuntime**` prerender detection when no manual `**nitro.prerender.routes**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/593~~**](https://github.com/nuxt-modules/sitemap/issues/593) [`**(688d1)**`](https://github.com/nuxt-modules/sitemap/commit/688d189) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.10...v8.0.11)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 days agov1.1.0 ### 🚨 Breaking Changes
- Change license to MIT - by @harlan-zw [`**(f29ec)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f29ecdc) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.6...v1.1.0)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 days agov1.1.0 ### 🚨 Breaking Changes
- MIT module - by @harlan-zw [`**(c4649)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/c4649c0) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.4...v1.1.0)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)3 days agov5.1.0** Latest **### 🚀 Features
- Skew protection + ai ready standalone - by @harlan-zw [`**(d0fc2)**`](https://github.com/harlan-zw/nuxt-seo/commit/d0fc2d1) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v5.0.2...v5.1.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 days agov6.3.1 ### 🐞 Bug Fixes
- Prefer runtime config for secret - by @harlan-zw [`**(65196)**`](https://github.com/nuxt-modules/og-image/commit/651962d0) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.3.0...v6.3.1)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)4 days agov5.0.6** Latest **### 🐞 Bug Fixes
- **eslint**: Normalize trailing slashes in valid-route and valid-sitemap-link - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/80~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/80) [`**(9cfba)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9cfbaec) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.5...v5.0.6)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)4 days agov6.3.0 ### 🚀 Features
- **security**: Add URL signing to prevent parameter tampering - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/546~~**](https://github.com/nuxt-modules/og-image/issues/546) [`**(87a25)**`](https://github.com/nuxt-modules/og-image/commit/87a25392) ### 🐞 Bug Fixes
- **security**: Strict mode, deprecate `**html**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/545~~**](https://github.com/nuxt-modules/og-image/issues/545) [`**(25c05)**`](https://github.com/nuxt-modules/og-image/commit/25c057b1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.6...v6.3.0)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)5 days agov8.0.9 ### 🐞 Bug Fixes
- Suppress hreflang extraction from HTML when `**autoI18n: false**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/589~~**](https://github.com/nuxt-modules/sitemap/issues/589) [`**(28b65)**`](https://github.com/nuxt-modules/sitemap/commit/28b6514)
- Fallback to `**article:published_time**` for lastmod - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/590~~**](https://github.com/nuxt-modules/sitemap/issues/590) [`**(f537f)**`](https://github.com/nuxt-modules/sitemap/commit/f537fde)
- `**chunkSize**` config precedence over `**chunks**` number - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/591~~**](https://github.com/nuxt-modules/sitemap/issues/591) [`**(ad522)**`](https://github.com/nuxt-modules/sitemap/commit/ad5221b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.8...v8.0.9)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)5 days agov1.0.6 ### 🐞 Bug Fixes
- Deduplicate SSE/WS reconnection version checks - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/13~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/13) [`**(e2f67)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e2f6704) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.5...v1.0.6)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)6 days agov8.1.3 ### 🐞 Bug Fixes
- Meta tag file detection only matches root public dir, support layers - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/101~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/101) [`**(4f17e)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/4f17ef5) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.2...v8.1.3)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)6 days agov8.0.8 ### 🐞 Bug Fixes
- Less noisy logs - by @harlan-zw [`**(e4ef2)**`](https://github.com/nuxt-modules/sitemap/commit/e4ef2cf) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.7...v8.0.8)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.7 ### 🐞 Bug Fixes
- Respect `**autoI18n: false**` to suppress hreflang tag generation - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/587~~**](https://github.com/nuxt-modules/sitemap/issues/587) [`**(ee92b)**`](https://github.com/nuxt-modules/sitemap/commit/ee92ba1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.6...v8.0.7)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last weekv1.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.4...v1.0.5)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.1.2 ### 🐞 Bug Fixes
- **devtools**: False positives - by @harlan-zw [`**(46cd8)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/46cd8c3) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.1...v8.1.2)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.6 ### 🐞 Bug Fixes
- **devtools**: Don't warn about devtool props - by @harlan-zw [`**(adddd)**`](https://github.com/nuxt-modules/og-image/commit/adddd5aa) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.5...v6.2.6)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.6 ### 🐞 Bug Fixes
- Enable debug endpoints in dev when zeroRuntime: true - by @harlan-zw [`**(86327)**`](https://github.com/nuxt-modules/sitemap/commit/863270b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.5...v8.0.6)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.0.4 ### 🐞 Bug Fixes
- Allow sitemap v8 - by @harlan-zw [`**(b3cff)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/b3cffca) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.3...v1.0.4)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.2...v1.0.3)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last weekv1.0.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.3...v1.0.4)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last weekv1.0.3 ### 🐞 Bug Fixes
- Broken site config import - by @harlan-zw [`**(b9d0a)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b9d0a29) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.2...v1.0.3)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.1.1 ### 🐞 Bug Fixes
- False positive on missing i18n - by @harlan-zw [`**(4abac)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/4abac6d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.1.0...v8.1.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last weekv5.0.0** Major ** 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~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5). ## 🛠️ DevTools Unity 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 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. ## 🔗 ESLint Link Checking Nuxt Link Checker v5 ships an [**~~ESLint~~**](https://eslint.org) 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:eslint.config.ts```
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.```
const links = useShareLinks({
title: 'Check out Nuxt SEO v5!',
twitter: { via: 'harlodev', hashtags: ['nuxt', 'seo'] },
utm: { campaign: 'v5-launch' },
})
Share on X
Share on LinkedIn
Share on Reddit
```## 🖼️ 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):```
window.dataLayer=window.dataLayer||[];window.dataLayer.push({event:"page_view",page_path:window.location.pathname});
.hero{display:flex;align-items:center;justify-content:center;min-height:100vh}
```## 📄 `**definePageMeta**` Sitemap Config Sitemap v8 lets you configure sitemap options directly in `**definePageMeta**`:```
definePageMeta({
sitemap: {
changefreq: 'daily',
priority: 0.8,
},
})
```## 🌐 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~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5) 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~~**](https://stackblitz.com): | **Module** | **Examples** |
| --- | --- | | **Robots** | [**~~basic~~**](https://stackblitz.com/github/nuxt-modules/robots/tree/main/examples/basic), [**~~i18n~~**](https://stackblitz.com/github/nuxt-modules/robots/tree/main/examples/i18n), [**~~custom-rules~~**](https://stackblitz.com/github/nuxt-modules/robots/tree/main/examples/custom-rules) | | **Sitemap** | [**~~basic~~**](https://stackblitz.com/github/nuxt-modules/sitemap/tree/main/examples/basic), [**~~i18n~~**](https://stackblitz.com/github/nuxt-modules/sitemap/tree/main/examples/i18n), [**~~dynamic-urls~~**](https://stackblitz.com/github/nuxt-modules/sitemap/tree/main/examples/dynamic-urls) | | **OG Image** | [**~~basic-satori~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/basic-satori), [**~~basic-takumi~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/basic-takumi), [**~~content~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/content), [**~~i18n~~**](https://stackblitz.com/github/nuxt-modules/og-image/tree/main/examples/i18n) | | **Schema.org** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-schema-org/tree/main/examples/basic), [**~~blog~~**](https://stackblitz.com/github/harlan-zw/nuxt-schema-org/tree/main/examples/blog), [**~~e-commerce~~**](https://stackblitz.com/github/harlan-zw/nuxt-schema-org/tree/main/examples/e-commerce) | | **Link Checker** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-link-checker/tree/main/examples/basic), [**~~broken-links~~**](https://stackblitz.com/github/harlan-zw/nuxt-link-checker/tree/main/examples/broken-links), [**~~skip-inspection~~**](https://stackblitz.com/github/harlan-zw/nuxt-link-checker/tree/main/examples/skip-inspection) | | **SEO Utils** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-seo-utils/tree/main/examples/basic), [**~~breadcrumbs~~**](https://stackblitz.com/github/harlan-zw/nuxt-seo-utils/tree/main/examples/breadcrumbs), [**~~meta-tags~~**](https://stackblitz.com/github/harlan-zw/nuxt-seo-utils/tree/main/examples/meta-tags) | | **Site Config** | [**~~basic~~**](https://stackblitz.com/github/harlan-zw/nuxt-site-config/tree/main/examples/basic), [**~~env-driven~~**](https://stackblitz.com/github/harlan-zw/nuxt-site-config/tree/main/examples/env-driven), [**~~multi-site~~**](https://stackblitz.com/github/harlan-zw/nuxt-site-config/tree/main/examples/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)**`](https://github.com/harlan-zw/nuxt-seo/commit/40d4f44)
- Add publish-packages input to reusable-nightly workflow - by @harlan-zw [`**(a149d)**`](https://github.com/harlan-zw/nuxt-seo/commit/a149d17)
- Make Playwright install non-fatal in reusable CI - by @harlan-zw [`**(b55b7)**`](https://github.com/harlan-zw/nuxt-seo/commit/b55b78c)
- **ci**: Use >= version constraints and fix workspace key order - by @harlan-zw and **Claude Opus 4.6** [`**(c67ce)**`](https://github.com/harlan-zw/nuxt-seo/commit/c67ce91)
- **shared**: Add NormalisedLocale type with _sitemap and _hreflang fields - by @harlan-zw [`**(e51be)**`](https://github.com/harlan-zw/nuxt-seo/commit/e51bec5) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v4.0.2...v5.0.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.5 ### 🐞 Bug Fixes
- Hydration-issue warning due to SSR generated DateTime value - by @khatastroffik in [**~~https://github.com/nuxt-modules/og-image/issues/535~~**](https://github.com/nuxt-modules/og-image/issues/535) [`**(92d9d)**`](https://github.com/nuxt-modules/og-image/commit/92d9dac2)
- Sanitize component props - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/543~~**](https://github.com/nuxt-modules/og-image/issues/543) [`**(3dcf8)**`](https://github.com/nuxt-modules/og-image/commit/3dcf8c15)
- Harden security defaults - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/540~~**](https://github.com/nuxt-modules/og-image/issues/540) [`**(9902a)**`](https://github.com/nuxt-modules/og-image/commit/9902a897)
- Whitelist component props to prevent cache key DoS - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/544~~**](https://github.com/nuxt-modules/og-image/issues/544) [`**(bd05a)**`](https://github.com/nuxt-modules/og-image/commit/bd05a77b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.4...v6.2.5)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.1...v1.0.2)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last weekv1.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.1...v1.0.2)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.0.4** Latest **### 🐞 Bug Fixes
- **devtools**: Refine - by @harlan-zw [`**(774c8)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/774c874) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.3...v6.0.4)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.7** Latest **### 🐞 Bug Fixes
- **devtools**: Refine UI - by @harlan-zw [`**(b9eda)**`](https://github.com/harlan-zw/nuxt-site-config/commit/b9eda73) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.6...v4.0.7)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last weekv5.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.4...v5.0.5)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.1.0 ### 🚀 Features
- **devtools**: Identity tab - by @harlan-zw [`**(31ed3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/31ed322) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.5...v8.1.0)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.4...v8.0.5)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.6** Latest **_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.5...v6.0.6)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.4 ### 🐞 Bug Fixes
- Burst cache when og image templates change - by @harlan-zw [`**(0b817)**`](https://github.com/nuxt-modules/og-image/commit/0b817186)
- Drop query param build id cache bursting - by @harlan-zw [`**(851b1)**`](https://github.com/nuxt-modules/og-image/commit/851b132f) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.3...v6.2.4)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.4...v8.0.5)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last weekv5.0.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.3...v5.0.4)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.2...v6.0.3)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.3...v8.0.4)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.4...v6.0.5)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.0.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v1.0.0...v1.0.1)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last weekv1.0.1 ### 🐞 Bug Fixes
- Broken module deps - by @harlan-zw [`**(58c6a)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/58c6ac9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v1.0.0...v1.0.1)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last weekv1.0.0** Major ** Nuxt Skew Protection v1 marks the module's first stable release. The focus: giving you full control over **how** and **when** outdated clients respond to new deployments, while making version state observable on both client and server. This release also cleans up the API surface, shortening names and aligning conventions before committing to semver stability. Run the automated codemod to migrate your project, or paste the **~~LLM upgrade prompt~~** into Claude, [**~~ChatGPT~~**](https://chatgpt.com), etc. for a guided migration.```
npx nuxt-skew-protection migrate
``` See the [**~~breaking changes~~**](#breaking-changes) below for details on what changed. ## 🔍 Server Version Awareness Every incoming request now carries `**event.context.skewVersion**` populated from the client's cookie. Use the new `getClientVersion(event)` server utility to read it explicitly, or `isClientOutdated(event)` to check staleness in API handlers.```
export default defineEventHandler((event) => {
if (isClientOutdated(event)) {
// return stale-safe response or set cache headers
}
})
```## ⏪ Rollback Detection The composable now exposes an `**isRollback**` computed ref that is `**true**` when the server version is **older** than the client version, indicating a deployment was rolled back. This lets you distinguish "user needs to update" from "we rolled back, the user is ahead." ## 🛠️ DevTools Panel A new Nuxt DevTools panel gives you full visibility into skew protection state during development. It includes four tabs:
- **Overview** shows your resolved module configuration and, when connected to a production URL, displays real time health status and active connection stats.
- **Versions** lists all stored deployment versions with build timestamps, asset counts, and expiration status.
- **Connections** shows version distribution and route distribution across active users (requires `**connectionTracking: true**`).
- **Docs** links directly to the module documentation. The panel is available at `**/__nuxt-skew-protection**` in dev mode and can proxy production endpoints for live debugging. ## ⚡ Multi-Tab Coordination Version detection gets faster when multiple tabs share discoveries. When one tab detects a deployment update, every other tab in the same browser learns about it instantly via `**BroadcastChannel**`, eliminating duplicate polling and reducing unnecessary network requests. Enabled by default; disable with `**multiTab: false**`. ## 🔄 Reload Strategies Previously the module always showed a notification and waited for the user to click reload. Now you choose the behaviour that fits your app with a single config option.```
export default defineNuxtConfig({
skewProtection: {
// 'prompt' (default) | 'immediate' | 'idle' | false
reloadStrategy: 'idle',
},
})
````**immediate**` reloads the moment chunks are invalidated. `**idle**` waits until the user switches tabs or the browser is idle, avoiding mid-interaction disruption. Set `**false**` to disable built-in handling and drive your own logic through hooks. ## ⚠️ Breaking Changes ### Dependency Version Bumps The following internal dependencies have new minimum versions. These shouldn't have any direct effect on your site, however, you may want to double check their release notes.
- **nuxt-site-config** v4: [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0) ### Hook Renamed: `**skew:chunks-outdated**` The Nuxt hook `**skew-protection:chunks-outdated**` has been shortened to `**skew:chunks-outdated**`.```
// Before
nuxtApp.hooks.hook('skew-protection:chunks-outdated', (payload) => {
// ...
})
// After
nuxtApp.hooks.hook('skew:chunks-outdated', (payload) => {
// ...
})
```### Composable Return: `**isAppOutdated**``**isOutdated**` was renamed to `**isAppOutdated**` to distinguish it from chunk-level staleness.```
// Before
const { isOutdated } = useSkewProtection()
// After
const { isAppOutdated } = useSkewProtection()
```### Config: `**bundleAssets**``**bundlePreviousDeploymentChunks**` was renamed to `**bundleAssets**` for brevity.```
// Before
const before = { skewProtection: { bundlePreviousDeploymentChunks: true } }
// After
const after = { skewProtection: { bundleAssets: true } }
```### Route Prefix: `**/__skew/**` Internal API routes moved from `**/_skew/**` to `**/__skew/**` (double underscore) to follow the Nuxt convention for internal routes. Update any custom proxy rules or firewall allowlists. ### Cookie Defaults`**sameSite**` changed from `**strict**` to `**lax**` so the cookie survives cross-origin navigations (e.g. OAuth redirects). `**maxAge**` shortened from 60 days to 7 days to reduce stale version drift. ### Standalone `**checkForUpdates**` Removed We removed the standalone export. Use the composable method instead:```
// Before
import { checkForUpdates } from '#skew-protection'
// After
const { checkForUpdates } = useSkewProtection()
```### Legacy `**_generate**` Compat Removed We removed the internal `**_generate**` compatibility check from early pre-releases. If you were on v0.4 or earlier, upgrade to v0.7.6 first, then to v1. ## 🤖 LLM Upgrade Prompt {#llm-upgrade-prompt} Paste this into Claude, ChatGPT, or any LLM to migrate your codebase automatically.```
h1. Upgrade Guide: nuxt-skew-protection v0.x to v1.0.0
You are helping me upgrade nuxt-skew-protection from v0.x to v1.0.0 in my Nuxt project.
h2. Breaking Changes
h3. 1. Hook Renamed
**What changed:** \`skew-protection:chunks-outdated\` → \`skew:chunks-outdated\`
**Search my codebase for:** \`skew-protection:chunks-outdated\`
**Regex pattern:** \`skew-protection:chunks-outdated\`
**Before:**
\`\`\`ts
nuxtApp.hooks.hook('skew-protection:chunks-outdated', callback)
\`\`\`
**After:**
\`\`\`ts
nuxtApp.hooks.hook('skew:chunks-outdated', callback)
\`\`\`
h3. 2. Composable Return Renamed
**What changed:** \`isOutdated\` → \`isAppOutdated\` on the \`useSkewProtection()\`{lang="ts"} return.
**Search my codebase for:** \`isOutdated\`
**Regex pattern:** \`isOutdated(?!Payload|\.)\`{lang="ts"}
**Before:**
\`\`\`ts
const { isOutdated } = useSkewProtection()
\`\`\`
**After:**
\`\`\`ts
const { isAppOutdated } = useSkewProtection()
\`\`\`
h3. 3. Config Renamed
**What changed:** \`bundlePreviousDeploymentChunks\` → \`bundleAssets\`
**Search my codebase for:** \`bundlePreviousDeploymentChunks\`
**Regex pattern:** \`bundlePreviousDeploymentChunks\`
**Before:**
\`\`\`ts
skewProtection: { bundlePreviousDeploymentChunks: true }
\`\`\`
**After:**
\`\`\`ts
skewProtection: { bundleAssets: true }
\`\`\`
h3. 4. Route Prefix Changed
**What changed:** \`/_skew/\` → \`/__skew/\` (double underscore)
**Search my codebase for:** \`/_skew/\`
**Regex pattern:** \`/_skew/\`
**Before:**
\`\`\`ts
$fetch('/_skew/sse')
\`\`\`
**After:**
\`\`\`ts
$fetch('/__skew/sse')
\`\`\`
h3. 5. Standalone checkForUpdates Removed
**What changed:** The standalone \`checkForUpdates\` export no longer exists. Use the composable.
**Search my codebase for:** \`import { checkForUpdates }\`
**Regex pattern:** \`checkForUpdates.*from.*#skew\`
**Before:**
\`\`\`ts
import { checkForUpdates } from '#skew-protection'
checkForUpdates()
\`\`\`
**After:**
\`\`\`ts
const { checkForUpdates } = useSkewProtection()
checkForUpdates()
\`\`\`
h3. 6. Cookie Defaults Changed
**What changed:** \`sameSite\` is now \`lax\` (was \`strict\`), \`maxAge\` is now 7 days (was 60 days).
**Action:** No code changes needed unless you explicitly rely on the old defaults. If you need the old behaviour, set them in config:
\`\`\`ts
skewProtection: {
cookie: { sameSite: 'strict', maxAge: 60 * 60 * 24 * 60 }
}
\`\`\`
h2. Verification Checklist
1. \`pnpm install\` (update lockfile)
2. \`npx nuxi typecheck\` (catch type errors)
3. \`pnpm build\` (catch build-time issues)
4. \`pnpm test\` (catch runtime regressions)
5. Test SSR page load, verify no hydration mismatch warnings
---
Please scan my codebase for all affected patterns listed above and generate a complete migration plan. For each file that needs changes, show me the exact diff.
```## ✅ Upgrading```
h1. pnpm
pnpm add nuxt-skew-protection@^1
h1. npm
npm install nuxt-skew-protection@^1
h1. yarn
yarn add nuxt-skew-protection@^1
```## 📋 Changelog
> [**~~Compare changes~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.6...v1.0.0) ### 🚀 Enhancements
- `**reloadStrategy**` option: `**prompt**`, `**immediate**`, `**idle**`, or `**false**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- Multi-tab coordination via `**BroadcastChannel**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- `**/__skew/health**` monitoring endpoint ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- `**event.context.skewVersion**` on all server requests ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- `getClientVersion(event)` server utility ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- `**isRollback**` detection on composable ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- `**serverVersion**` reactive ref on composable ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- `**isOpen**` slot prop on `**SkewNotification**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- SSR hydration via `**useState**` for `**isConnected**`, `**serverVersion**`, `**manifest**` ([`**4b6a9fe**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/4b6a9fe))
- DevTools panel with overview, version history, connection monitoring, and production debug endpoints ([`**8dc6d1e**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/8dc6d1e)) ### 🩹 Fixes
- Handle possibly undefined manifest in multi-tab plugin ([`**d19bfcf**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/d19bfcf)) ### 🏡 Chore
- Bump and lint ([`**ce83636**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/ce83636))
- Sync CI and kit utilities ([`**c59600e**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/c59600e)) ### ❤️ Contributors
- [**~~Harlan Wilton~~**](https://github.com/harlan-zw)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv1.0.0** Major ** Nuxt AI Ready v1 focuses on **API consistency**, **security**, and **reliability**. The headline change is the migration to [**~~mdream v1~~**](https://github.com/harlan-zw/mdream), a rewrite of the HTML to markdown engine with a cleaner API and better output. Alongside this, v1 tightens endpoint security, unifies type inconsistencies, and fixes race conditions in the cron system. Most breaking changes have a **backward compatibility layer** that emits deprecation warnings, so upgrading won't immediately break your app. See the full [**~~migration steps~~**](#breaking-changes) and [**~~compat shims~~**](#migration-assistance) below, or paste the [**~~agent migration prompt~~**](#agent-migration-prompt) into your AI coding tool to upgrade automatically. ## 🧠 Mdream v1 The HTML to Markdown engine has been rewritten. mdream v1 ships a native Rust engine (up to 8x faster), [**~~WebAssembly~~**](https://webassembly.org) for edge runtimes, and a simpler declarative API while keeping the JS engine available as `**@mdream/js**` for users who need imperative hook based plugins. The `**preset**` option is replaced by top-level flags, and extraction plugins are now declarative objects instead of function wrappers.```
// nuxt.config.ts
export default defineNuxtConfig({
aiReady: {
mdreamOptions: {
minimal: true,
clean: true
}
}
})
```## 📊 Enhanced CLI Status The `**nuxt-ai-ready status**` command now shows richer diagnostics: activity stats (1h/24h), recent pages, IndexNow backoff status, cron run history, and sitemap health. ## 🔐 Shared Auth Utility Endpoint authentication is consolidated into a single `requireAuth()` utility, replacing duplicated auth logic across 6 route handlers. ## ⚠️ Breaking Changes ### Dependency Version Bumps The following internal dependencies have new minimum versions. These shouldn't have any direct effect on your site, however, you may want to double check their release notes.
- **nuxt-site-config** v4: [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0)
- **@nuxtjs/robots** v6: [**~~breaking changes~~**](https://github.com/nuxt-modules/robots/releases/tag/v6.0.0)
- **@nuxtjs/sitemap** v8: [**~~breaking changes~~**](https://github.com/nuxt-modules/sitemap/releases/tag/v8.0.0) ### mdream Options Shape`**mdreamOptions**` changed from `**HTMLToMarkdownOptions & { preset?: 'minimal' }**` to the new `**MdreamOptions**` type from mdream v1. The `**preset**` key no longer exists.```
aiReady: {
- mdreamOptions: { preset: 'minimal' },
+ mdreamOptions: { minimal: true },
}
```### Config Rename`**cacheMaxAgeSeconds**` is now `**llmsTxtCacheSeconds**` to clarify it only controls the llms.txt cache, not markdown route caching.```
aiReady: {
- cacheMaxAgeSeconds: 600,
+ llmsTxtCacheSeconds: 600,
}
```### Type Rename`**BulkDocument**` is now `**PageDocument**`.```
-import type { BulkDocument } from 'nuxt-ai-ready'
+import type { PageDocument } from 'nuxt-ai-ready'
```### Hook Rename The Nitro runtime hook `**ai-ready:markdown**` is now `**ai-ready:page:markdown**`, matching the build-time hook name.```
-nitroApp.hooks.hook('ai-ready:markdown', (ctx) => {
+nitroApp.hooks.hook('ai-ready:page:markdown', (ctx) => {
ctx.markdown += '\n\nCustom footer'
})
```### Headings Type Unified`**PageEntry.headings**` and `**PageIndexedContext.headings**` changed from `**string**` (JSON) to `Array>` (already parsed). Remove any `JSON.parse()` calls on `**.headings**`.```
const page = await queryPages(event, { route: '/about' })
-const headings = JSON.parse(page.headings)
+const headings = page.headings // already parsed
```### Endpoint Auth: Header Instead of Query String All `**/__ai-ready/***` endpoints now require an `Authorization: Bearer` header instead of `?secret=` in the query string. This prevents secrets from leaking into server logs and referrer headers.```
-fetch('/__ai-ready/poll?secret=TOKEN', { method: 'POST' })
+fetch('/__ai-ready/poll', {
+ method: 'POST',
+ headers: { Authorization: 'Bearer TOKEN' },
+})
``````
-curl -X POST "https://site.com/__ai-ready/poll?secret=TOKEN"
+curl -H "Authorization: Bearer TOKEN" -X POST "https://site.com/__ai-ready/poll"
``` Update any CI scripts, external cron jobs, or monitoring tools that call these endpoints. ## 🛟 Migration Assistance v1 includes a backward compatibility layer to ease migration. The following deprecated patterns still work but emit warnings:
- **`**cacheMaxAgeSeconds**`** in `**nuxt.config.ts**` is auto-mapped to `**llmsTxtCacheSeconds**` with a build warning
- **`**mdreamOptions.preset**`** triggers a build warning explaining the new shape
- **`?secret=` query auth** still works on all `**/__ai-ready/***` endpoints but logs a deprecation warning per request These compatibility shims will be removed in v2. Update your config and endpoints at your earliest convenience. ## 🐛 Bug Fixes
- Cron lock race condition fixed with atomic `**INSERT ... ON CONFLICT DO UPDATE ... WHERE**` instead of check-then-set ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f))
- Unsafe `**JSON.parse**` calls replaced with `safeJsonParse()` across query layer ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f))
- Input validation added to `**poll**`, `**prune**`, and `**indexnow**` endpoints (limit, timeout, ttl clamping) ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f))
- `**console.warn**` replaced with `**logger.warn**` in cron runner ([`**854551f**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/854551f))
- Markdown cache now varies by `**Accept**` headers ([`**f513c08**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/f513c08)) ## Agent Migration Prompt Copy this prompt into your AI coding agent (Claude Code, Cursor, Copilot, etc.) to migrate automatically:```
I'm upgrading nuxt-ai-ready to v1. Apply these breaking changes to my codebase:
1. mdream options: \`mdreamOptions\` in nuxt.config.ts changed shape. Replace \`{ preset: 'minimal' }\` with \`{ minimal: true }\`. The type changed from \`HTMLToMarkdownOptions\` to \`MdreamOptions\`.
2. Config rename: \`cacheMaxAgeSeconds\` is now \`llmsTxtCacheSeconds\` in nuxt.config.ts under the \`aiReady\` key.
3. Type rename: \`BulkDocument\` is now \`PageDocument\`. Update all imports from 'nuxt-ai-ready'.
4. Hook rename: The Nitro runtime hook \`ai-ready:markdown\` is now \`ai-ready:page:markdown\`. Update all hooks.hook() and hooks.callHook() calls.
5. Headings type change: \`PageEntry.headings\` and \`PageIndexedContext.headings\` changed from \`string\` (JSON) to \`Array>\` (parsed). Remove any JSON.parse() calls on .headings since it's now already parsed.
6. Auth mechanism change: All \`/__ai-ready/*\` endpoints now use \`Authorization: Bearer \` header instead of \`?secret=\` query parameter. Update any fetch calls, curl commands, CI scripts, or external cron jobs that hit these endpoints.
Note: v1 includes backward compatibility shims for \`cacheMaxAgeSeconds\`, \`mdreamOptions.preset\`, and \`?secret=\` query auth. These emit deprecation warnings and will be removed in v2. After applying changes, verify no deprecation warnings remain in your build output or server logs.
Search my entire codebase for these patterns and apply all necessary changes.
```## Changelog ### 🚨 Breaking Changes
- Migrate to `**mdream**` v1 - by @harlan-zw [`**(931e6)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/931e6ef)
- V1 breaking changes and quality improvements - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/15~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/15) [`**(c2bb4)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/c2bb45b) ### 🚀 Features
- Support optional sections in llms.txt - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/18~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/18) [`**(16b2d)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/16b2d1d)
- Add pagination to MCP pages resource - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/17~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/17) [`**(8827c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/8827cd1) ### 🐞 Bug Fixes
- Vary markdown cache by accept headers - by @harlan-zw [`**(f513c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/f513c08)
- **test**:
- Disable mcp-toolkit in test fixtures (h3 v2 incompatibility) - by @harlan-zw [`**(b8536)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/b85366b)
- Update llms.txt expectations for new format, skip cloudflare WASM - by @harlan-zw [`**(d31f6)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/d31f698) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.12.1...v1.0.0)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.0.4 ### 🐞 Bug Fixes
- **devtools**: Conform - by @harlan-zw [`**(f4253)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/f42534d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.3...v8.0.4)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.3 ### 🐞 Bug Fixes
- **cloudflare**: Detect legacy assets mode - by @harlan-zw [`**(7f60a)**`](https://github.com/nuxt-modules/og-image/commit/7f60a480) ### 🏎 Performance
- **devtools**: Drop json-editor-vue - by @harlan-zw [`**(14a58)**`](https://github.com/nuxt-modules/og-image/commit/14a585b7) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.2...v6.2.3)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last weekv0.12.2 ### 🐞 Bug Fixes
- Vary markdown cache by accept headers - by @harlan-zw [`**(73ca6)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/73ca6ae) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.12.1...v0.12.2)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last weekv5.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.2...v5.0.3)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.1...v6.2.2)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.1...v6.0.2)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.2...v8.0.3)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.2...v8.0.3)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.3...v6.0.4)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.2...v6.0.3)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.6_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.5...v4.0.6)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.4...v4.0.5)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.3...v4.0.4)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.2...v4.0.3)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.0.1 ### 🐞 Bug Fixes
- **devtools**: Label module - by @harlan-zw [`**(3dc1f)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/3dc1f67) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v6.0.0...v6.0.1)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.0.2 ### 🐞 Bug Fixes
- Normalize `**twitter:image:src**` paths - by @harlan-zw [`**(b606e)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/b606e8b)
- Normalize paths in client for dev mode - by @harlan-zw [`**(3dc9c)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/3dc9c96) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.1...v8.0.2)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.2 ### 🐞 Bug Fixes
- Preserve `**definePageMeta**` sitemap data during ssg - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/585~~**](https://github.com/nuxt-modules/sitemap/issues/585) [`**(8b7d4)**`](https://github.com/nuxt-modules/sitemap/commit/8b7d4d3)
- **devtools**: Label module - by @harlan-zw [`**(a528f)**`](https://github.com/nuxt-modules/sitemap/commit/a528fcd) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.1...v8.0.2)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.2 ### 🐞 Bug Fixes
- **devtools**: Label module - by @harlan-zw [`**(1c3e5)**`](https://github.com/nuxt-modules/robots/commit/1c3e5de) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.1...v6.0.2)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.2 ### 🐞 Bug Fixes
- **devtools**: Label module - by @harlan-zw [`**(0cb3a)**`](https://github.com/harlan-zw/nuxt-site-config/commit/0cb3a2a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.1...v4.0.2)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.1 ### 🐞 Bug Fixes
- Missing compatibility config - by @harlan-zw [`**(45410)**`](https://github.com/nuxt-modules/og-image/commit/4541033c)
- **devtools**: Broken resolution - by @harlan-zw [`**(57ac2)**`](https://github.com/nuxt-modules/og-image/commit/57ac2647) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.2.0...v6.2.1)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last weekv5.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v5.0.1...v5.0.2)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last weekv5.0.0** Major ** The v5 release adds [**~~ESLint~~**](https://eslint.org) integration for instant broken link feedback in your editor, migrates DevTools to a shared layer, and bumps internal dependencies. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Link Checker. The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### DevTools Migration The DevTools client has been migrated to `**nuxtseo-layer-devtools**`, a shared layer used across all Nuxt SEO modules. This means the DevTools panel is now consistent across modules and maintained in one place. No action is needed unless you were importing DevTools internals directly. ## 🔗 ESLint Integration Broken links are typically only caught at build time or during development server navigation. The new ESLint integration gives you instant feedback directly in your editor by validating relative URLs against your app's known routes and sitemap data. ### `**link-checker/valid-route**` Checks that relative URLs match a known vue-router route pattern. Uses radix3 for dynamic route matching and fuse.js for "did you mean?" typo suggestions.**Severity:** `**error**````
```### `**link-checker/valid-sitemap-link**` Checks that relative URLs exist in the sitemap. For dynamic routes, warns when sibling URLs exist in the sitemap but the linked URL does not.**Severity:** `**warn**````
```### What Gets Checked Both rules scan for relative URLs in:
- **Vue templates:** `{lang="html"},`, ``{lang="html"}
- **TypeScript/JavaScript:** `navigateTo('...')`, `router.push('...')`, `router.replace('...')`
- **Markdown:** `[text](/url)` link syntax (via processor) External URLs, anchors, mailto/tel links, and dynamic bindings are automatically skipped. ### Zero Config with `**@nuxt/eslint**` If you're using `**@nuxt/eslint**`, both rules are automatically registered via the `**eslint:config:addons**` hook. Zero-config. For manual setup, import the standalone export:```
import linkCheckerPlugin from 'nuxt-link-checker/eslint'
export default [
{
files: ['**/*.vue', '**/*.ts'],
plugins: {
'link-checker': linkCheckerPlugin,
},
rules: {
'link-checker/valid-route': 'error',
'link-checker/valid-sitemap-link': 'warn',
},
},
]
``` See the [**~~ESLint Integration guide~~**](https://nuxtseo.com/guides/eslint) for full details including markdown support, skipping links, and configuration options. ## Changelog ### 🚀 Features
- Add ESLint integration with route validation rules - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/76~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/76) [`**(1c416)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/1c416ed)
- Add `**excludePages**` config to skip link checking on specific pages - by @harlan-zw [`**(f9a58)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/f9a58c8)
- Show source file paths in link inspection console output - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/78~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/78) [`**(b7109)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b7109c7) ### 🐞 Bug Fixes
- Serialize RegExp in excludeLinks for client-side filtering - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/77~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/77) [`**(7e5d1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/7e5d149) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.9...v5.0.0)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.0.1 ### 🏎 Performance
- Optimize bundle - by @harlan-zw [`**(a9a6f)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/a9a6f63) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v8.0.0...v8.0.1)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last weekv8.0.0** Major ** The v8 release introduces social sharing composables, a CLI for icon generation, automatic inline minification, devtools integration, and several quality of life improvements for i18n and breadcrumb users. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt SEO Utils. The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ## 🔗 `**useShareLinks()**` Composable Adding social share buttons to your site means wrangling platform specific URL formats, query parameters, and UTM tracking across every network. `**useShareLinks()**` handles all of that, giving you reactive share URLs for 8 platforms with built in UTM attribution.```
const links = useShareLinks({
title: 'Check this out',
utm: { campaign: 'launch' }
})
Share on Twitter
Share on Facebook
Share on LinkedIn
``` Supported platforms: `**twitter**`, `**facebook**`, `**linkedin**`, `**whatsapp**`, `**telegram**`, `**reddit**`, `**pinterest**`, `**email**`. UTM tracking is enabled by default with automatic per-platform `**utm_source**` values. Disable with `**utm: false**` or provide a custom configuration.```
useShareLinks({
utm: {
source: 'auto', // uses platform name
medium: 'social',
campaign: 'spring-launch'
},
twitter: { via: 'harloops', hashtags: ['nuxt', 'seo'] },
pinterest: { media: 'https://example.com/image.png' }
})
```## ⚡ Inline Script & Style Minification Nuxt minifies your bundled JS and CSS, but inline `**and**` tags injected via `**useHead()**` or hydration payloads ship unminified. On content heavy pages this adds meaningful weight to every SSR response. v8 now automatically minifies these inline tags in production with zero configuration. Two complementary modes work together:
- **Build mode** uses [**~~Rolldown~~**](https://rolldown.rs/) (Vite 8+) or [**~~esbuild~~**](https://esbuild.github.io/) with [**~~lightningcss~~**](https://lightningcss.dev/) for full minification of prerendered HTML and `**app.head**` content.
- **Runtime mode** uses lightweight pure JS minifiers (no native deps) to minify hydration payloads and `**useHead()**` injections on every SSR request, compatible with any deployment target. Enabled by default. Configure or disable per mode:```
export default defineNuxtConfig({
seo: {
minify: true, // default — both modes
// minify: { build: true, runtime: false },
// minify: false,
},
})
``` See the [**~~Inline Minification guide~~**](https://nuxtseo.com/getting-started/guides/minification) for full details. ## 🖼️ `**nuxt-seo-utils icons**` CLI Command Every platform expects a different icon size and format: browsers want `**favicon.ico**`, iOS needs `**apple-touch-icon.png**`, PWAs require 192px and 512px variants. Manually exporting and maintaining all of these from a single logo is tedious. This CLI command generates every variant from one source image.```
npx nuxt-seo-utils icons --source logo.svg
``` Generates the following files in your public directory:
- `**favicon.ico**` (32x32)
- `**icon-16x16.png**`
- `**icon-32x32.png**`
- `**apple-touch-icon.png**` (180x180)
- `**icon-192x192.png**`
- `**icon-512x512.png**` Accepts SVG, PNG, JPG, and WebP source formats. ## 🏷️ Configurable `**tagPriority**` for OG Meta Tags Some crawlers stop reading `**after a certain byte limit. If large style blocks appear before your OG meta tags, crawlers may never see them. This option lets you control where SEO meta tags are placed in the**` so they render before style blocks that could push them past the limit.```
export default defineNuxtConfig({
seoUtils: {
tagPriority: 30 // default
}
})
``` Lower values place tags earlier in the ``. The default of `**30**` ensures SEO tags appear before style blocks (priority 40-60). ## 🛠️ Devtools Integration Debugging SEO issues usually means viewing page source, checking meta tags manually, and testing share previews through each platform. The new devtools panel at `**/__nuxt-seo-utils**` gives you a single dashboard to inspect all meta tags and preview social share cards during development. ## 📝 `**useFallbackTitle()**` Composable Pages without an explicit `**useHead({ title })**` still need a reasonable title for SEO and browser tabs. Previously this fallback logic was internal. Now it's exposed as a standalone composable so you can use the same resolution logic (route metadata, i18n keys, title cased URL segments) anywhere in your app.```
const title = useFallbackTitle()
// /about-us → "About Us"
// 404 page → "404 - Not Found"
```## ⚡ Performance
- Replaced `**fast-glob**` with `**tinyglobby**` for faster file matching
- Inline minification reduces SSR HTML payload size with minimal runtime overhead ## 🐛 Bug Fixes
- **Error pages**: Preserve user-defined titles on error pages instead of overwriting them
- **i18n**: Resolve fallback page titles from i18n translation keys (`**pages.{routeName}.title**`)
- **Breadcrumbs**: Resolve Schema.org duplicate `**@id**` and double registration
- **Meta precedence**: Ensure `**useServerSeoMeta**` takes precedence over site defaults ## Changelog ### 🚀 Features
- Nuxt-seo-utils CLI with icons command - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/76~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/76) [`**(1edae)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/1edae77)
- Devtools - by @harlan-zw [`**(494bc)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/494bce5)
- Minify inline SSR scripts using esbuild/terser - by @harlan-zw [`**(4e939)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/4e939b6)
- Support two minification modes (esbuild + lightweight) - by @harlan-zw [`**(d35cd)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d35cd0d)
- Support Rolldown (Vite 8) for build-time JS minification - by @harlan-zw [`**(c5682)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/c568225)
- Minify inline scripts and styles in SSR - by @harlan-zw and **Copilot Autofix powered by AI** in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/99~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/99) [`**(15ad7)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/15ad7b0)
- **seo**:
- Add configurable tagPriority for OG meta tags - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/89~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/89) [`**(e1125)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/e11250d)
- Add useShareLinks composable for social sharing URLs - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/92~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/92) [`**(147a5)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/147a595)
- Extract fallback title logic into useFallbackTitle composable - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/91~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/91) [`**(add78)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/add7801) ### 🐞 Bug Fixes
- Ensure useServerSeoMeta takes precedence over site defaults - by @harlan-zw [`**(5fcd4)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5fcd4df)
- Narrow statusCode type before includes check - by @harlan-zw [`**(23116)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/23116ce)
- Preserve user-defined titles on error pages - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/90~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/90) [`**(cede3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/cede361)
- Merge main, fix CodeQL HTML regex warnings - by @harlan-zw [`**(387ea)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/387ea7a)
- Resolve typecheck errors in minifyPrerenderScripts - by @harlan-zw [`**(71a01)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/71a013e)
- Suppress rolldown/experimental type error for Vite 7 projects - by @harlan-zw [`**(01499)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/0149984)
- Use dynamic string import for rolldown to avoid TS2307 - by @harlan-zw [`**(5f5ca)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/5f5caea)
- Add eslint-disable for template-curly-in-string in minify tests - by @harlan-zw [`**(dc9be)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/dc9be4c)
- Use rolldown >=1.0.0-beta.0 peer dep to include pre-releases - by @harlan-zw [`**(ebcb1)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/ebcb160)
- Resolve CI lint, typecheck errors - by @harlan-zw [`**(47fb3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/47fb321)
- **breadcrumbs**: Resolve schema.org duplicate @id and double registration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/88~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/88) [`**(f52ae)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/f52ae32)
- **docs**: Update link to `**infer-seo-meta-tags**` plugin - by @hacknug in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/80~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/80) [`**(83b54)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/83b54b7)
- **i18n**: Resolve fallback page titles from i18n translations - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/94~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/94) [`**(63067)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/630672a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.19...v8.0.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last weekv4.0.1 ### 🐞 Bug Fixes
- Devtool refresh - by @harlan-zw [`**(458bf)**`](https://github.com/harlan-zw/nuxt-site-config/commit/458bf08)
- **devtools**: Sync UI - by @harlan-zw [`**(93f7b)**`](https://github.com/harlan-zw/nuxt-site-config/commit/93f7b21)
- **i18n**: Defer locale resolution to support no_prefix strategy - by @harlan-zw [`**(de334)**`](https://github.com/harlan-zw/nuxt-site-config/commit/de33423) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v4.0.0...v4.0.1)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.1 ### 🐞 Bug Fixes
- Broken runtime paths - by @harlan-zw [`**(5eab0)**`](https://github.com/nuxt-modules/sitemap/commit/5eab0c1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v8.0.0...v8.0.1)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last weekv6.2.0 ### 🚀 Features
- **content**: Add `**defineOgImageSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/520~~**](https://github.com/nuxt-modules/og-image/issues/520) [`**(e9cde)**`](https://github.com/nuxt-modules/og-image/commit/e9cded09) ### 🐞 Bug Fixes
- Update pnpm-lock.yaml - by @harlan-zw [`**(0784c)**`](https://github.com/nuxt-modules/og-image/commit/0784c378)
- Broken slash decoding in some cases - by @harlan-zw [`**(6f8ac)**`](https://github.com/nuxt-modules/og-image/commit/6f8ac765)
- B64 encode props with URL-sensitive characters - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/530~~**](https://github.com/nuxt-modules/og-image/issues/530) [`**(6e8f4)**`](https://github.com/nuxt-modules/og-image/commit/6e8f49ed)
- Resolve CI issues - by @harlan-zw [`**(f3e30)**`](https://github.com/nuxt-modules/og-image/commit/f3e3045b)
- Use explicit imports mapping for #nuxtseo-shared - by @harlan-zw [`**(08594)**`](https://github.com/nuxt-modules/og-image/commit/08594505)
- Use direct nuxtseo-shared/runtime imports, bump to ^0.3.0 - by @harlan-zw [`**(31b1a)**`](https://github.com/nuxt-modules/og-image/commit/31b1a991)
- Resolve CI failures in lint, build, typecheck, and tests - by @harlan-zw [`**(47e85)**`](https://github.com/nuxt-modules/og-image/commit/47e85d35)
- Use dot-notation for ambiguous CalcTest component in type test - by @harlan-zw [`**(3ba63)**`](https://github.com/nuxt-modules/og-image/commit/3ba63fef)
- **client**: Resolve layer-devtools path via import.meta.resolve - by @harlan-zw [`**(dd4e0)**`](https://github.com/nuxt-modules/og-image/commit/dd4e0578)
- **cloudflare**: Resolve fonts via localFetch when ASSETS binding unavailable - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/527~~**](https://github.com/nuxt-modules/og-image/issues/527) [`**(c850d)**`](https://github.com/nuxt-modules/og-image/commit/c850dfde) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.1.2...v6.2.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last weekv6.0.0** Major ** The v6 major of Nuxt Schema.org adds a new content composable, fixes SSR memory leaks, resolves `**@id**` URL generation issues, and migrates the devtools to the shared nuxtseo infrastructure. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Schema.org. Its major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### Devtools Rewrite The devtools panel has been migrated to the shared `**nuxtseo-shared**` infrastructure. The UI has been cleaned up and now includes a schema validator, debug view, raw JSON view, and documentation links. If you relied on the previous devtools layout, the information is still available under new navigation tabs. ## 🚀 Features ### `**defineSchemaOrgSchema()**` Composable A new composable for `**@nuxt/content**` v3 that simplifies adding Schema.org fields to your content schema.content.config.ts```
import { defineCollection, z } from '@nuxt/content'
import { defineSchemaOrgSchema } from 'nuxt-schema-org/content'
export default defineContentConfig({
collections: {
pages: defineCollection({
type: 'page',
source: '**/*.md',
schema: z.object({
...defineSchemaOrgSchema(z),
}),
}),
},
})
``` This replaces the previous `**asSchemaOrgCollection()**` helper, which is now deprecated. ## 🔧 Bug Fixes ### SSR Memory Leak from Reactive Scopes Reactive scopes created during SSR were not being disposed, causing memory to accumulate across requests. The plugin now resolves paths directly on the server without creating computed refs, avoiding leaked reactive watchers entirely. ### `**@id**` URLs Now Respect `**app.baseURL**` All `**defineXYZ**` helpers (e.g. `**defineWebPage**`, `**defineOrganization**`) now correctly include `**app.baseURL**` when generating `**@id**` values. Previously, sites deployed under a base path (e.g. `**/docs/**`) would produce `**@id**` URLs missing that prefix. ### Nuxt Context Preserved in Computed Refs Passing a computed ref to `**useSchemaOrg()**` could trigger "useNuxtApp() called outside of setup" errors when Unhead later evaluated the getter. The composable now wraps ref inputs with `**runWithContext()**` to preserve the Nuxt async context. ### 🚀 Features
- **content**: Add `**defineSchemaOrgSchema()**` composable - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/110~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/110) [`**(8b2c4)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8b2c47c) ### 🐞 Bug Fixes
- Dispose reactive scopes after SSR to prevent memory leak - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/107~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/107) [`**(c02ae)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/c02aee6)
- Ensure all defineXYZ helpers respect app.baseUrl for @id - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/108~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/108) [`**(52977)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/52977d6)
- **devtools**: Clean up UI - by @harlan-zw [`**(dede4)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/dede404)
- **docs**: Fix broken code-block in setup-identity guide - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/99~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/99) [`**(b2e6e)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/b2e6e10)
- **useSchemaOrg**: Preserve Nuxt context when resolving computed refs - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/109~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/109) [`**(0700a)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/0700a2f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.10...v6.0.0)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0...v6.0.1)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.0** Major ** The v6 major of Nuxt Robots adds new content composables, improves validation with warnings support, and includes several important bug fixes. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Robots. Its major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### `**robots:config**` Hook Context The `**HookRobotsConfigContext**` now includes a `**warnings: string[]**` field alongside the existing `**errors: string[]**`. If you use the `**robots:config**` Nitro hook and inspect the context, be aware of this new field. ## 🚀 Features ### `**defineRobotsSchema()**` Composable A new composable for `**@nuxt/content**` v3 that simplifies adding robots fields to your content schema.content.config.ts```
import { defineCollection, z } from '@nuxt/content'
import { defineRobotsSchema } from '@nuxtjs/robots/content'
export default defineContentConfig({
collections: {
pages: defineCollection({
type: 'page',
source: '**/*.md',
schema: z.object({
...defineRobotsSchema(z),
}),
}),
},
})
``` This replaces the previous `**asRobotsCollection()**` helper, which is now deprecated. ### Validation Warnings The robots.txt validation system now supports warnings in addition to errors. The first warning checks for `**Disallow: /api**` rules, which may unintentionally block API routes that need to be accessible. Warnings appear in the devtools debug view alongside errors, helping you catch potential misconfigurations before they cause issues. ### Production Debug Route A new `**/__robots__/debug-production.json**` server route is available in development. It fetches your production site's `**robots.txt**`, validates it, and returns a structured response with errors, warnings, parsed groups, and sitemaps. This makes it easy to compare your local configuration against what's live in production. ## 🔧 Bug Fixes ### `**skipSiteIndexable**` Now Skips `**Disallow: /**` Previously, setting `**skipSiteIndexable: true**` (used by sitemap generation) only skipped the site config indexable check. It now also filters out `**Disallow: /**` root disallow rules from path matching, ensuring sitemap URLs are correctly generated on staging or non-indexable environments. Specific path rules like `**/admin**` still apply as expected. ### Route Rules Nullish Guard Route rules with `**undefined**` or `**null**` values no longer cause runtime errors. The `**normaliseRobotsRouteRule**` function now safely handles nullish input. ### Devtools Meta Tag Parsing Meta tag parsing in the devtools debug view is now attribute order agnostic, fixing cases where `` was not detected. ### 🚀 Features
- **content**: Add `**defineRobotsSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/283~~**](https://github.com/nuxt-modules/robots/issues/283) [`**(ac97d)**`](https://github.com/nuxt-modules/robots/commit/ac97d39)
- **validation**: Add warnings support and warn on /api disallow - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/287~~**](https://github.com/nuxt-modules/robots/issues/287) [`**(379bb)**`](https://github.com/nuxt-modules/robots/commit/379bb75) ### 🐞 Bug Fixes
- Guard against undefined routeRules values - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/277~~**](https://github.com/nuxt-modules/robots/issues/277) [`**(393d7)**`](https://github.com/nuxt-modules/robots/commit/393d788)
- `**skipSiteIndexable**` now skips `**disallow: /**` robots.txt rules - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/282~~**](https://github.com/nuxt-modules/robots/issues/282) [`**(57957)**`](https://github.com/nuxt-modules/robots/commit/579571f)
- **devtools**:
- Make meta tag parsing attribute order agnostic - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/280~~**](https://github.com/nuxt-modules/robots/issues/280) [`**(37f52)**`](https://github.com/nuxt-modules/robots/commit/37f5297)
- Production inspect mode - by @harlan-zw [`**(3a626)**`](https://github.com/nuxt-modules/robots/commit/3a626a3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.7.1...v6.0.0)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)last weekv8.0.0** Major ** The v8 release focuses on a fully rewritten devtools experience and several quality of life improvements for Nuxt Content v3 and i18n users. ## ⚠️ Breaking Changes ### Site Config v4 Nuxt Site Config is a module used internally by Nuxt Sitemap. The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v4.0.0). ### `**asSitemapCollection()**` Deprecated The `**asSitemapCollection()**` composable has been replaced by `**defineSitemapSchema()**`. The old API still works but will log a deprecation warning.```
import { defineCollection, z } from '#content/collections'
- import { asSitemapCollection } from '#sitemap/content'
+ import { defineSitemapSchema } from '#sitemap/content'
export const collections = {
- content: defineCollection(asSitemapCollection({
- type: 'page',
- source: '**/*.md',
- schema: z.object({ title: z.string() })
- }))
+ content: defineCollection({
+ type: 'page',
+ source: '**/*.md',
+ schema: z.object({
+ title: z.string(),
+ sitemap: defineSitemapSchema()
+ })
+ })
}
```## 🚀 New Features ### `**defineSitemapSchema()**` Composable A new composable for Nuxt Content v3 that provides a cleaner API for integrating sitemap configuration into your content collections. Supports `**filter**`, `**onUrl**`, and `**name**` options.```
import { defineCollection, z } from '#content/collections'
import { defineSitemapSchema } from '#sitemap/content'
export const collections = {
content: defineCollection({
type: 'page',
source: '**/*.md',
schema: z.object({
title: z.string(),
sitemap: defineSitemapSchema({
filter: entry => !entry.path?.startsWith('/draft'),
onUrl: (url) => {
// customize URL entries
return url
}
})
})
})
}
```### `**definePageMeta**` Sitemap Configuration You can now configure sitemap options directly in your page components using `**definePageMeta**`.```
definePageMeta({
sitemap: {
changefreq: 'daily',
priority: 0.8
}
})
```### i18n Multi-Sitemap with Custom Sitemaps Custom sitemaps with `**includeAppSources: true**` are now automatically expanded per locale, generating `**{locale}-{name}**` formatted sitemaps. ### Debug Production Endpoint A new `**/__sitemap__/debug-production.json**` endpoint is available in development mode, allowing you to inspect what the production sitemap output will look like during development. ## 🐛 Bug Fixes
- **Content v3**: Filter `**.navigation**` paths from sitemap URL generation
- **Content v3**: Guard `**afterParse**` hook to prevent silent HMR failures
- **i18n**: Include base URL in multi-sitemap redirect
- **i18n**: Fix exclude filters when base URL and i18n prefixes are present
- **i18n**: Respect `**autoI18n: false**` to generate single sitemap instead of per-locale sitemaps
- **Types**: Use `**robots**` instead of `**index**` in route rules type definition
- **Chunked sitemaps**: Fix path resolution with `**sitemapsPathPrefix: '/'**`## ⚡ Performance
- Replaced `**chalk**` with `**consola/utils**` for a smaller bundle
- Use `**URL.canParse()**` instead of try/catch `**new URL()**` for URL validation
- Use `**addPrerenderRoutes()**` API instead of manual route pushing ### 🚀 Features
- **content**: Add `**defineSitemapSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/576~~**](https://github.com/nuxt-modules/sitemap/issues/576) [`**(603e6)**`](https://github.com/nuxt-modules/sitemap/commit/603e669) ### 🐞 Bug Fixes
- `**definePageMeta**` sitemap configuration not applied - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/572~~**](https://github.com/nuxt-modules/sitemap/issues/572) [`**(9f74a)**`](https://github.com/nuxt-modules/sitemap/commit/9f74afb)
- Include base URL in multi sitemap redirect - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/573~~**](https://github.com/nuxt-modules/sitemap/issues/573) [`**(94bc2)**`](https://github.com/nuxt-modules/sitemap/commit/94bc20f)
- Respect `**autoI18n: false**` to generate single sitemap - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/570~~**](https://github.com/nuxt-modules/sitemap/issues/570) [`**(94458)**`](https://github.com/nuxt-modules/sitemap/commit/944584b)
- Allow i18n multi-sitemap with custom sitemaps - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/548~~**](https://github.com/nuxt-modules/sitemap/issues/548) [`**(e25b9)**`](https://github.com/nuxt-modules/sitemap/commit/e25b9f1)
- **content**:
- Guard afterParse hook to prevent silent HMR failures - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/577~~**](https://github.com/nuxt-modules/sitemap/issues/577) [`**(0ce4e)**`](https://github.com/nuxt-modules/sitemap/commit/0ce4e6a)
- Filter .navigation paths and document i18n onUrl pattern - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/578~~**](https://github.com/nuxt-modules/sitemap/issues/578) [`**(c0058)**`](https://github.com/nuxt-modules/sitemap/commit/c00585d)
- **i18n**:
- Exclude filters with base URL and i18n prefixes - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/571~~**](https://github.com/nuxt-modules/sitemap/issues/571) [`**(fbc69)**`](https://github.com/nuxt-modules/sitemap/commit/fbc69b3)
- **types**:
- Use `**robots**` instead of `**index**` in route rules - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/569~~**](https://github.com/nuxt-modules/sitemap/issues/569) [`**(e9167)**`](https://github.com/nuxt-modules/sitemap/commit/e91679c) ### 🏎 Performance
- Replace `**chalk**` with `**consola/utils**` - by @KazariEX in [**~~https://github.com/nuxt-modules/sitemap/issues/555~~**](https://github.com/nuxt-modules/sitemap/issues/555) [`**(ae520)**`](https://github.com/nuxt-modules/sitemap/commit/ae520f1) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.6.0...v8.0.0)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.0-beta.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.4...v6.0.0-beta.5)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.0-beta.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.3...v6.0.0-beta.4)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.0-beta.3 ### 🐞 Bug Fixes
- **devtools**: Production inspect mode - by @harlan-zw [`**(3a626)**`](https://github.com/nuxt-modules/robots/commit/3a626a3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.2...v6.0.0-beta.3)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.0-beta.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v6.0.0-beta.1...v6.0.0-beta.2)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last weekv6.0.0-beta.1 ### 🚀 Features
- **content**: Add `**defineRobotsSchema()**` composable - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/283~~**](https://github.com/nuxt-modules/robots/issues/283) [`**(ac97d)**`](https://github.com/nuxt-modules/robots/commit/ac97d39)
- **validation**: Add warnings support and warn on /api disallow - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/287~~**](https://github.com/nuxt-modules/robots/issues/287) [`**(379bb)**`](https://github.com/nuxt-modules/robots/commit/379bb75) ### 🐞 Bug Fixes
- Guard against undefined routeRules values - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/277~~**](https://github.com/nuxt-modules/robots/issues/277) [`**(393d7)**`](https://github.com/nuxt-modules/robots/commit/393d788)
- `**skipSiteIndexable**` now skips `**disallow: /**` robots.txt rules - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/282~~**](https://github.com/nuxt-modules/robots/issues/282) [`**(57957)**`](https://github.com/nuxt-modules/robots/commit/579571f)
- **devtools**: Make meta tag parsing attribute order agnostic - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/280~~**](https://github.com/nuxt-modules/robots/issues/280) [`**(37f52)**`](https://github.com/nuxt-modules/robots/commit/37f5297) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.7.1...v6.0.0-beta.1)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)2 weeks agov4.0.0** Major **## ⚠️ Breaking Changes ### 🏷️ Removed Implicit Site Name Inference Previously, `**site.name**` was automatically inferred from your `**package.json**` `**name**` field or project directory name. This caused package name leakage in public APIs (e.g., `**@nuxtjs/sitemap**` exposing internal package names). You must now explicitly set `**site.name**`:nuxt.config```
export default defineNuxtConfig({
site: {
name: 'My Website',
}
})
``` Or via environment variable:```
NUXT_SITE_NAME="My Website"
``` If not set, `**site.name**` will be `**undefined**`. ### 🔑 Removed Legacy `**site***` Runtime Config Keys The deprecated `**siteUrl**`, `**siteName**`, and `**siteDescription**` runtime config keys have been removed.```
export default defineNuxtConfig({
- runtimeConfig: {
- public: {
- siteUrl: 'https://example.com',
- }
- },
+ site: {
+ url: 'https://example.com',
+ }
})
```### 🔄 Removed Server-Side `**useSiteConfig**` Composable The server-side `**useSiteConfig()**`composable has been removed to resolve auto-import name collisions between client and server composables. Use `**getSiteConfig()**` on the server instead:```
-const config = useSiteConfig(event)
+const config = getSiteConfig(event)
``` The client-side `**useSiteConfig()**` composable is unchanged. ### 🗑️ Removed `**getSiteIndexable**` Composable The `**getSiteIndexable()**` composable has been removed. Check the `**indexable**` property directly:```
-const indexable = getSiteIndexable(event)
+const { indexable } = getSiteConfig(event)
```### 📦 Removed `**#internal/nuxt-site-config**` Barrel Export The legacy `**#internal/nuxt-site-config**` import path has been removed. Use the documented public APIs instead. ### 🏗️ Removed `**SiteConfig**` Type Alias The deprecated `**SiteConfig**` type alias has been removed. Use `**SiteConfigResolved**` instead:```
-import type { SiteConfig } from 'nuxt-site-config'
+import type { SiteConfigResolved } from 'nuxt-site-config'
```## ✨ New Features ### 🎯 Named Priority Constants Site config priority levels are now exposed as named constants for better readability when setting config priorities:```
import { SiteConfigPriority } from 'site-config-stack'
updateSiteConfig({
name: 'My Site',
_priority: SiteConfigPriority.runtime,
})
``` Available priorities: `**system**`, `**vendor**`, `**nitro**`, `**config**`, `**i18n**`, `**build**`, `**runtime**`. ### 🚨 Breaking Changes
- Remove implicit site name inference from package.json, rootDir, and legacy runtimeConfig - by @harlan-zw [`**(e7538)**`](https://github.com/harlan-zw/nuxt-site-config/commit/e753810)
- Remove `**#internal/nuxt-site-config**` legacy barrel export - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/86~~**](https://github.com/harlan-zw/nuxt-site-config/issues/86) [`**(b3890)**`](https://github.com/harlan-zw/nuxt-site-config/commit/b3890a4)
- Remove deprecated server useSiteConfig to resolve auto-import collision - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/82~~**](https://github.com/harlan-zw/nuxt-site-config/issues/82) [`**(bee54)**`](https://github.com/harlan-zw/nuxt-site-config/commit/bee548f) ### 🐞 Bug Fixes
- Avoid SSR memory leak from computed refs in i18n plugin - by @harlan-zw [`**(2bef8)**`](https://github.com/harlan-zw/nuxt-site-config/commit/2bef847)
- Avoid SSR memory leak from computed refs in i18n plugin - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/81~~**](https://github.com/harlan-zw/nuxt-site-config/issues/81) [`**(9bda3)**`](https://github.com/harlan-zw/nuxt-site-config/commit/9bda35f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.21...v4.0.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.1.2 ### 🐞 Bug Fixes
- Auto-detect NuxtHub KV for cache storage - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/517~~**](https://github.com/nuxt-modules/og-image/issues/517) [`**(ee955)**`](https://github.com/nuxt-modules/og-image/commit/ee955a3b)
- **tw4**: Use safe module resolution to prevent throws for unresolvable plugins - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/519~~**](https://github.com/nuxt-modules/og-image/issues/519) [`**(3a8b1)**`](https://github.com/nuxt-modules/og-image/commit/3a8b1fbf) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.1.1...v6.1.2)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.1.1 ### 🐞 Bug Fixes
- Add missing option keys to URL encoding and prop separation - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/516~~**](https://github.com/nuxt-modules/og-image/issues/516) [`**(db201)**`](https://github.com/nuxt-modules/og-image/commit/db201c21)
- Defer x-nitro-prerender header to prevent stale hash URLs during prerender - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/514~~**](https://github.com/nuxt-modules/og-image/issues/514) [`**(074e9)**`](https://github.com/nuxt-modules/og-image/commit/074e997c)
- Base64-encode non-ASCII values in URL path params - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/515~~**](https://github.com/nuxt-modules/og-image/issues/515) [`**(b7009)**`](https://github.com/nuxt-modules/og-image/commit/b7009663) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.1.0...v6.1.1)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.1.0 ### 🚀 Features
- **cli**:
- Add `**create**` and `**switch**` commands with DX improvements - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/508~~**](https://github.com/nuxt-modules/og-image/issues/508) [`**(871b2)**`](https://github.com/nuxt-modules/og-image/commit/871b248f)
- **devtools**:
- Add production preview toggle - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/509~~**](https://github.com/nuxt-modules/og-image/issues/509) [`**(36119)**`](https://github.com/nuxt-modules/og-image/commit/36119683)
- Add component creation from empty state - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/510~~**](https://github.com/nuxt-modules/og-image/issues/510) [`**(4d710)**`](https://github.com/nuxt-modules/og-image/commit/4d710709) ### 🐞 Bug Fixes
- Recover from v5 defineOgImage syntax - by @harlan-zw [`**(1e882)**`](https://github.com/nuxt-modules/og-image/commit/1e882060)
- **devtools**: Use actual content width for preview scaling - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/506~~**](https://github.com/nuxt-modules/og-image/issues/506) [`**(ff5df)**`](https://github.com/nuxt-modules/og-image/commit/ff5dfa4f)
- **encoding**: Avoid pre decoded params to be truncated - by @larbish in [**~~https://github.com/nuxt-modules/og-image/issues/504~~**](https://github.com/nuxt-modules/og-image/issues/504) [`**(c5fac)**`](https://github.com/nuxt-modules/og-image/commit/c5faccbb)
- **fonts**: Detect font families from script setup computed properties - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/507~~**](https://github.com/nuxt-modules/og-image/issues/507) [`**(cbd7d)**`](https://github.com/nuxt-modules/og-image/commit/cbd7d226) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.7...v6.1.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.0.7 ### 🐞 Bug Fixes
- Broken windows path resolutions - by @harlan-zw [`**(dd1ae)**`](https://github.com/nuxt-modules/og-image/commit/dd1ae90b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.6...v6.0.7)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.0.6 ### 🐞 Bug Fixes
- Prevent crash when defineOgImage runs client-side during layout transitions - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/502~~**](https://github.com/nuxt-modules/og-image/issues/502) [`**(2403d)**`](https://github.com/nuxt-modules/og-image/commit/2403d86c)
- **takumi**: Use real font family names for correct font-weight matching - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/503~~**](https://github.com/nuxt-modules/og-image/issues/503) [`**(2206d)**`](https://github.com/nuxt-modules/og-image/commit/2206d01b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.5...v6.0.6)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 weeks agov4.0.0** Major ** 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
- **OG Image v6**: New [**~~Takumi renderer~~**](https://nuxtseo.com/docs/og-image) (2-10x faster), [**~~multiple OG images per page~~**](https://nuxtseo.com/docs/og-image), native [**~~Tailwind v4~~**](https://nuxtseo.com/docs/og-image) and [**~~@nuxt/fonts~~**](https://nuxtseo.com/docs/og-image) integration, and redesigned DevTools
- **Robots**: [**~~Nuxt 4 compatibility~~**](https://github.com/nuxt-modules/robots/issues/272) support and DevTools fixes
- **Site Config**: Improved dev mode URL handling and multi-tenancy fixes ### ⚠️ Breaking Changes
- **OG Image v6**: See [**~~migration notes~~**](https://nuxtseo.com/docs/og-image/migration-guide/v6) ### ✅ 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~~**](https://nuxtseo.com/og-image/migration-guide/v6) 📦 Module Updates
- 🐛 Site Config: Don't force https protocol in dev mode ([**~~https://github.com/harlan-zw/nuxt-site-config/commit/6788d81~~**](https://github.com/harlan-zw/nuxt-site-config/commit/6788d81))
- 🐛 Site Config: Strip port from host when matching multi-tenancy config ([**~~https://github.com/harlan-zw/nuxt-site-config/commit/863a8b3~~**](https://github.com/harlan-zw/nuxt-site-config/commit/863a8b3))
- 🐛 Site Config: Fix broken IPv6 loopback handling ([**~~https://github.com/harlan-zw/nuxt-site-config/commit/e5e09da~~**](https://github.com/harlan-zw/nuxt-site-config/commit/e5e09da)) [**~~https://github.com/harlan-zw/nuxt-seo/compare/v3.4.0...v4.0.0~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.4.0...v4.0.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.0.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.4...v6.0.5)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.0.4 ### 🐞 Bug Fixes
- Don't mock null bindings - by @harlan-zw [`**(c4656)**`](https://github.com/nuxt-modules/og-image/commit/c46560be) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.3...v6.0.4)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.0.3 ### 🐞 Bug Fixes
- Normalize font casing - by @harlan-zw [`**(61f8f)**`](https://github.com/nuxt-modules/og-image/commit/61f8fb36)
- Svg dimensions not properly resolving in runtime instances - by @harlan-zw [`**(4a5c8)**`](https://github.com/nuxt-modules/og-image/commit/4a5c8324)
- Resolve lint errors for CI - by @harlan-zw [`**(aac48)**`](https://github.com/nuxt-modules/og-image/commit/aac48d30) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.2...v6.0.3)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)2 weeks agov6.0.2 ### 🐞 Bug Fixes
- **migration**:
- Broken warning - by @harlan-zw [`**(d87d8)**`](https://github.com/nuxt-modules/og-image/commit/d87d88a1)
- **satori**:
- Better css var matching - by @harlan-zw [`**(251f1)**`](https://github.com/nuxt-modules/og-image/commit/251f1ee4)
- Infer SVG dimensions from parent - by @harlan-zw [`**(94ef0)**`](https://github.com/nuxt-modules/og-image/commit/94ef0abc)
- **takumi**:
- Broken font weight matching - by @harlan-zw [`**(3f0c5)**`](https://github.com/nuxt-modules/og-image/commit/3f0c5eaa)
- Html -> nodes attr ordering - by @harlan-zw [`**(35ea6)**`](https://github.com/nuxt-modules/og-image/commit/35ea6145) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.1...v6.0.2)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 weeks agov6.0.1 ### 🐞 Bug Fixes
- Support node cluster - by @harlan-zw [`**(e5c25)**`](https://github.com/nuxt-modules/og-image/commit/e5c2571c)
- **migration**: `**defineOgImage({ url })**` -> `**useSeoMeta**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/496~~**](https://github.com/nuxt-modules/og-image/issues/496) [`**(2e762)**`](https://github.com/nuxt-modules/og-image/commit/2e762f33) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0...v6.0.1)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 weeks agov6.0.0** Major **
> Nuxt OG Image v6 is the next major release. Nuxt OG Image v6 brings a complete overhaul focused on **performance**, **modern tooling**, and **developer experience**. ## 📣 Highlights
- **🚀 Takumi** - [**~~Takumi~~**](https://takumi.kane.tw) is now the recommended renderer, offering 2-10x faster image generation with the same feature set as Satori
- **🎨 First-class CSS support** - Tailwind v4, UnoCSS, CSS variables, and Nuxt UI v3 colors all just work out of the box
- **🖥️ Redesigned DevTools** - improved OG image debugging experience with better previews, accessibility, and Bluesky social card support ## 📖 Migration Guide Full migration guide: **[**~~https://nuxtseo.com/og-image/migration-guide/v6~~**](https://nuxtseo.com/og-image/migration-guide/v6)**### Quick Migration```
npx nuxt-og-image migrate v6
```## Notable Changes ### 🚀 Takumi Renderer (Recommended) [**~~Takumi~~**](https://takumi.kane.tw) is a Rust-based renderer that directly rasterizes to PNG/JPEG/WebP - no SVG intermediate step. It's **2-10x faster** than Satori+Resvg. See [**~~PR #414~~**](https://github.com/nuxt-modules/og-image/pull/414). Takumi and Satori are feature-compatible within Nuxt OG Image - both support Tailwind CSS, custom fonts, emoji, edge runtimes, and all the same template features. The difference is speed: Takumi is always faster thanks to its Rust-based direct rasterization. Use Takumi by creating components with the `**.takumi.vue**` suffix:```
components/OgImage/MyTemplate.takumi.vue
``` See the [**~~Takumi docs~~**](https://nuxtseo.com/og-image/renderers/takumi) for the full feature list. ### 🎨 First-Class CSS Support Nuxt OG Image now has first-class support for multiple CSS approaches - not just Tailwind. All of these work out of the box with zero configuration: See [**~~PR #430~~**](https://github.com/nuxt-modules/og-image/pull/430).
- **Tailwind v4** - build-time class extraction with Tailwind's CSS engine, `**@theme**` values just work
- **UnoCSS** - full UnoCSS support
- **CSS Variables** - use your app's CSS custom properties directly in OG image templates
- **Nuxt UI v3** - semantic colors (`**primary**`, `**secondary**`, etc.) are automatically resolved No configuration needed. ### 🖥️ Redesigned DevTools The OG image DevTools have been completely overhauled:
- Better image preview and debugging
- More accessible interface
- Improved error reporting and diagnostics
- Bluesky social card support ### ⚡ Install Renderer Dependencies Renderer dependencies are no longer bundled. Install what you need based on your renderer and runtime. See [**~~PR #415~~**](https://github.com/nuxt-modules/og-image/pull/415).**Takumi (recommended):**```
npm i @takumi-rs/core # Node.js
npm i @takumi-rs/wasm # Edge runtimes
```**Satori:**```
npm i satori @resvg/resvg-js # Node.js
npm i satori @resvg/resvg-wasm # Edge runtimes
```**Browser:**```
npm i playwright-core
``` Running `**nuxi dev**` will prompt you to install missing dependencies automatically. ### 🖼️ Multiple OG Images Per Page Define multiple images with different dimensions for different platforms. Shared props are passed once and applied to all variants. See [**~~PR #305~~**](https://github.com/nuxt-modules/og-image/pull/305). #### Shared Props with Variants (Recommended) Pass shared props as the second argument and size variants as the third — no prop duplication needed:```
defineOgImage('NuxtSeo', { title: 'My Page' }, [
{ key: 'og' }, // Default 1200x600 for Twitter/Facebook
{ key: 'whatsapp', width: 800, height: 800 }, // Square for WhatsApp
])
``` Per-variant props override shared props when needed:```
defineOgImage('NuxtSeo', { title: 'My Page', description: 'Full description' }, [
{ key: 'og' },
{ key: 'whatsapp', width: 800, height: 800, props: { description: 'Short' } },
])
```#### Array Syntax Alternatively, pass all options inline per variant:```
defineOgImage('NuxtSeo', [
{ props: { title: 'My Page' } },
{ props: { title: 'My Page' }, key: 'whatsapp', width: 800, height: 800 },
])
```### 🔤 @nuxt/fonts Integration Custom fonts now use [**~~@nuxt/fonts~~**](https://fonts.nuxt.com) instead of the legacy `**ogImage.fonts**` config. See [**~~PR #432~~**](https://github.com/nuxt-modules/og-image/pull/432).```
export default defineNuxtConfig({
modules: ['@nuxt/fonts', 'nuxt-og-image'],
fonts: {
families: [
{ name: 'Inter', weights: [400, 700], global: true }
]
}
})
``` The `**global: true**` option is required for fonts to be available in OG Image rendering. ### 📦 Component Renderer Suffix OG Image components now require a renderer suffix in their filename. This enables automatic renderer detection, multiple renderer variants, and tree-shaking. See [**~~PR #433~~**](https://github.com/nuxt-modules/og-image/pull/433).```
h1. Before
components/OgImage/MyTemplate.vue
h1. After
components/OgImage/MyTemplate.takumi.vue # Recommended
components/OgImage/MyTemplate.satori.vue
``` Run the migration CLI to rename automatically:```
npx nuxt-og-image migrate v6
```### 🏷️ Community Templates Must Be Ejected Community templates (`**NuxtSeo**`, `**SimpleBlog**`, etc.) are no longer bundled in production. Eject them to your project before building. See [**~~PR #426~~**](https://github.com/nuxt-modules/og-image/pull/426).```
npx nuxt-og-image eject NuxtSeo
``` Templates continue to work in development without ejecting. ### 🔗 New URL Structure OG Image URLs now use a Cloudinary-style format with options encoded in the path. This enables better CDN caching since identical options produce identical URLs. See [**~~PR #305~~**](https://github.com/nuxt-modules/og-image/pull/305). | **v5** | **v6** |
| --- | --- | | `**/__og-image__/image/**` | `**/_og/d/**` | | `**/__og-image__/static/**` | `**/_og/s/**` | ### 🚨 Breaking Changes
- Tech debt cleanup for v6 - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/410~~**](https://github.com/nuxt-modules/og-image/issues/410) [`**(598f3)**`](https://github.com/nuxt-modules/og-image/commit/598f3b1a)
- Multiple og images, reworked paths - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/305~~**](https://github.com/nuxt-modules/og-image/issues/305) [`**(c9058)**`](https://github.com/nuxt-modules/og-image/commit/c9058c4f)
- Require explicit provider dependencies - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/415~~**](https://github.com/nuxt-modules/og-image/issues/415) [`**(94eae)**`](https://github.com/nuxt-modules/og-image/commit/94eaeb4f)
- Require ejecting community templates - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/426~~**](https://github.com/nuxt-modules/og-image/issues/426) [`**(22cbd)**`](https://github.com/nuxt-modules/og-image/commit/22cbdd7c)
- Ignore query params in cache key by default - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/427~~**](https://github.com/nuxt-modules/og-image/issues/427) [`**(407a4)**`](https://github.com/nuxt-modules/og-image/commit/407a453c)
- Require component suffix for renderer target - by @harlan-zw and **Copilot Autofix powered by AI** in [**~~https://github.com/nuxt-modules/og-image/issues/433~~**](https://github.com/nuxt-modules/og-image/issues/433) [`**(357e3)**`](https://github.com/nuxt-modules/og-image/commit/357e3253)
- Native tailwind v4 support - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/430~~**](https://github.com/nuxt-modules/og-image/issues/430) [`**(0e046)**`](https://github.com/nuxt-modules/og-image/commit/0e046432)
- Nuxt/fonts integration - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/432~~**](https://github.com/nuxt-modules/og-image/issues/432) [`**(c64fd)**`](https://github.com/nuxt-modules/og-image/commit/c64fd33e)
- Rename chromium renderer to browser, add cloudflare support - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/461~~**](https://github.com/nuxt-modules/og-image/issues/461) [`**(55594)**`](https://github.com/nuxt-modules/og-image/commit/55594d91)
- Drop component support - by @harlan-zw [`**(d0d2f)**`](https://github.com/nuxt-modules/og-image/commit/d0d2f4ad)
- Drop css-inline support - by @harlan-zw [`**(0936a)**`](https://github.com/nuxt-modules/og-image/commit/0936a532)
- **takumi**: Revert back to default DPI 1 - by @harlan-zw [`**(d60e2)**`](https://github.com/nuxt-modules/og-image/commit/d60e2d64) ### 🚀 Features
- Add Takumi renderer support - by @harlan-zw and **Claude Opus 4.5** [`**(f1d1f)**`](https://github.com/nuxt-modules/og-image/commit/f1d1f8c7)
- Add linkedom as explicit dependency for takumi renderer - by @harlan-zw [`**(0b9f8)**`](https://github.com/nuxt-modules/og-image/commit/0b9f88ba)
- CI build cache - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/413~~**](https://github.com/nuxt-modules/og-image/issues/413) [`**(51f23)**`](https://github.com/nuxt-modules/og-image/commit/51f23ff7)
- Add Takumi renderer support - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/414~~**](https://github.com/nuxt-modules/og-image/issues/414) [`**(7a347)**`](https://github.com/nuxt-modules/og-image/commit/7a347461)
- Local emoji sources - by @harlan-zw and **Claude Opus 4.5** [`**(611d0)**`](https://github.com/nuxt-modules/og-image/commit/611d03b9)
- Local emoji sources - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/420~~**](https://github.com/nuxt-modules/og-image/issues/420) [`**(c3db6)**`](https://github.com/nuxt-modules/og-image/commit/c3db6a0e)
- New templates - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/409~~**](https://github.com/nuxt-modules/og-image/issues/409) [`**(43436)**`](https://github.com/nuxt-modules/og-image/commit/434367eb)
- Add UnoCSS provider for OG image class resolution - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/442~~**](https://github.com/nuxt-modules/og-image/issues/442) [`**(c5a14)**`](https://github.com/nuxt-modules/og-image/commit/c5a146d8)
- Rework component resolution for multi-renderer support - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/450~~**](https://github.com/nuxt-modules/og-image/issues/450) [`**(cde40)**`](https://github.com/nuxt-modules/og-image/commit/cde40850)
- Per-component font loading and optimized font/renderer bundling - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/454~~**](https://github.com/nuxt-modules/og-image/issues/454) [`**(dbee0)**`](https://github.com/nuxt-modules/og-image/commit/dbee04fe)
- Optional @nuxt/fonts with bundled Inter fallback - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/455~~**](https://github.com/nuxt-modules/og-image/issues/455) [`**(7ad13)**`](https://github.com/nuxt-modules/og-image/commit/7ad1341c)
- Refactor font system with multi-font family support - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/466~~**](https://github.com/nuxt-modules/og-image/issues/466) [`**(81f05)**`](https://github.com/nuxt-modules/og-image/commit/81f05dc4)
- Community template dark/light mode support - by @harlan-zw [`**(c8ee9)**`](https://github.com/nuxt-modules/og-image/commit/c8ee9d6e)
- Support nested vue components - by @harlan-zw [`**(f9be0)**`](https://github.com/nuxt-modules/og-image/commit/f9be0760)
- Runtime unicode-range font filtering - by @harlan-zw [`**(a8c02)**`](https://github.com/nuxt-modules/og-image/commit/a8c02dff)
- **devtools**: Major polishing - by @harlan-zw [`**(f1273)**`](https://github.com/nuxt-modules/og-image/commit/f12733a6)
- **takumi**: Community templates - by @harlan-zw [`**(527f4)**`](https://github.com/nuxt-modules/og-image/commit/527f4745) ### 🐞 Bug Fixes
- Resolve typecheck errors for takumi renderer - by @harlan-zw and **Claude Opus 4.5** [`**(2cb46)**`](https://github.com/nuxt-modules/og-image/commit/2cb46f3b)
- Remove invalid eslint-disable comments - by @harlan-zw [`**(9be7b)**`](https://github.com/nuxt-modules/og-image/commit/9be7b8d3)
- Remove unused ts-expect-error directive - by @harlan-zw and **Claude Opus 4.5** [`**(23efb)**`](https://github.com/nuxt-modules/og-image/commit/23efb8a6)
- Light-weight emoji resolves - by @harlan-zw [`**(bbeee)**`](https://github.com/nuxt-modules/og-image/commit/bbeeea16)
- Flakey images - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/421~~**](https://github.com/nuxt-modules/og-image/issues/421) [`**(05f43)**`](https://github.com/nuxt-modules/og-image/commit/05f43596)
- Warn when using route rule wildcards - by @harlan-zw [`**(1d142)**`](https://github.com/nuxt-modules/og-image/commit/1d1428b6)
- Force social platform cache invalidation between builds - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/423~~**](https://github.com/nuxt-modules/og-image/issues/423) [`**(16ed4)**`](https://github.com/nuxt-modules/og-image/commit/16ed4bf4)
- Dynamic runtime cache storage - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/425~~**](https://github.com/nuxt-modules/og-image/issues/425) [`**(10886)**`](https://github.com/nuxt-modules/og-image/commit/10886c92)
- Support error.vue navigation - by @harlan-zw [`**(d22ed)**`](https://github.com/nuxt-modules/og-image/commit/d22ede31)
- Support local fonts with `**zeroRuntime**` mode - by @harlan-zw [`**(7afb1)**`](https://github.com/nuxt-modules/og-image/commit/7afb1dc7)
- Support local fonts with `**zeroRuntime**` mode - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/428~~**](https://github.com/nuxt-modules/og-image/issues/428) [`**(97fb4)**`](https://github.com/nuxt-modules/og-image/commit/97fb4b25)
- Avoid crashing main thread with resvg errors - by @harlan-zw [`**(7b5b1)**`](https://github.com/nuxt-modules/og-image/commit/7b5b1af8)
- Always fallback to emoji fetching in edge runtimes - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/429~~**](https://github.com/nuxt-modules/og-image/issues/429) [`**(4ccd2)**`](https://github.com/nuxt-modules/og-image/commit/4ccd29e4)
- Exclude default options from URLs - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/431~~**](https://github.com/nuxt-modules/og-image/issues/431) [`**(09d24)**`](https://github.com/nuxt-modules/og-image/commit/09d24449)
- Auto-eject components in dev - by @harlan-zw [`**(265ca)**`](https://github.com/nuxt-modules/og-image/commit/265cad56)
- Improved HMR - by @harlan-zw [`**(055ea)**`](https://github.com/nuxt-modules/og-image/commit/055eadf9)
- Require nuxt/fonts v0.13 - by @harlan-zw [`**(ff3bb)**`](https://github.com/nuxt-modules/og-image/commit/ff3bbd06)
- False detection of OgImageScreenshot.ts - by @harlan-zw [`**(4191d)**`](https://github.com/nuxt-modules/og-image/commit/4191d025)
- Unref computed props in defineOgImage to prevent crash - by @harlan-zw [`**(6a4d7)**`](https://github.com/nuxt-modules/og-image/commit/6a4d73fd)
- Nicer migration warnings - by @harlan-zw [`**(e87dd)**`](https://github.com/nuxt-modules/og-image/commit/e87dde85)
- Edge detection for migration wizard - by @harlan-zw [`**(fd94e)**`](https://github.com/nuxt-modules/og-image/commit/fd94e0ec)
- Safer components check - by @harlan-zw [`**(a7658)**`](https://github.com/nuxt-modules/og-image/commit/a7658b7e)
- Broken font cache for subsets - by @harlan-zw [`**(c07a7)**`](https://github.com/nuxt-modules/og-image/commit/c07a7100)
- Selective font subsets - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/445~~**](https://github.com/nuxt-modules/og-image/issues/445) [`**(b1f4a)**`](https://github.com/nuxt-modules/og-image/commit/b1f4a38a)
- Allow disabling emoji support and remove 24MB bundle - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/444~~**](https://github.com/nuxt-modules/og-image/issues/444) [`**(caaf8)**`](https://github.com/nuxt-modules/og-image/commit/caaf8231)
- Convert WOFF2 fonts to TTF for Satori compatibility - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/449~~**](https://github.com/nuxt-modules/og-image/issues/449) [`**(0d68b)**`](https://github.com/nuxt-modules/og-image/commit/0d68b056)
- Filter fonts before WOFF2 conversion and use programmatic wawoff2 - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/451~~**](https://github.com/nuxt-modules/og-image/issues/451) [`**(ac3d1)**`](https://github.com/nuxt-modules/og-image/commit/ac3d1510)
- Resolve dependencies up front - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/456~~**](https://github.com/nuxt-modules/og-image/issues/456) [`**(1194b)**`](https://github.com/nuxt-modules/og-image/commit/1194b987)
- Broken font resolution for woff2-only subsets and dev mode - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/458~~**](https://github.com/nuxt-modules/og-image/issues/458) [`**(ef72b)**`](https://github.com/nuxt-modules/og-image/commit/ef72b155)
- Avoid encoded urls at runtime - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/459~~**](https://github.com/nuxt-modules/og-image/issues/459) [`**(696d9)**`](https://github.com/nuxt-modules/og-image/commit/696d908b)
- Path resolving bug - by @harlan-zw [`**(34976)**`](https://github.com/nuxt-modules/og-image/commit/349767b3)
- Broken dev tools - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/460~~**](https://github.com/nuxt-modules/og-image/issues/460) [`**(31979)**`](https://github.com/nuxt-modules/og-image/commit/31979e87)
- Gracefully handle older nuxt/font versions - by @harlan-zw [`**(b14ae)**`](https://github.com/nuxt-modules/og-image/commit/b14aeb11)
- Broken layer support - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/463~~**](https://github.com/nuxt-modules/og-image/issues/463) [`**(3ad2f)**`](https://github.com/nuxt-modules/og-image/commit/3ad2f4ff)
- Remove z-index from community templates - by @harlan-zw [`**(02369)**`](https://github.com/nuxt-modules/og-image/commit/02369e87)
- Avoid prompting user on renderer if deps are installed - by @harlan-zw [`**(67dc8)**`](https://github.com/nuxt-modules/og-image/commit/67dc8d26)
- Broken @font-face for HTML preview - by @harlan-zw [`**(e4878)**`](https://github.com/nuxt-modules/og-image/commit/e4878d5a)
- Compat check broken - by @harlan-zw [`**(057df)**`](https://github.com/nuxt-modules/og-image/commit/057df6a8)
- Strip `**!important**` - by @harlan-zw [`**(b5684)**`](https://github.com/nuxt-modules/og-image/commit/b568481e)
- Warn when using unsupported font weight - by @harlan-zw [`**(c70c8)**`](https://github.com/nuxt-modules/og-image/commit/c70c81bb)
- Warn when using unsupported font weight - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/467~~**](https://github.com/nuxt-modules/og-image/issues/467) [`**(1d368)**`](https://github.com/nuxt-modules/og-image/commit/1d368338)
- Misc style issues - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/468~~**](https://github.com/nuxt-modules/og-image/issues/468) [`**(86068)**`](https://github.com/nuxt-modules/og-image/commit/86068ac7)
- Resolve fonts from @theme when other fonts already exist - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/471~~**](https://github.com/nuxt-modules/og-image/issues/471) [`**(cfcf4)**`](https://github.com/nuxt-modules/og-image/commit/cfcf41d0)
- HMR for OG image template components in DevTools - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/473~~**](https://github.com/nuxt-modules/og-image/issues/473) [`**(15eec)**`](https://github.com/nuxt-modules/og-image/commit/15eeced6)
- Don't validate on nuxt prepare - by @harlan-zw [`**(76a85)**`](https://github.com/nuxt-modules/og-image/commit/76a8532a)
- Don't include empty `**props={}**` in URLs - by @harlan-zw [`**(7caa4)**`](https://github.com/nuxt-modules/og-image/commit/7caa494b)
- Map custom font names i.e `**font-display**` -> font file - by @harlan-zw [`**(3d4a5)**`](https://github.com/nuxt-modules/og-image/commit/3d4a5ea4)
- Ensure correct template renders when using multiple OG image templates - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/470~~**](https://github.com/nuxt-modules/og-image/issues/470) [`**(2e816)**`](https://github.com/nuxt-modules/og-image/commit/2e816b4e)
- Tighten component name resolution to prevent false matches - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/469~~**](https://github.com/nuxt-modules/og-image/issues/469) [`**(b4668)**`](https://github.com/nuxt-modules/og-image/commit/b4668434)
- Broken reactive types on `**defineOgImage()**` props - by @harlan-zw [`**(4df12)**`](https://github.com/nuxt-modules/og-image/commit/4df12b20)
- Run nuxt prepare once migration is finished - by @harlan-zw [`**(e9aa0)**`](https://github.com/nuxt-modules/og-image/commit/e9aa017d)
- Broken unocss parser - by @harlan-zw [`**(f88f8)**`](https://github.com/nuxt-modules/og-image/commit/f88f823a)
- Drop getNitroOrigin() fetch - by @harlan-zw [`**(6c3b0)**`](https://github.com/nuxt-modules/og-image/commit/6c3b039b)
- Broken nuxt/font hints - by @harlan-zw [`**(d6db9)**`](https://github.com/nuxt-modules/og-image/commit/d6db985e)
- Prerender images all using the same key - by @harlan-zw [`**(40b43)**`](https://github.com/nuxt-modules/og-image/commit/40b43a6d)
- Dev environment edge cases - by @harlan-zw [`**(56ad2)**`](https://github.com/nuxt-modules/og-image/commit/56ad26a5)
- Font edge cases - by @harlan-zw [`**(e7aef)**`](https://github.com/nuxt-modules/og-image/commit/e7aefd6c)
- Drop jiti app.config.ts load - by @harlan-zw [`**(f1634)**`](https://github.com/nuxt-modules/og-image/commit/f1634bc6)
- Prefer native mjs loading for app.config - by @harlan-zw [`**(8a02b)**`](https://github.com/nuxt-modules/og-image/commit/8a02b571)
- Font loading regression when fontRequirements.families excludes @nuxt/fonts families - by @harlan-zw [`**(6c83b)**`](https://github.com/nuxt-modules/og-image/commit/6c83ba94)
- Stripe gradient color interpolation - by @harlan-zw [`**(f4ddd)**`](https://github.com/nuxt-modules/og-image/commit/f4ddd6b4)
- Quiter font warnings - by @harlan-zw [`**(e71ca)**`](https://github.com/nuxt-modules/og-image/commit/e71ca874)
- No font weight warnings from community templates - by @harlan-zw [`**(db043)**`](https://github.com/nuxt-modules/og-image/commit/db043d23)
- No font warnings from community templates - by @harlan-zw [`**(541e1)**`](https://github.com/nuxt-modules/og-image/commit/541e1108)
- Process `` blocks - by @harlan-zw [`**(64d59)**`](https://github.com/nuxt-modules/og-image/commit/64d59ccb)
- Circular dependency type issue - by @harlan-zw [`**(88054)**`](https://github.com/nuxt-modules/og-image/commit/88054aa6)
- On-demand font resolutions - by @harlan-zw [`**(6b505)**`](https://github.com/nuxt-modules/og-image/commit/6b5055ef)
- Detect svg images properly - by @harlan-zw [`**(64e2a)**`](https://github.com/nuxt-modules/og-image/commit/64e2a7a9)
- Ensure root node fits container - by @harlan-zw [`**(bdde7)**`](https://github.com/nuxt-modules/og-image/commit/bdde7127)
- Font stability - by @harlan-zw [`**(b7735)**`](https://github.com/nuxt-modules/og-image/commit/b7735546)
- Css stability - by @harlan-zw [`**(acb75)**`](https://github.com/nuxt-modules/og-image/commit/acb75474)
- Tw v4.1 compat - by @harlan-zw [`**(a883f)**`](https://github.com/nuxt-modules/og-image/commit/a883f60f)
- Broken local fonts at runtime - by @harlan-zw [`**(c2a0b)**`](https://github.com/nuxt-modules/og-image/commit/c2a0b61a)
- Transform imported components - by @harlan-zw [`**(ad590)**`](https://github.com/nuxt-modules/og-image/commit/ad5906c1)
- Nested component HMR - by @harlan-zw [`**(19bf8)**`](https://github.com/nuxt-modules/og-image/commit/19bf82ea)
- Font issues - by @harlan-zw [`**(163c5)**`](https://github.com/nuxt-modules/og-image/commit/163c5931)
- Font tree shaking - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/482~~**](https://github.com/nuxt-modules/og-image/issues/482) [`**(a57c3)**`](https://github.com/nuxt-modules/og-image/commit/a57c30ad)
- Quiter font warnings - by @harlan-zw [`**(c84be)**`](https://github.com/nuxt-modules/og-image/commit/c84be17f)
- Runtime unicode-range font filtering - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/483~~**](https://github.com/nuxt-modules/og-image/issues/483) [`**(6c00c)**`](https://github.com/nuxt-modules/og-image/commit/6c00c240)
- Re-export `**getOgImagePath**` as deprecated - by @harlan-zw [`**(00497)**`](https://github.com/nuxt-modules/og-image/commit/00497163)
- Skip community components from font warnings - by @harlan-zw [`**(b3367)**`](https://github.com/nuxt-modules/og-image/commit/b3367992)
- Support Devanagari and non-Latin fonts in Takumi renderer - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/485~~**](https://github.com/nuxt-modules/og-image/issues/485) [`**(b7356)**`](https://github.com/nuxt-modules/og-image/commit/b7356686)
- Simplify loadNuxtUiColors to use app:resolve hook - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/486~~**](https://github.com/nuxt-modules/og-image/issues/486) [`**(682b5)**`](https://github.com/nuxt-modules/og-image/commit/682b5f09)
- Avoid trying to bundle mac native fonts from fallbacks - by @harlan-zw [`**(a5333)**`](https://github.com/nuxt-modules/og-image/commit/a5333c43)
- Improved font debugging - by @harlan-zw [`**(fdb7a)**`](https://github.com/nuxt-modules/og-image/commit/fdb7a601)
- Avoid nitro rebuild on hmr edits - by @harlan-zw [`**(f4041)**`](https://github.com/nuxt-modules/og-image/commit/f4041dfb)
- Support colon-separated UnoCSS icon classes - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/487~~**](https://github.com/nuxt-modules/og-image/issues/487) [`**(6c733)**`](https://github.com/nuxt-modules/og-image/commit/6c733d1a)
- Ignore emoji fonts - by @harlan-zw [`**(ba55b)**`](https://github.com/nuxt-modules/og-image/commit/ba55b047)
- Support more ergonomic multiple og images - by @harlan-zw [`**(3971c)**`](https://github.com/nuxt-modules/og-image/commit/3971c092)
- @takumi-rs/* dep version missmatch - by @HanXHX in [**~~https://github.com/nuxt-modules/og-image/issues/489~~**](https://github.com/nuxt-modules/og-image/issues/489) [`**(bb98f)**`](https://github.com/nuxt-modules/og-image/commit/bb98f7be)
- Webworker dev stability - by @harlan-zw [`**(720de)**`](https://github.com/nuxt-modules/og-image/commit/720debbe)
- Font stability - by @harlan-zw [`**(3717e)**`](https://github.com/nuxt-modules/og-image/commit/3717e72e)
- Community component matching mismatch - by @harlan-zw [`**(779a2)**`](https://github.com/nuxt-modules/og-image/commit/779a27a0)
- Broken cloudflare durable - by @harlan-zw [`**(a98e2)**`](https://github.com/nuxt-modules/og-image/commit/a98e2136)
- Broken cloudflare durable - by @harlan-zw [`**(684df)**`](https://github.com/nuxt-modules/og-image/commit/684df85f)
- Edge runtime WASM bindings for satori yoga and resvg - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/492~~**](https://github.com/nuxt-modules/og-image/issues/492) [`**(e3293)**`](https://github.com/nuxt-modules/og-image/commit/e3293f3c)
- Explicit bun runtime compat - by @harlan-zw [`**(bf6fe)**`](https://github.com/nuxt-modules/og-image/commit/bf6fec2b)
- Remove default component option - by @harlan-zw [`**(61d1d)**`](https://github.com/nuxt-modules/og-image/commit/61d1d7ff)
- Prefer 600 height - by @harlan-zw [`**(d8152)**`](https://github.com/nuxt-modules/og-image/commit/d81520b3)
- Some URL combos breaking prerenderer - by @harlan-zw [`**(77d7b)**`](https://github.com/nuxt-modules/og-image/commit/77d7bddd)
- Recover from unresolvable tailwind - by @harlan-zw [`**(d1a37)**`](https://github.com/nuxt-modules/og-image/commit/d1a3734b)
- Improve migration script coverage - by @harlan-zw [`**(c5e58)**`](https://github.com/nuxt-modules/og-image/commit/c5e58881)
- Replacing .png inside the component params - by @ThibaudDauce in [**~~https://github.com/nuxt-modules/og-image/issues/493~~**](https://github.com/nuxt-modules/og-image/issues/493) [`**(053c5)**`](https://github.com/nuxt-modules/og-image/commit/053c5e89)
- Support .webp with takumi - by @harlan-zw [`**(5f570)**`](https://github.com/nuxt-modules/og-image/commit/5f5700a3)
- Cli v6 migration gaps - by @harlan-zw [`**(70a49)**`](https://github.com/nuxt-modules/og-image/commit/70a4987c)
- Skip community templates from renderer selection - by @harlan-zw [`**(f9d18)**`](https://github.com/nuxt-modules/og-image/commit/f9d18ea6)
- **cloudflare**:
- Require satori v0.15 and non-legacy - by @harlan-zw [`**(bd983)**`](https://github.com/nuxt-modules/og-image/commit/bd98398b)
- Stability improvements - by @harlan-zw [`**(ce307)**`](https://github.com/nuxt-modules/og-image/commit/ce307ff8)
- **cloudflare-worker**:
- Require satori v0.15.x for runtime - by @harlan-zw [`**(bffc9)**`](https://github.com/nuxt-modules/og-image/commit/bffc9eb3)
- **devtools**:
- Broken tab display - by @harlan-zw [`**(4d8ab)**`](https://github.com/nuxt-modules/og-image/commit/4d8ab483)
- Clean up - by @harlan-zw [`**(4ba33)**`](https://github.com/nuxt-modules/og-image/commit/4ba3354c)
- HTML preview rendering at wrong size - by @harlan-zw [`**(ad5be)**`](https://github.com/nuxt-modules/og-image/commit/ad5bee07)
- Bunch of random issues - by @harlan-zw [`**(3c6f6)**`](https://github.com/nuxt-modules/og-image/commit/3c6f6c15)
- Component path missing - by @harlan-zw [`**(3cdb8)**`](https://github.com/nuxt-modules/og-image/commit/3cdb862a)
- Eject modal empty and template path resolution broken - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/472~~**](https://github.com/nuxt-modules/og-image/issues/472) [`**(cd975)**`](https://github.com/nuxt-modules/og-image/commit/cd975fbd)
- Minor ux - by @harlan-zw [`**(1690d)**`](https://github.com/nuxt-modules/og-image/commit/1690ddac)
- Expose fetch error - by @harlan-zw [`**(ec018)**`](https://github.com/nuxt-modules/og-image/commit/ec018dcc)
- Broken option resolutions - by @harlan-zw [`**(3e777)**`](https://github.com/nuxt-modules/og-image/commit/3e777b23)
- Safer debug queries - by @harlan-zw [`**(3828f)**`](https://github.com/nuxt-modules/og-image/commit/3828f05d)
- Improved hmr for css files - by @harlan-zw [`**(3fe47)**`](https://github.com/nuxt-modules/og-image/commit/3fe47ed0)
- Clean up - by @harlan-zw [`**(34c6a)**`](https://github.com/nuxt-modules/og-image/commit/34c6a5f6)
- Polishing - by @harlan-zw [`**(5e4ac)**`](https://github.com/nuxt-modules/og-image/commit/5e4ac70d)
- **edge**:
- Require satori 0.15.x - by @harlan-zw [`**(3de78)**`](https://github.com/nuxt-modules/og-image/commit/3de787d0)
- **fonts**:
- Handle dynamic weights - by @harlan-zw [`**(b1427)**`](https://github.com/nuxt-modules/og-image/commit/b14273ef)
- **lint**:
- Resolve lint errors in takumi test files - by @harlan-zw and **Claude Opus 4.5** [`**(61d7c)**`](https://github.com/nuxt-modules/og-image/commit/61d7c092)
- **og-image**:
- Improve error messages for missing or invalid og image types - by @harlan-zw [`**(f0ac6)**`](https://github.com/nuxt-modules/og-image/commit/f0ac6bf5)
- Fallback to png if extension is missing - by @harlan-zw [`**(189e4)**`](https://github.com/nuxt-modules/og-image/commit/189e4a66)
- **satori**:
- Encoding bug for array text children - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/422~~**](https://github.com/nuxt-modules/og-image/issues/422) [`**(349bd)**`](https://github.com/nuxt-modules/og-image/commit/349bd59a)
- Support dark mode tw classes - by @harlan-zw [`**(1cce4)**`](https://github.com/nuxt-modules/og-image/commit/1cce4af2)
- Misc errors and warnings - by @harlan-zw [`**(1e6d1)**`](https://github.com/nuxt-modules/og-image/commit/1e6d19ca)
- Convert `**gap-***` classes - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/465~~**](https://github.com/nuxt-modules/og-image/issues/465) [`**(575c6)**`](https://github.com/nuxt-modules/og-image/commit/575c6813)
- Support gap-2rem - by @harlan-zw [`**(0b0f6)**`](https://github.com/nuxt-modules/og-image/commit/0b0f6604)
- No longer restrict edge to v0.15.* - by @harlan-zw [`**(0920f)**`](https://github.com/nuxt-modules/og-image/commit/0920fe4d)
- **takumi**:
- Fix HTML parsing and add e2e tests - by @harlan-zw and **Claude Opus 4.5** [`**(a8042)**`](https://github.com/nuxt-modules/og-image/commit/a804251d)
- Cloudflare compatibility - by @harlan-zw [`**(46e40)**`](https://github.com/nuxt-modules/og-image/commit/46e4007f)
- Web worker isolation to avoid crashing dev server - by @harlan-zw [`**(4c2e5)**`](https://github.com/nuxt-modules/og-image/commit/4c2e5235)
- Improve img, svg and CSS stability - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/477~~**](https://github.com/nuxt-modules/og-image/issues/477) [`**(9d219)**`](https://github.com/nuxt-modules/og-image/commit/9d219392)
- Edge case on image attributes - by @harlan-zw [`**(0ef91)**`](https://github.com/nuxt-modules/og-image/commit/0ef91d3d)
- Safer css eval - by @harlan-zw [`**(609d3)**`](https://github.com/nuxt-modules/og-image/commit/609d3842)
- Css still a bit flakey - by @harlan-zw [`**(00c5d)**`](https://github.com/nuxt-modules/og-image/commit/00c5dfe7)
- Clamp extreme values causing hanging - by @harlan-zw [`**(25303)**`](https://github.com/nuxt-modules/og-image/commit/253036d9)
- Handle worker thread hanging - by @harlan-zw [`**(a10f6)**`](https://github.com/nuxt-modules/og-image/commit/a10f6d66)
- Support radial gradient downgrades at runtime - by @harlan-zw [`**(b5e68)**`](https://github.com/nuxt-modules/og-image/commit/b5e6801e)
- Support container query units cq*, dv*, dv*, lv* - by @harlan-zw [`**(bbb83)**`](https://github.com/nuxt-modules/og-image/commit/bbb830c6)
- Broken text ellipsis overflow - by @harlan-zw [`**(370e5)**`](https://github.com/nuxt-modules/og-image/commit/370e5304)
- Emoji handling - by @harlan-zw [`**(8f208)**`](https://github.com/nuxt-modules/og-image/commit/8f208140)
- Pass missing attributes through - by @harlan-zw [`**(e2bf6)**`](https://github.com/nuxt-modules/og-image/commit/e2bf6789)
- Warn on missing css vars - by @harlan-zw [`**(a0a2f)**`](https://github.com/nuxt-modules/og-image/commit/a0a2fec2)
- **types**:
- Avoid circular type resolution - by @harlan-zw [`**(87adb)**`](https://github.com/nuxt-modules/og-image/commit/87adbb3d)
- **unocss**:
- Extract global vars from css entries - by @harlan-zw [`**(8f5d6)**`](https://github.com/nuxt-modules/og-image/commit/8f5d6115)
- Extract global vars from css entries - by @harlan-zw [`**(45385)**`](https://github.com/nuxt-modules/og-image/commit/45385a39)
- Support variants - by @harlan-zw [`**(e0685)**`](https://github.com/nuxt-modules/og-image/commit/e0685dfd)
- Exclude og images from config pipeline - by @harlan-zw [`**(279b9)**`](https://github.com/nuxt-modules/og-image/commit/279b9397)
- **vercel-edge**:
- Satori wasm binding, process proxy patch, and wasm ?module imports - by @harlan-zw and **Claude Opus 4.5** [`**(829a5)**`](https://github.com/nuxt-modules/og-image/commit/829a5a5e)
- Satori wasm binding, process proxy patch, and wasm ?module imports - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-modules/og-image/issues/437~~**](https://github.com/nuxt-modules/og-image/issues/437) [`**(8c151)**`](https://github.com/nuxt-modules/og-image/commit/8c1513f4) ### 🏎 Performance
- Drop `**satori-html**` requirement - by @harlan-zw [`**(58738)**`](https://github.com/nuxt-modules/og-image/commit/58738f10)
- OOM optimizations - by @harlan-zw [`**(da385)**`](https://github.com/nuxt-modules/og-image/commit/da3855f8)
- Detect font requirements at build time for optimized loading - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/447~~**](https://github.com/nuxt-modules/og-image/issues/447) [`**(c84df)**`](https://github.com/nuxt-modules/og-image/commit/c84dfb33)
- Drop unused deps - by @harlan-zw [`**(d3802)**`](https://github.com/nuxt-modules/og-image/commit/d380273a)
- Replace postcss with lightningcss for CSS processing - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/464~~**](https://github.com/nuxt-modules/og-image/issues/464) [`**(ef33b)**`](https://github.com/nuxt-modules/og-image/commit/ef33b4ce)
- Rework HMR - by @harlan-zw [`**(bb255)**`](https://github.com/nuxt-modules/og-image/commit/bb25593e)
- Font weakmap - by @harlan-zw [`**(70a72)**`](https://github.com/nuxt-modules/og-image/commit/70a72499)
- Digest over hash - by @harlan-zw [`**(59161)**`](https://github.com/nuxt-modules/og-image/commit/591612e5)
- Lru caches on big memory hitters - by @harlan-zw [`**(cb875)**`](https://github.com/nuxt-modules/og-image/commit/cb87501e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v5.1.13...v6.0.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)3 weeks agov6.0.0-beta.48 ### 🐞 Bug Fixes
- Improve migration script coverage - by @harlan-zw [`**(c5e58)**`](https://github.com/nuxt-modules/og-image/commit/c5e58881)
- Replacing .png inside the component params - by @ThibaudDauce in [**~~https://github.com/nuxt-modules/og-image/issues/493~~**](https://github.com/nuxt-modules/og-image/issues/493) [`**(053c5)**`](https://github.com/nuxt-modules/og-image/commit/053c5e89) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.47...v6.0.0-beta.48)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 weeks agov0.12.1 ### 🐞 Bug Fixes
- Safer markdown serving logic - by @harlan-zw [`**(428ad)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/428adea)
- Broken prerendering for index.md - by @harlan-zw [`**(3ff4c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/3ff4cb9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.12.0...v0.12.1)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.47 ### 🚨 Breaking Changes
- **takumi**: Revert back to default DPI 1 - by @harlan-zw [`**(d60e2)**`](https://github.com/nuxt-modules/og-image/commit/d60e2d64) ### 🐞 Bug Fixes
- Explicit bun runtime compat - by @harlan-zw [`**(bf6fe)**`](https://github.com/nuxt-modules/og-image/commit/bf6fec2b)
- Remove default component option - by @harlan-zw [`**(61d1d)**`](https://github.com/nuxt-modules/og-image/commit/61d1d7ff)
- Prefer 600 height - by @harlan-zw [`**(d8152)**`](https://github.com/nuxt-modules/og-image/commit/d81520b3)
- Some URL combos breaking prerenderer - by @harlan-zw [`**(77d7b)**`](https://github.com/nuxt-modules/og-image/commit/77d7bddd)
- Recover from unresolvable tailwind - by @harlan-zw [`**(d1a37)**`](https://github.com/nuxt-modules/og-image/commit/d1a3734b)
- **takumi**: Pass missing attributes through - by @harlan-zw [`**(e2bf6)**`](https://github.com/nuxt-modules/og-image/commit/e2bf6789) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.46...v6.0.0-beta.47)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.46 ### 🐞 Bug Fixes
- Edge runtime WASM bindings for satori yoga and resvg - by @harlan-zw in [**~~https://github.com/nuxt-modules/og-image/issues/492~~**](https://github.com/nuxt-modules/og-image/issues/492) [`**(e3293)**`](https://github.com/nuxt-modules/og-image/commit/e3293f3c) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.45...v6.0.0-beta.46)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)last monthv0.7.6_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.5...v0.7.6)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)last monthv0.12.0 ### 🚀 Features
- Add Vercel Edge & Neon Postgres support with Drizzle ORM - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/11~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/issues/11) [`**(f21ab)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/f21aba8) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.11.0...v0.12.0)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.45 ### 🐞 Bug Fixes
- Broken cloudflare durable - by @harlan-zw [`**(684df)**`](https://github.com/nuxt-modules/og-image/commit/684df85f) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.44...v6.0.0-beta.45)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.44 ### 🐞 Bug Fixes
- Broken cloudflare durable - by @harlan-zw [`**(a98e2)**`](https://github.com/nuxt-modules/og-image/commit/a98e2136) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.43...v6.0.0-beta.44)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.43 ### 🐞 Bug Fixes
- Webworker dev stability - by @harlan-zw [`**(720de)**`](https://github.com/nuxt-modules/og-image/commit/720debbe)
- Font stability - by @harlan-zw [`**(3717e)**`](https://github.com/nuxt-modules/og-image/commit/3717e72e)
- Community component matching mismatch - by @harlan-zw [`**(779a2)**`](https://github.com/nuxt-modules/og-image/commit/779a27a0)
- **cloudflare**: Stability improvements - by @harlan-zw [`**(ce307)**`](https://github.com/nuxt-modules/og-image/commit/ce307ff8)
- **unocss**: Exclude og images from config pipeline - by @harlan-zw [`**(279b9)**`](https://github.com/nuxt-modules/og-image/commit/279b9397) ### 🏎 Performance
- Digest over hash - by @harlan-zw [`**(59161)**`](https://github.com/nuxt-modules/og-image/commit/591612e5)
- Lru caches on big memory hitters - by @harlan-zw [`**(cb875)**`](https://github.com/nuxt-modules/og-image/commit/cb87501e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.42...v6.0.0-beta.43)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)last monthv5.7.1 ### 🐞 Bug Fixes
- Support nuxt 4 with compatibility version >= 4 - by @lumirelle in [**~~https://github.com/nuxt-modules/robots/issues/272~~**](https://github.com/nuxt-modules/robots/issues/272) [`**(1bf24)**`](https://github.com/nuxt-modules/robots/commit/1bf2418)
- **devtools**: Broken indexable status - by @harlan-zw [`**(b0030)**`](https://github.com/nuxt-modules/robots/commit/b003020) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.7.0...v5.7.1)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.42_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.41...v6.0.0-beta.42)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.41 ### 🐞 Bug Fixes
- @takumi-rs/* dep version missmatch - by @HanXHX in [**~~https://github.com/nuxt-modules/og-image/issues/489~~**](https://github.com/nuxt-modules/og-image/issues/489) [`**(bb98f)**`](https://github.com/nuxt-modules/og-image/commit/bb98f7be) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.40...v6.0.0-beta.41)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)last monthv6.0.0-beta.40 ### 🐞 Bug Fixes
- **takumi**: Emoji handling - by @harlan-zw [`**(8f208)**`](https://github.com/nuxt-modules/og-image/commit/8f208140) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/og-image/compare/v6.0.0-beta.39...v6.0.0-beta.40)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last monthv3.2.21 ### 🐞 Bug Fixes
- Don't force https protocol in dev mode - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/79~~**](https://github.com/harlan-zw/nuxt-site-config/issues/79) [`**(6788d)**`](https://github.com/harlan-zw/nuxt-site-config/commit/6788d81)
- Strip port from host when matching multi-tenancy config - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/80~~**](https://github.com/harlan-zw/nuxt-site-config/issues/80) [`**(863a8)**`](https://github.com/harlan-zw/nuxt-site-config/commit/863a8b3) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.20...v3.2.21)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)last monthv3.2.20 ### 🐞 Bug Fixes
- Broken ipv6 loopback handling - by @harlan-zw [`**(e5e09)**`](https://github.com/harlan-zw/nuxt-site-config/commit/e5e09da) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.19...v3.2.20)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.11.0_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.12...v0.11.0)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 months agov3.4.0 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:
- **Robots**: New [`**definePageMeta()**`**~~ integration~~**](https://nuxtseo.com/docs/robots/guides/define-page-meta) for per-page robot rules and improved [**~~i18n custom route path~~**](https://nuxtseo.com/docs/robots/guides/i18n) support
- **Sitemap**: New [`**zeroRuntime**`**~~ mode~~**](https://nuxtseo.com/docs/sitemap/guides/zero-runtime), [`**definePageMeta()**`**~~ integration~~**](https://nuxtseo.com/docs/sitemap/guides/define-page-meta), [**~~redesigned~~****~~ sitemap.xsl~~**](https://nuxtseo.com/docs/sitemap/guides/xsl) with light/dark mode, and [**~~Nuxt Content collection filters~~**](https://nuxtseo.com/docs/sitemap/integrations/content)
- **OG Image**: v6 beta opt-in now supported ## ✅ 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.4 → v5.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.9 → v7.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.11 → v3.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~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.3.0...v3.4.0)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)2 months agov5.7.0 ### 🚀 Features
- Robots definePageMeta - by @harlan-zw [`**(d696a)**`](https://github.com/nuxt-modules/robots/commit/d696aea)
- **i18n**: Support custom route paths in allow/disallow expansion - by @harlan-zw [`**(13294)**`](https://github.com/nuxt-modules/robots/commit/13294fc) ### 🐞 Bug Fixes
- Rework type augmentation / definitions - by @harlan-zw [`**(a8294)**`](https://github.com/nuxt-modules/robots/commit/a829485)
- Prevent _robots.txt from being emitted in final bundle - by @harlan-zw [`**(3c6b1)**`](https://github.com/nuxt-modules/robots/commit/3c6b13f)
- Broken type for useRobotsRule - by @harlan-zw [`**(b236d)**`](https://github.com/nuxt-modules/robots/commit/b236d7e)
- Broken type for useRobotsRule - by @harlan-zw [`**(439c6)**`](https://github.com/nuxt-modules/robots/commit/439c6db)
- **validator**:
- Handle Content-Usage/Content-Signal with spaces after commas - by @harlan-zw [`**(277a0)**`](https://github.com/nuxt-modules/robots/commit/277a0d6)
- Handle Content-Usage/Content-Signal with spaces after commas - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/261~~**](https://github.com/nuxt-modules/robots/issues/261) [`**(3958a)**`](https://github.com/nuxt-modules/robots/commit/3958a19) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.8...v5.7.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)2 months agov3.2.19 ### 🐞 Bug Fixes
- Handle undefined `**import.meta.env**` - by @harlan-zw [`**(7190f)**`](https://github.com/harlan-zw/nuxt-site-config/commit/7190fe1) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.18...v3.2.19)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)2 months agov7.6.0 ### 🚀 Features
- Support sitemap on `**definePageMeta**` - by @harlan-zw [`**(b61c5)**`](https://github.com/nuxt-modules/sitemap/commit/b61c5c2)
- Expose sitemap validation warnings on XSL - by @harlan-zw [`**(d5d84)**`](https://github.com/nuxt-modules/sitemap/commit/d5d8466)
- Sitemap.xsl redesign, light/dark mode - by @harlan-zw [`**(acc20)**`](https://github.com/nuxt-modules/sitemap/commit/acc2064)
- **content**:
- Collection filters - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/520~~**](https://github.com/nuxt-modules/sitemap/issues/520) [`**(ae9cc)**`](https://github.com/nuxt-modules/sitemap/commit/ae9cc3b)
- `**onUrl**` function - by @harlan-zw [`**(0eebd)**`](https://github.com/nuxt-modules/sitemap/commit/0eebd70)
- **devtools**:
- UI refresh - by @harlan-zw [`**(94d01)**`](https://github.com/nuxt-modules/sitemap/commit/94d0109)
- **utils**:
- `**parseSitemapIndex()**` - by @harlan-zw [`**(6001c)**`](https://github.com/nuxt-modules/sitemap/commit/6001c52) ### 🐞 Bug Fixes
- Dev tip for sitemaps that don't produce URLs - by @harlan-zw [`**(ac22c)**`](https://github.com/nuxt-modules/sitemap/commit/ac22c95)
- Rework type augments / overrides - by @harlan-zw [`**(895a7)**`](https://github.com/nuxt-modules/sitemap/commit/895a746)
- Generating sitemaps with a slash (/) in the name #467 - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/467~~**](https://github.com/nuxt-modules/sitemap/issues/467) [`**(bded4)**`](https://github.com/nuxt-modules/sitemap/commit/bded44e)
- Warn on missing sitemaps - by @harlan-zw [`**(bd610)**`](https://github.com/nuxt-modules/sitemap/commit/bd6100f)
- Throw error when prerendering empty sitemap sources - by @harlan-zw [`**(52ea7)**`](https://github.com/nuxt-modules/sitemap/commit/52ea7f2)
- Avoid external API requests for internal - by @harlan-zw [`**(22739)**`](https://github.com/nuxt-modules/sitemap/commit/227399a) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.5.2...v7.6.0)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.12 ### 🚀 Features
- Implement proper database connection lifecycle and cleanup - by @harlan-zw [`**(63b45)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/63b45e6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.11...v0.10.12)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.11 ### 🚀 Features
- **prerender**: Add concurrency option and use KB for file size logs - by @harlan-zw [`**(9e178)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/9e178eb) ### 🐞 Bug Fixes
- **module**: Silence node:sqlite rollup warning in virtual module - by @harlan-zw [`**(8e046)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/8e046f5) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.10...v0.10.11)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.10 ### 🐞 Bug Fixes
- **cloudflare-worker**: Not rechecking sitemap - by @harlan-zw [`**(42619)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/42619f4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.9...v0.10.10)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)2 months agov3.2.18 ### 🐞 Bug Fixes
- **i18n**: Possible memory leak - by @harlan-zw [`**(32ba8)**`](https://github.com/harlan-zw/nuxt-site-config/commit/32ba8d2) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.17...v3.2.18)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.9 ### 🐞 Bug Fixes
- **cloudflare-worker**: Rework bulk work - by @harlan-zw [`**(cce54)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/cce54ec) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.8...v0.10.9)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.8 ### 🐞 Bug Fixes
- **cloudflare-workers**: Indexnow 500 error - by @harlan-zw [`**(1950e)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/1950ed2) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.7...v0.10.8)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.7 ### 🐞 Bug Fixes
- Maybe cron sitemap bug - by @harlan-zw [`**(52668)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/52668ec) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.6...v0.10.7)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.6 ### 🐞 Bug Fixes
- **cloudflare-workers**: Broken sitemap fetching - by @harlan-zw [`**(5ae3c)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/5ae3c22) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.5...v0.10.6)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.5 ### 🐞 Bug Fixes
- Expose indexing status - by @harlan-zw [`**(97fac)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/97fac9e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.4...v0.10.5)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.4 ### 🏎 Performance
- Optimize cron - by @harlan-zw [`**(e21f5)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/e21f5ce)
- Optimize cron - by @harlan-zw [`**(af456)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/af45652) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.3...v0.10.4)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.3 ### 🏎 Performance
- Optimize cron - by @harlan-zw [`**(0b35b)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/0b35ba6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.2...v0.10.3)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.2 ### 🐞 Bug Fixes
- Misc cron bugs - by @harlan-zw [`**(075c5)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/075c5ce) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.1...v0.10.2)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)2 months agov0.10.1 ### 🐞 Bug Fixes
- Safer cron usage - by @harlan-zw [`**(c446b)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/c446b77) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.10.0...v0.10.1)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov0.7.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.4...v0.7.5)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.10.0 ### 🚀 Features
- `**debugCron**` - by @harlan-zw [`**(394c2)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/394c2be) ### 🐞 Bug Fixes
- Debug changed pages between builds - by @harlan-zw [`**(9e122)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/9e1226b)
- Better runtime debug logs - by @harlan-zw [`**(e6c51)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/e6c51ef) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.9.4...v0.10.0)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.9.4 ### 🐞 Bug Fixes
- Debug changed pages between builds - by @harlan-zw [`**(41be1)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/41be12a) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.9.3...v0.9.4)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov0.7.4 ### 🐞 Bug Fixes
- Module telementry - by @harlan-zw [`**(e92bb)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e92bb4d) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.3...v0.7.4)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.9.3 ### 🐞 Bug Fixes
- Module telementry - by @harlan-zw [`**(8f0e3)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/8f0e3c2)
- **cloudflare-pages**: Disable nitro tasks - by @harlan-zw [`**(b6c54)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/b6c54f0) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.9.2...v0.9.3)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.9.2 ### 🐞 Bug Fixes
- Less dev noise - by @harlan-zw [`**(adb38)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/adb389d)
- **cloudflare-pages**: Disable cron usage - by @harlan-zw [`**(01acb)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/01acbae) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.9.1...v0.9.2)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.9.1 ### 🐞 Bug Fixes
- Use nuxt seo pro key as secret - by @harlan-zw [`**(aac00)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/aac00ec)
- Dev node:sql warning - by @harlan-zw [`**(e72fe)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/e72fe7b)
- **cloudflare**: Configure wrangler crons - by @harlan-zw [`**(ebed7)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/ebed74c) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.9.0...v0.9.1)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)3 months agov0.9.0 ### 🚨 Breaking Changes
- Rename indexNowKey to indexNow with auto-generation - by @harlan-zw and **Claude Opus 4.5** [`**(0d6cb)**`](https://github.com/nuxt-seo-pro/nuxt-ai-ready/commit/0d6cb7b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-ai-ready/compare/v0.8.2...v0.9.0)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov0.7.3 ### 🐞 Bug Fixes
- Broken latest.json manifest when previewing - by @harlan-zw [`**(b3a99)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b3a99ee) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.2...v0.7.3)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)3 months agov5.6.8 ### 🐞 Bug Fixes
- Broken route rules for nuxt v3 - by @harlan-zw [`**(dd853)**`](https://github.com/nuxt-modules/robots/commit/dd8532c) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.7...v5.6.8)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov3.2.17 ### 🐞 Bug Fixes
- Respect `**devServer.host**` - by @harlan-zw [`**(4f22a)**`](https://github.com/harlan-zw/nuxt-site-config/commit/4f22a71) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.16...v3.2.17)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov7.5.2 ### 🐞 Bug Fixes
- H3 v2 resolution bug - by @harlan-zw [`**(d1cc3)**`](https://github.com/nuxt-modules/sitemap/commit/d1cc3c8) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.5.1...v7.5.2)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov3.2.16_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.15...v3.2.16)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)3 months agov3.2.15 ### 🐞 Bug Fixes
- Lock `**h3**` to v1 - by @harlan-zw [`**(e1397)**`](https://github.com/harlan-zw/nuxt-site-config/commit/e139793) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.14...v3.2.15)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov0.7.2 ### 🐞 Bug Fixes
- Avoid running in prerender context - by @harlan-zw [`**(a2ab4)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/a2ab4b4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.1...v0.7.2)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov0.7.1 ### 🐞 Bug Fixes
- **cloudflare-durable**: Stats not working - by @harlan-zw [`**(e5ff0)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e5ff050) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.7.0...v0.7.1)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)3 months agov0.7.0 ### 🚨 Breaking Changes
- Authorized stats and live connection routes - by @harlan-zw and **Claude Opus 4.5** in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/8~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/8) [`**(75c52)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/75c52cd) ### 🐞 Bug Fixes
- Disable websocket heartbeat - by @harlan-zw [`**(73d37)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/73d372f)
- Possible memory leak on SSE - by @harlan-zw [`**(6938c)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/6938c2e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.6.0...v0.7.0)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)3 months agov7.5.1 ### 🐞 Bug Fixes
- Normalize `**sitemap:sources**` hook - by @harlan-zw [`**(a021e)**`](https://github.com/nuxt-modules/sitemap/commit/a021e4d)
- **i18n**: Support custom route paths - by @harlan-zw [`**(785ce)**`](https://github.com/nuxt-modules/sitemap/commit/785ce93) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.5.0...v7.5.1)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)4 months agov7.5.0 ### 🚀 Features
- `**zeroRuntime**` mode - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/532~~**](https://github.com/nuxt-modules/sitemap/issues/532) [`**(1fa92)**`](https://github.com/nuxt-modules/sitemap/commit/1fa92ee)
- Build-time hook `**sitemap:prerender:done**` - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/534~~**](https://github.com/nuxt-modules/sitemap/issues/534) [`**(a4051)**`](https://github.com/nuxt-modules/sitemap/commit/a405106)
- Mark entries as pre-encoded `**_encoded: true**` - by @harlan-zw [`**(b1b17)**`](https://github.com/nuxt-modules/sitemap/commit/b1b1777) ### 🐞 Bug Fixes
- Don't extract alternatives from HTML when autoI18n is enabled - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/537~~**](https://github.com/nuxt-modules/sitemap/issues/537) [`**(018de)**`](https://github.com/nuxt-modules/sitemap/commit/018de0f)
- Chunked sitemaps with sitemapsPathPrefix '/' - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/536~~**](https://github.com/nuxt-modules/sitemap/issues/536) [`**(2d7db)**`](https://github.com/nuxt-modules/sitemap/commit/2d7db5a)
- Priority `**1**` -> `**1.0**` - by @harlan-zw [`**(f6b9c)**`](https://github.com/nuxt-modules/sitemap/commit/f6b9cb7) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.11...v7.5.0)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)4 months agov7.4.11 ### 🐞 Bug Fixes
- Memory leak on recursive sitemap requests - by @harlan-zw [`**(09957)**`](https://github.com/nuxt-modules/sitemap/commit/099578a) ### 🏎 Performance
- Precompute filter functions - by @harlan-zw [`**(117eb)**`](https://github.com/nuxt-modules/sitemap/commit/117ebb6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.10...v7.4.11)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)4 months agov7.4.10 ### 🐞 Bug Fixes
- **discoverImages**: Missing body - by @farnabaz and @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/531~~**](https://github.com/nuxt-modules/sitemap/issues/531) [`**(b9582)**`](https://github.com/nuxt-modules/sitemap/commit/b95823d) ### 🏎 Performance
- Optimize xml generation - by @harlan-zw [`**(690f4)**`](https://github.com/nuxt-modules/sitemap/commit/690f414)
- Faster resolutions of entries - by @harlan-zw [`**(0f2df)**`](https://github.com/nuxt-modules/sitemap/commit/0f2dfef) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.9...v7.4.10)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.6.0 ### 🚨 Breaking Changes
- Require @nuxtjs/robots v5.6.7+ - by @harlan-zw [`**(60eae)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/60eae7e)
- Standardize message ids and buildId access - by @harlan-zw [`**(232ee)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/232ee21)
- Initialize connections only with explicit usage - by @harlan-zw [`**(47a8f)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/47a8f50)
- Clean up - by @harlan-zw [`**(f852d)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f852d37) ### 🚀 Features
- Block bots from ws/SSE update checks - by @harlan-zw [`**(427fb)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/427fbaa)
- `**useSkewProtection()**` lazy mode - by @harlan-zw [`**(f3179)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f3179f3) ### 🐞 Bug Fixes
- **cloudflare-durable**: Safer live tracking - by @harlan-zw [`**(e48a9)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/e48a92e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.5.0...v0.6.0)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.7 ### 🐞 Bug Fixes
- `**useBotDetection()**` empty when ran client side only - by @harlan-zw [`**(7aba3)**`](https://github.com/nuxt-modules/robots/commit/7aba38f) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.6...v5.6.7)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.5.0 ### 🚀 Features
- View active connections - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/6~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/6) [`**(b03f3)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b03f369) ### 🐞 Bug Fixes
- Broken public path resolution - by @harlan-zw [`**(b6c34)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b6c34cf)
- Dispose storage connections - by @harlan-zw [`**(b22f0)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/b22f0ef)
- Nicer errors for storage connection issues - by @harlan-zw [`**(6ad50)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/6ad50f3) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.4.3...v0.5.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)4 months agov3.2.14 ### 🐞 Bug Fixes
- **devtools**: Incorrect property leads to 500 error - by @canstand in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/70~~**](https://github.com/harlan-zw/nuxt-site-config/issues/70) [`**(63ad0)**`](https://github.com/harlan-zw/nuxt-site-config/commit/63ad059) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.13...v3.2.14)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)4 months agov3.2.13 ### 🐞 Bug Fixes
- **devtools**: Broken build - by @harlan-zw [`**(21d9d)**`](https://github.com/harlan-zw/nuxt-site-config/commit/21d9d38) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.12...v3.2.13)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.4.3 ### 🐞 Bug Fixes
- **perf**: Less fs operations - by @harlan-zw [`**(f5898)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/f58980b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.4.2...v0.4.3)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.6 ### 🐞 Bug Fixes
- Runtime resolution bug on `**@nuxtjs/robots/util**`" - by @harlan-zw [`**(4c64e)**`](https://github.com/nuxt-modules/robots/commit/4c64e4e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.5...v5.6.6)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.5 ### 🐞 Bug Fixes
- Runtime resolution bug on `**@nuxtjs/robots/util**` - by @harlan-zw [`**(6c9ad)**`](https://github.com/nuxt-modules/robots/commit/6c9ade8) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.4...v5.6.5)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.4.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.4.1...v0.4.2)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)4 months agov3.3.0 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:
- **Robots**: Improved work on [`**Content-Signal**`**~~ directive~~**](https://nuxtseo.com/docs/robots/guides/ai-directives) support and [**~~Bot Detection~~**](https://nuxtseo.com/docs/robots/guides/bot-detection)
- **Nuxt Content**: Improved Zod peer dependency handling ## ✅ 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.5~~**](https://github.com/nuxt-modules/robots/releases/tag/v5.5.5) → [**~~https://github.com/nuxt-modules/robots/releases/tag/v5.6.4~~**](https://github.com/nuxt-modules/robots/releases/tag/v5.6.4)
- ✨ Improved Content-Signal support ([**~~https://github.com/nuxt-modules/robots/pull/226~~**](https://github.com/nuxt-modules/robots/pull/226))
- ✨ Bot Detection ([**~~https://github.com/nuxt-modules/robots/pull/210~~**](https://github.com/nuxt-modules/robots/pull/210))
- 🐛 Fix broken utility imports, missing zod peer dep, mock composables, disabled module handling**Nuxt Sitemap**[**~~https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.7~~**](https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.7) → [**~~https://github.com/nuxt-modules/sitemap/releases/tag/v7.4.9~~**](https://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.2~~**](https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.2) → [**~~https://github.com/harlan-zw/nuxt-link-checker/releases/tag/v4.3.9~~**](https://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.11~~**](https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.11) → [**~~https://github.com/harlan-zw/nuxt-og-image/releases/tag/v5.1.13~~**](https://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.9~~**](https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.9) → [**~~https://github.com/harlan-zw/nuxt-schema-org/releases/tag/v5.0.10~~**](https://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.16~~**](https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.16) → [**~~https://github.com/harlan-zw/nuxt-seo-utils/releases/tag/v7.0.19~~**](https://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.7~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.7) → [**~~https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.2.11~~**](https://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 [**~~https://github.com/harlan-zw/nuxt-seo/compare/v3.2.0...v3.3.0~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.2.0...v3.3.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)4 months agov3.2.12 ### 🐞 Bug Fixes
- Support env for internal origin URL resolutions - by @JackTYM [`**(55ee0)**`](https://github.com/harlan-zw/nuxt-site-config/commit/55ee019)
- Rework `**getNitroOrigin**` resolution - by @harlan-zw [`**(8f2a5)**`](https://github.com/harlan-zw/nuxt-site-config/commit/8f2a5a7) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.11...v3.2.12)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)4 months agov5.0.10 ### 🐞 Bug Fixes
- **content**: Optional `**zod**` peer dependency - by @harlan-zw [`**(b9987)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/b9987d7) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.9...v5.0.10)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.4 ### 🐞 Bug Fixes
- Broken util imports - by @harlan-zw [`**(99d50)**`](https://github.com/nuxt-modules/robots/commit/99d5060)
- **content**: Missing `**zod**` optional peer dependency - by @harlan-zw [`**(29fef)**`](https://github.com/nuxt-modules/robots/commit/29fef22) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.3...v5.6.4)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.4.1 ### 🚀 Features
- Third-party adapters - by @harlan-zw in [**~~https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/5~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/issues/5) [`**(1487e)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1487e07) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.11...v0.4.1)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.4.0 ### 🚀 Features
- Third-party adapters - by @harlan-zw [`**(924f3)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/924f341) ### 🐞 Bug Fixes
- Broken debug logs - by @harlan-zw [`**(eadd0)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/eadd041)
- Drop reverb - by @harlan-zw [`**(10059)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1005919)
- Drop reverb - by @harlan-zw [`**(c5ed3)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/c5ed3b6) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.11...v0.4.0)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.11 ### 🐞 Bug Fixes
- More debug logs for version restoration - by @harlan-zw [`**(8dcf4)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/8dcf41c)
- Warn when falling back from static mode - by @harlan-zw [`**(ad7ab)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/ad7ab6d)
- Show number of files restored per release - by @harlan-zw [`**(1cd18)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1cd18ab) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.10...v0.3.11)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.10 ### 🐞 Bug Fixes
- Add warning when there may be a misconfiguration - by @harlan-zw [`**(cfb62)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/cfb6279) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.9...v0.3.10)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.9 ### 🐞 Bug Fixes
- Broken hash restore keys - by @harlan-zw [`**(6d173)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/6d17325) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.8...v0.3.9)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.8 ### 🐞 Bug Fixes
- Validate Nuxt SEO Pro license - by @harlan-zw [`**(7e868)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/7e86822) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.7...v0.3.8)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.7_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.6...v0.3.7)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.3 ### 🐞 Bug Fixes
- Mock composables for legacy integrations - by @harlan-zw [`**(0f8ab)**`](https://github.com/nuxt-modules/robots/commit/0f8abc2) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.2...v5.6.3)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.2 ### 🐞 Bug Fixes
- Broken internal alias when `**enabled: false**` - by @harlan-zw [`**(f9577)**`](https://github.com/nuxt-modules/robots/commit/f957793) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.1...v5.6.2)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)4 months agov7.4.9 ### 🐞 Bug Fixes
- Chunking support with URL filtering - by @JackTYM [`**(6593d)**`](https://github.com/nuxt-modules/sitemap/commit/6593dbe)
- ReadSourcesFromFilesystem unicode escape error on windows - by @yamachi4416 in [**~~https://github.com/nuxt-modules/sitemap/issues/523~~**](https://github.com/nuxt-modules/sitemap/issues/523) [`**(ae7d3)**`](https://github.com/nuxt-modules/sitemap/commit/ae7d3af)
- Check for undefined data in sitemap prerender - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/525~~**](https://github.com/nuxt-modules/sitemap/issues/525) [`**(853e5)**`](https://github.com/nuxt-modules/sitemap/commit/853e5b0)
- Add null safety checks in nuxt page sitemap processing - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/526~~**](https://github.com/nuxt-modules/sitemap/issues/526) [`**(0589b)**`](https://github.com/nuxt-modules/sitemap/commit/0589bf2)
- Use snake_case for ImageEntry.geo_location to match XML spec - by @harlan-zw [**~~https://github.com/nuxt-modules/sitemap/issues/527~~**](https://github.com/nuxt-modules/sitemap/issues/527) [`**(f3e5d)**`](https://github.com/nuxt-modules/sitemap/commit/f3e5dd6)
- **content**: `**zod**` peer dependency for schema merge - by @harlan-zw [`**(9fca6)**`](https://github.com/nuxt-modules/sitemap/commit/9fca62d) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.8...v7.4.9)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.6 ### 🐞 Bug Fixes
- Don't check for updates while offline - by @harlan-zw [`**(1a61f)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1a61f53)
- Change default storage path for reusability - by @harlan-zw [`**(cfc6f)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/cfc6f2a) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.5...v0.3.6)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)4 months agov7.0.19_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.18...v7.0.19)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.1 ### 🐞 Bug Fixes
- Handle `**enabled: false**` mocks properly - by @harlan-zw [`**(77676)**`](https://github.com/nuxt-modules/robots/commit/7767661) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.6.0...v5.6.1)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)4 months agov4.3.9 ### 🐞 Bug Fixes
- Ignore all `**/_***` paths - by @harlan-zw [`**(1e5dd)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/1e5dd5e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.8...v4.3.9)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)4 months agov7.4.8 ### 🐞 Bug Fixes
- Expose site config on debug endpoint - by @silverbackdan [`**(02b72)**`](https://github.com/nuxt-modules/sitemap/commit/02b72f6)
- Prerendering pages not always in source - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/506~~**](https://github.com/nuxt-modules/sitemap/issues/506) [`**(c098f)**`](https://github.com/nuxt-modules/sitemap/commit/c098f38)
- Respect robots meta rule when prerendering - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/507~~**](https://github.com/nuxt-modules/sitemap/issues/507) [`**(77f7e)**`](https://github.com/nuxt-modules/sitemap/commit/77f7e07) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.7...v7.4.8)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)4 months agov4.3.8 ### 🐞 Bug Fixes
- Ignore # hrefs for some rules - by @harlan-zw [`**(dace5)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/dace59d)
- **reports**: Only show failing results in json - by @harlan-zw [`**(70306)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/703064a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.7...v4.3.8)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)4 months agov4.3.7 ### 🐞 Bug Fixes
- Use tree sort for markdown report - by @harlan-zw [`**(10a35)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/10a3583) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.6...v4.3.7)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.5 ### 🐞 Bug Fixes
- Misc memory leak fixes - by @harlan-zw [`**(16233)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/1623380)
- **perf**: Avoid memory spikes when restoring - by @harlan-zw [`**(0446a)**`](https://github.com/nuxt-seo-pro/nuxt-skew-protection/commit/0446a54) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.4...v0.3.5)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)4 months agov0.3.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-seo-pro/nuxt-skew-protection/compare/v0.3.3...v0.3.4)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)4 months agov5.6.0 ### 🚀 Features
- Improved `**Content-Signal**` support - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/251~~**](https://github.com/nuxt-modules/robots/issues/251) [`**(93d52)**`](https://github.com/nuxt-modules/robots/commit/93d525f) ### 🐞 Bug Fixes
- **devtools**: Show better production hints - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/252~~**](https://github.com/nuxt-modules/robots/issues/252) [`**(0a3ce)**`](https://github.com/nuxt-modules/robots/commit/0a3ce43) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.6...v5.6.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.11 ### 🐞 Bug Fixes
- Redundant baseUrl warning for development - by @harlan-zw [`**(fea63)**`](https://github.com/harlan-zw/nuxt-site-config/commit/fea63c8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.10...v3.2.11)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)6 months agov7.0.18 ### 🐞 Bug Fixes
- Normalize incorrect BCP 47 locales - by @harlan-zw [`**(e5a28)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/e5a286e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.17...v7.0.18)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)6 months agov5.5.6 ### 🐞 Bug Fixes
- Broken `**robots:config**` normalizing - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/234~~**](https://github.com/nuxt-modules/robots/issues/234) [`**(59c44)**`](https://github.com/nuxt-modules/robots/commit/59c4454)
- Support `**Content-Signal**` - by @harlan-zw [`**(092c3)**`](https://github.com/nuxt-modules/robots/commit/092c3b9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.5...v5.5.6)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.10 ### 🐞 Bug Fixes
- Support IPv6 addresses in getNitroOrigin host parsing - by @Eazash in [**~~https://github.com/harlan-zw/nuxt-site-config/issues/66~~**](https://github.com/harlan-zw/nuxt-site-config/issues/66) [`**(25eb3)**`](https://github.com/harlan-zw/nuxt-site-config/commit/25eb3cc) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.9...v3.2.10)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)6 months agov4.3.6 ### 🐞 Bug Fixes
- Pages hang issue edge case - by @harlan-zw [`**(ad8ad)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ad8adee) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.5...v4.3.6)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)6 months agov4.3.5 ### 🐞 Bug Fixes
- Hanging when `**pages**` dir is missing - by @harlan-zw [`**(05602)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/0560236) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.4...v4.3.5)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)6 months agov4.3.4_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.3...v4.3.4)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)6 months agov4.3.3 ### 🐞 Bug Fixes
- Safer runtime remote URL compat check - by @harlan-zw [`**(2cbf1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/2cbf127) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.2...v4.3.3)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)6 months agov3.2.9 ### 🐞 Bug Fixes
- Safe runtime type generation - by @harlan-zw [`**(8a7f2)**`](https://github.com/harlan-zw/nuxt-site-config/commit/8a7f2dd) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.8...v3.2.9)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)7 months agov3.2.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.2.1...v3.2.2)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)7 months agov7.0.17 ### 🐞 Bug Fixes
- Broken vite plugin ordering - by @harlan-zw [`**(a4dce)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/a4dce75) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.16...v7.0.17)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)7 months agov3.2.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.2.0...v3.2.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)7 months agov3.2.0 This version implements [**~~module dependencies~~**](https://nuxt.com/blog/v4-1#module-development-enhancements) that are available with Nuxt v4.1, and improved [**~~Nuxt Content v3.7 compatibility~~**](https://github.com/nuxt/content/releases/tag/v3.7.0) and [**~~NPM trusted publishing~~**](https://docs.npmjs.com/trusted-publishers) for all modules for improved security. It bumps the Nuxt Robots versions, which include the new features:
- `**Content-Usage**` directive [**~~https://github.com/nuxt-modules/robots/pull/226~~**](https://github.com/nuxt-modules/robots/pull/226)
- Bot Detection [**~~https://github.com/nuxt-modules/robots/pull/210~~**](https://github.com/nuxt-modules/robots/pull/210) ### 🐞 Bug Fixes
- Nuxt Content v3.7 compatibility - by @harlan-zw [`**(90214)**`](https://github.com/harlan-zw/nuxt-seo/commit/9021496)
- Explicit `**moduleDependencies**` - by @harlan-zw [`**(73fd6)**`](https://github.com/harlan-zw/nuxt-seo/commit/73fd636)
- NPM Trusted Publishing - by @harlan-zw [`**(ed173)**`](https://github.com/harlan-zw/nuxt-seo/commit/ed17362) ### 📦 Dependencies Updated SEO related packages:
- [**~~@nuxtjs/robots~~**](https://github.com/nuxt-modules/robots): 5.2.11 → 5.5.5
- [**~~@nuxtjs/sitemap~~**](https://github.com/nuxt-modules/sitemap): 7.4.2 → 7.4.7
- [**~~nuxt-link-checker~~**](https://github.com/harlan-zw/nuxt-link-checker): 4.3.1 → 4.3.2
- [**~~nuxt-og-image~~**](https://github.com/harlan-zw/nuxt-og-image): 5.1.8 → 5.1.11
- [**~~nuxt-schema-org~~**](https://github.com/harlan-zw/nuxt-schema-org): 5.0.6 → 5.0.9
- [**~~nuxt-seo-utils~~**](https://github.com/harlan-zw/nuxt-seo-utils): 7.0.12 → 7.0.16
- [**~~nuxt-site-config~~**](https://github.com/harlan-zw/nuxt-site-config): 3.2.2 → 3.2.7 These updates bring the latest bug fixes and improvements from the Nuxt SEO ecosystem. ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.1.0...v3.2.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.8 ### 🐞 Bug Fixes
- Broken `**dist**` publishing - by @harlan-zw [`**(74464)**`](https://github.com/harlan-zw/nuxt-site-config/commit/744648c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.7...v3.2.8)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.7_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.6...v3.2.7)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.6 ### 🐞 Bug Fixes
- NPM Trusted Publishing - by @harlan-zw [`**(f4948)**`](https://github.com/harlan-zw/nuxt-site-config/commit/f494873) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.5...v3.2.6)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)7 months agov4.3.2 ### 🐞 Bug Fixes
- Explicit `**moduleDependencies**` - by @harlan-zw [`**(9a380)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9a38054)
- NPM trusted publishing - by @harlan-zw [`**(46335)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/463353b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.1...v4.3.2)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)7 months agov7.0.16 ### 🐞 Bug Fixes
- Broken `**dist**` publishing - by @harlan-zw [`**(bfc4d)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/bfc4d16) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.15...v7.0.16)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)7 months agov5.0.9_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.8...v5.0.9)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.5.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.4...v5.5.5)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.7_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.6...v7.4.7)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)7 months agov5.0.8 ### 🐞 Bug Fixes
- Broken `**dist**` publishing - by @harlan-zw [`**(506a4)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/506a4df) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.7...v5.0.8)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.6 ### 🐞 Bug Fixes
- Broken `**dist**` publishing - by @harlan-zw [`**(b77e1)**`](https://github.com/nuxt-modules/sitemap/commit/b77e1ae)
- Broken `**dist**` publishing - by @harlan-zw [`**(6218d)**`](https://github.com/nuxt-modules/sitemap/commit/6218d32)
- Add `**@nuxtjs/robots**` as optional dependency - by @harlan-zw [`**(da80a)**`](https://github.com/nuxt-modules/sitemap/commit/da80ab9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.5...v7.4.6)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.5.4 ### 🐞 Bug Fixes
- Broken `**dist**` publishing - by @harlan-zw [`**(99216)**`](https://github.com/nuxt-modules/robots/commit/99216f4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.3...v5.5.4)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)7 months agov7.0.15 ### 🐞 Bug Fixes
- NPM Trusted Publishing - by @harlan-zw [`**(6e225)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/6e2257b)
- Explicit `**moduleDependencies**` - by @harlan-zw [`**(06f02)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/06f027c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.14...v7.0.15)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)7 months agov5.0.7 ### 🐞 Bug Fixes
- NPM trusted publishing - by @harlan-zw [`**(8885d)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8885d9b)
- Explicit `**moduleDependencies**` - by @harlan-zw [`**(3d5ba)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/3d5ba02)
- Nuxt Content v3.7 compatibility - by @harlan-zw [`**(2f845)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/2f8455b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.6...v5.0.7)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.5.3 ### 🐞 Bug Fixes
- **i18n**: V10 route rule incompatibility - by @harlan-zw [`**(1ece8)**`](https://github.com/nuxt-modules/robots/commit/1ece81b) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.2...v5.5.3)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.5 ### 🐞 Bug Fixes
- NPM trusted publishing - by @harlan-zw [`**(50c10)**`](https://github.com/nuxt-modules/sitemap/commit/50c1091) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.4...v7.4.5)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.5.2 ### 🐞 Bug Fixes
- `**@nuxt/content**` v3.7 compatibility - by @harlan-zw [`**(dd4ff)**`](https://github.com/nuxt-modules/robots/commit/dd4ff2f)
- Specify `**moduleDependencies**` - by @harlan-zw [`**(135dd)**`](https://github.com/nuxt-modules/robots/commit/135dd30)
- NPM trusted publishing (test) - by @harlan-zw [`**(e974f)**`](https://github.com/nuxt-modules/robots/commit/e974f32) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.1...v5.5.2)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)7 months agov7.4.4 ### 🐞 Bug Fixes
- Hotfix mdc module to support nuxt-nightly - by @danielroe in [**~~https://github.com/nuxt-modules/sitemap/issues/471~~**](https://github.com/nuxt-modules/sitemap/issues/471) [`**(36d01)**`](https://github.com/nuxt-modules/sitemap/commit/36d0127)
- Nuxt-content 3.7 compatibility - by @dword-design in [**~~https://github.com/nuxt-modules/sitemap/issues/490~~**](https://github.com/nuxt-modules/sitemap/issues/490) [`**(1f83b)**`](https://github.com/nuxt-modules/sitemap/commit/1f83bf0)
- Add `**moduleDependencies**` - by @harlan-zw [`**(03ef4)**`](https://github.com/nuxt-modules/sitemap/commit/03ef426)
- Allow paths with `**.**` to be included in sitemap - by @harlan-zw [`**(947d1)**`](https://github.com/nuxt-modules/sitemap/commit/947d17c) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.3...v7.4.4)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.5_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.4...v3.2.5)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.4 ### 🐞 Bug Fixes
- Broken export paths - by @harlan-zw [`**(1f131)**`](https://github.com/harlan-zw/nuxt-site-config/commit/1f1312c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.3...v3.2.4)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)7 months agov3.2.3 ### 🐞 Bug Fixes
- Explicit `**moduleDependencies**` for i18n integrations - by @harlan-zw [`**(0ea8e)**`](https://github.com/harlan-zw/nuxt-site-config/commit/0ea8e25)
- Peer dependency on h3 v1 - by @harlan-zw [`**(7c6e9)**`](https://github.com/harlan-zw/nuxt-site-config/commit/7c6e927)
- **nitro**: Prefer `**get***` function names over `**use***` - by @harlan-zw [`**(94342)**`](https://github.com/harlan-zw/nuxt-site-config/commit/9434288) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.2...v3.2.3)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)7 months agov5.5.1 ### 🐞 Bug Fixes
- `**useBotDetection**` importing incorrectly - by @harlan-zw [`**(e12cc)**`](https://github.com/nuxt-modules/robots/commit/e12cc8e) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.5.0...v5.5.1)
- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)8 months agov5.5.0 ### 🚀 Features
- New Content-Usage directive - by @harlan-zw in [**~~https://github.com/nuxt-modules/robots/issues/226~~**](https://github.com/nuxt-modules/robots/issues/226) [`**(2584b)**`](https://github.com/nuxt-modules/robots/commit/2584bfa) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/robots/compare/v5.4.0...v5.5.0)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)8 months agov7.0.14 ### 🐞 Bug Fixes
- **useBreadcrumbItems**: Ensure overrides take precedence over route.meta.breadcrumb - by @Vincentdevreede in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/69~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/69) [`**(967d0)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/967d079) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.13...v7.0.14)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)9 months agov7.0.13 ### 🐞 Bug Fixes
- Get latest match for nested routes - by @maartenvanhunsel [`**(29bcc)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/29bcc9d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.12...v7.0.13)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)9 months agov7.4.3 ### 🐞 Bug Fixes
- Drop remaining `**#import**` usage - by @harlan-zw [`**(cb336)**`](https://github.com/nuxt-modules/sitemap/commit/cb336fc) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.2...v7.4.3)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)9 months agov3.1.0 ## 📦 Dependencies Updated SEO related packages:
- [**~~@nuxtjs/robots~~**](https://github.com/nuxt-modules/robots): 5.2.10 → 5.2.11
- [**~~@nuxtjs/sitemap~~**](https://github.com/nuxt-modules/sitemap): 7.2.10 → 7.4.2 (minor version bump)
- [**~~nuxt-link-checker~~**](https://github.com/harlan-zw/nuxt-link-checker): 4.3.0 → 4.3.1
- [**~~nuxt-og-image~~**](https://github.com/harlan-zw/nuxt-og-image): 5.1.2 → 5.1.8
- [**~~nuxt-schema-org~~**](https://github.com/harlan-zw/nuxt-schema-org): 5.0.5 → 5.0.6
- [**~~nuxt-seo-utils~~**](https://github.com/harlan-zw/nuxt-seo-utils): 7.0.9 → 7.0.12
- [**~~nuxt-site-config~~**](https://github.com/harlan-zw/nuxt-site-config): 3.1.9 → 3.2.2 (minor version bump) These updates bring the latest bug fixes and improvements from the Nuxt SEO ecosystem, namely:
- 🐛 Improved stability for I18n integration
- 🐛 Nuxt Content v3.6.0 compatibility
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)9 months agov5.0.6 ### 🐞 Bug Fixes
- **content**: Support schema augmentation - by @harlan-zw [`**(e8a11)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/e8a11db) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.5...v5.0.6)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)9 months agov3.2.2 ### 🐞 Bug Fixes
- Prefer `**#app**` imports over `**nuxt/app**` - by @harlan-zw [`**(2bfab)**`](https://github.com/harlan-zw/nuxt-site-config/commit/2bfab42) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.1...v3.2.2)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)9 months agov7.4.2 ### 🐞 Bug Fixes
- `**fast-xml-parser**` side effects - by @harlan-zw [`**(f2a75)**`](https://github.com/nuxt-modules/sitemap/commit/f2a75b9) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.1...v7.4.2)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)10 months agov7.4.1 ### 🏎 Performance
- Reworked parser utils - by @harlan-zw [`**(2f6d5)**`](https://github.com/nuxt-modules/sitemap/commit/2f6d519) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.4.0...v7.4.1)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)10 months agov3.2.1 ### 🐞 Bug Fixes
- `**h3**` v2 compat - by @harlan-zw [`**(5842d)**`](https://github.com/harlan-zw/nuxt-site-config/commit/5842d43) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.2.0...v3.2.1)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)10 months agov4.3.1 ### 🐞 Bug Fixes
- Prefer `**nitro.static**` over `**_generate**` - by @danielroe in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/62~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/62) [`**(a1953)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/a195394)
- **deps**: Upgrade to content v3.6 - by @dargmuesli in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/63~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/63) [`**(13347)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/13347e2) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.3.0...v4.3.1)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)10 months agov7.4.0 ### 🚀 Features
- Display runtime errors fetching sources in xsl - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/461~~**](https://github.com/nuxt-modules/sitemap/issues/461) [`**(2bc98)**`](https://github.com/nuxt-modules/sitemap/commit/2bc983d) ### 🐞 Bug Fixes
- Prefer `**nitro.static**` over `**_generate**` - by @danielroe in [**~~https://github.com/nuxt-modules/sitemap/issues/458~~**](https://github.com/nuxt-modules/sitemap/issues/458) [`**(6bd89)**`](https://github.com/nuxt-modules/sitemap/commit/6bd8948)
- Support latest version of nuxt-content - by @SomethingNew71 in [**~~https://github.com/nuxt-modules/sitemap/issues/459~~**](https://github.com/nuxt-modules/sitemap/issues/459) [`**(40501)**`](https://github.com/nuxt-modules/sitemap/commit/405017d)
- Avoid frozen objects triggering errors - by @harlan-zw [`**(45226)**`](https://github.com/nuxt-modules/sitemap/commit/45226a4)
- Handle errors from resolving `**urls**` more gracefully - by @harlan-zw [`**(ec35f)**`](https://github.com/nuxt-modules/sitemap/commit/ec35fa0)
- Less aggressive prerender Nitro rebuilds - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/463~~**](https://github.com/nuxt-modules/sitemap/issues/463) [`**(166e8)**`](https://github.com/nuxt-modules/sitemap/commit/166e888) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.3.1...v7.4.0)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)10 months agov7.3.1 ### 🐞 Bug Fixes
- Nitro compatibility with v4 - by @luc122c [`**(af27b)**`](https://github.com/nuxt-modules/sitemap/commit/af27bc4) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.3.0...v7.3.1)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)11 months agov7.3.0 ⚠️ This release introduces several features, performance improvements and bug fixes, it's recommended to test your sitemap after upgrading. ### 🚀 Features
- Runtime sources - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/450~~**](https://github.com/nuxt-modules/sitemap/issues/450) [`**(40ba0)**`](https://github.com/nuxt-modules/sitemap/commit/40ba075)
- Automatic chunking for multi-sitemaps (experimental) - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/451~~**](https://github.com/nuxt-modules/sitemap/issues/451) [`**(ae50a)**`](https://github.com/nuxt-modules/sitemap/commit/ae50a19) ### 🐞 Bug Fixes
- Swr caching for chunked sitemaps - by @harlan-zw in [**~~https://github.com/nuxt-modules/sitemap/issues/452~~**](https://github.com/nuxt-modules/sitemap/issues/452) [`**(25e92)**`](https://github.com/nuxt-modules/sitemap/commit/25e929f)
- **i18n**:
- Handle disabled pages - by @harlan-zw [`**(08ce9)**`](https://github.com/nuxt-modules/sitemap/commit/08ce9a7)
- Support `**_i18nTransform**` with `**pages**` config - by @harlan-zw [`**(9e537)**`](https://github.com/nuxt-modules/sitemap/commit/9e53726) ### 🏎 Performance
- Optimize xml generation - by @harlan-zw [`**(1ad65)**`](https://github.com/nuxt-modules/sitemap/commit/1ad650d)
- Memory optimizations - by @harlan-zw [`**(154e6)**`](https://github.com/nuxt-modules/sitemap/commit/154e631) ##### [**~~View changes on GitHub~~**](https://github.com/nuxt-modules/sitemap/compare/v7.2.10...v7.3.0)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)11 months agov3.2.0 ### 🚀 Features
- Basic `**i18n-micro**` support - by @harlan-zw [`**(0fffb)**`](https://github.com/harlan-zw/nuxt-site-config/commit/0fffb8b) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-site-config/compare/v3.1.9...v3.2.0)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)11 months agov7.0.12 ### 🐞 Bug Fixes
- Honour site config `**defaultLocale**`, fallback to `**en**` - by @harlan-zw [`**(86f02)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/86f0296)
- **useBreadcrumbItems**: Switch `**watch**` to sync mode - by @zumm in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/63~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/63) [`**(75faa)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/75faae6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.11...v7.0.12)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.11 ### 🚀 Features
- Add option to hide breadcrumbs with non-existing path - by @zumm in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/61~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/61) [`**(dd88b)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/dd88b56) ### 🐞 Bug Fixes
- **App Icons**: Support multiple apple touch icons - by @harlan-zw [`**(dc044)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/dc044f4) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.10...v7.0.11)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.10 ### 🐞 Bug Fixes
- **useBreadcrumbItems**: Hydration mismatch - by @harlan-zw [`**(00646)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/00646d5) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.9...v7.0.10)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.9 ### 🐞 Bug Fixes
- Reactive `` attribute - by @harlan-zw [`**(08ad4)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/08ad4d6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.8...v7.0.9)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.3 ## 📦 Dependencies Updated SEO related packages:
- `**@nuxtjs/robots**`: ^5.2.8 → ^5.2.10
- `**@nuxtjs/sitemap**`: ^7.2.9 → ^7.2.10
- `**nuxt-og-image**`: ^5.1.1 → ^5.1.2
- `**nuxt-schema-org**`: ^5.0.4 → ^5.0.5
- `**nuxt-seo-utils**`: ^7.0.5 → ^7.0.8
- `**nuxt-site-config**`: ^3.1.7 → ^3.1.9 These updates bring the latest bug fixes and improvements from the Nuxt SEO ecosystem. When using PNPM please run `**pnpm dedupe**` after upgrade. ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.2...v3.0.3)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.5 ### 🐞 Bug Fixes
- **docs**: Fixed broken links to nodes and recipes for schema docs - by @ThomasWT in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/83~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/83) [`**(46d03)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/46d033f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.4...v5.0.5)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.8 ### 🐞 Bug Fixes
- **redirectToCanonicalSiteUrl**: Disable for prerendering and non-production environments - by @harlan-zw [`**(132d7)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/132d72e)
- **useBreadcrumbItems**: Broken display when conditionally rendered - by @harlan-zw [`**(78e72)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/78e7220) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.7...v7.0.8)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.7 ### 🐞 Bug Fixes
- **useBreadcrumbItems**: Hydration mismatch for breadcrumb items - by @urbanjackjr and **algae_seller** in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/57~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/57) [`**(341c9)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/341c916) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.6...v7.0.7)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.6 ### 🐞 Bug Fixes
- Lang attribute not respecting i18n language - by @harlan-zw [`**(2d3b3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/2d3b325)
- **useBreadcrumbItems**: Broken `**hideRoot**`, `**hideCurrent**` - by @harlan-zw [`**(04351)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/0435115) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.5...v7.0.6)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.1...v3.0.2)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.5 ### 🐞 Bug Fixes
- **useBreadcrumbItems**: Infinite recursion in production - by @harlan-zw [`**(d01c9)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d01c9c8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.4...v7.0.5)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.3.0 ### 🚀 Features
- **prerender**: Re-enable default 404 link checking - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/56~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/56) [`**(da0a2)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/da0a23d) ### 🐞 Bug Fixes
- **prerender**: Add issue summary to HTML report - by @harlan-zw [`**(b089b)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b089b83) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.2.0...v4.3.0)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.2.0 #### New Publishable Reports The markdown and HTML reports have been reworked for improved usability. Reports are now also publically publishable. Check a live example here: [**~~https://nuxtseo.com/__link-checker__/link-checker-report~~**](https://nuxtseo.com/__link-checker__/link-checker-report). ### 🚀 Features
- New `**html**` and `**markdown**` report templates - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/54~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/54) [`**(ebd40)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ebd40c6)
- Publishable reports - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/55~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/55) [`**(95e5b)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/95e5b80) ### 🐞 Bug Fixes
- Report emitted reports from cwd - by @harlan-zw [`**(9fa91)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9fa916b)
- Only show stdout logs if reports are disabled - by @harlan-zw [`**(8f222)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/8f222ae)
- False positives from nuxt content hashes - by @harlan-zw [`**(0c00f)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/0c00f7e) ### 🏎 Performance
- `**ultrahtml**` for link parsing - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/53~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/53) [`**(270ae)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/270aec7)
- **prerendering**: Batch processing for reduced memory usage - by @harlan-zw [`**(63f49)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/63f49fa) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.1.1...v4.2.0)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.0...v3.0.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0** Major **### 🚨 Breaking Changes
- Bump modules to 3.16 compatibility - by @harlan-zw [`**(70963)**`](https://github.com/harlan-zw/nuxt-seo/commit/7096323) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.2.0...v3.0.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.4 ### 🐞 Bug Fixes
- Don't depend on `**@unhead/schema**` implicitly - by @harlan-zw [`**(549b7)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/549b723)
- Disable schema.org on error pages - by @harlan-zw [`**(1f1cf)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/1f1cf9e)
- **devtools**:
- Disable code lines - by @harlan-zw [`**(b7b73)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/b7b73a0)
- Runtime config not coming through - by @harlan-zw [`**(7d93e)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/7d93e2a)
- Reactive schema.org - by @harlan-zw [`**(ce58d)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/ce58dad) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.3...v5.0.4)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.4 ### 🚨 Breaking Changes
- Lowercase canonical URL - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/41~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/41) [`**(f20e3)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/f20e3f9)
- Shared `**useBreadcrumbItems()**` context - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/40~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/40) [`**(14a19)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/14a1990)
- Require Nuxt v3.16 - by @harlan-zw [`**(ddd77)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/ddd77b1) ### 🐞 Bug Fixes
- Unhead v2 compat - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo-utils/issues/39~~**](https://github.com/harlan-zw/nuxt-seo-utils/issues/39) [`**(6abb2)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/6abb26b)
- Broken unhead utils path - by @harlan-zw [`**(e500f)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/e500f99)
- Schema.org not being applied - by @harlan-zw [`**(a1956)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/a1956e6)
- Load template params plugin - by @harlan-zw [`**(b1634)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/b163449)
- Non explicit peer dependency - by @harlan-zw [`**(d0c6b)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d0c6b13)
- Throw error if used with Nuxt 3.16.0 - by @harlan-zw [`**(7093c)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/7093cc3)
- Run route rules client-side - by @harlan-zw [`**(f2926)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/f29262a)
- Fallback invalid locale specific lowercasing - by @harlan-zw [`**(fc828)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/fc82864)
- Avoid adding empty canonical urls - by @harlan-zw [`**(7da67)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/7da67d5)
- **useBreadcrumbItems**:
- Maybe resolve Nuxt UI v3 types - by @harlan-zw [`**(9cb17)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/9cb1711)
- Handle suspense - by @harlan-zw [`**(66152)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/66152e7) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v6.0.13...v7.0.4)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv6.0.13 ### 🐞 Bug Fixes
- Throw error if used with Nuxt 3.16.0 - by @harlan-zw [`**(7093c)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/7093cc3) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.3...v6.0.13)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0-beta.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.0-beta.2...v3.0.0-beta.3)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)last yearv7.0.3 ### 🐞 Bug Fixes
- Load template params plugin - by @harlan-zw [`**(b1634)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/b163449)
- Non explicit peer dependency - by @harlan-zw [`**(d0c6b)**`](https://github.com/harlan-zw/nuxt-seo-utils/commit/d0c6b13) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo-utils/compare/v7.0.2...v7.0.3)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.3 ### 🐞 Bug Fixes
- Maybe resolve unref'd inLanguage - by @harlan-zw [`**(7a1ef)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/7a1efaa)
- Non explicit peer dependency - by @harlan-zw [`**(f02db)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/f02dbcb) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.2...v5.0.3)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0-beta.2 ### 🚨 Breaking Changes
- Bump modules to 3.16 compatibility - by @harlan-zw [`**(24070)**`](https://github.com/harlan-zw/nuxt-seo/commit/2407033) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v3.0.0-beta.1...v3.0.0-beta.2)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.2 ### 🐞 Bug Fixes
- Ensure `**host**` has trailing slash - by @harlan-zw [`**(c932f)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/c932f37)
- Resolve `**inLanguage**` ref - by @harlan-zw [`**(8bfe7)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8bfe747) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.1...v5.0.2)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv3.0.0-beta.1 ### 🚨 Breaking Changes
- Bump modules to 3.16 compatibility - by @harlan-zw [`**(70963)**`](https://github.com/harlan-zw/nuxt-seo/commit/7096323) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.2.0...v3.0.0-beta.1)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.1 ### 🐞 Bug Fixes
- Reactive options not unref'd - by @harlan-zw [`**(fe9a0)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/fe9a02f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v5.0.0...v5.0.1)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv5.0.0** Major **### 🚨 Breaking Changes
- Require Nuxt v3.16 - by @harlan-zw [`**(f3477)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/f34770c) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.3...v5.0.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.3 ### 🐞 Bug Fixes
- Correct translationOfWork reference - by @okj579 in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/77~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/77) [`**(1ca3b)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/1ca3bfc) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.2...v4.1.3)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.2.0
- perf(devtools): optimize `**shiki**` bundles
- feat(i18n): reactive site config [**~~https://github.com/harlan-zw/nuxt-site-config/pull/39~~**](https://github.com/harlan-zw/nuxt-site-config/pull/39)
- feat: `**multiTenancy**` site config [**~~https://github.com/harlan-zw/nuxt-site-config/pull/40~~**](https://github.com/harlan-zw/nuxt-site-config/pull/40) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.1.1...v2.2.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.2 ### 🏎 Performance
- **devtools**: Optimize `**shiki**` bundle - by @harlan-zw [`**(73fe9)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/73fe96f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.1...v4.1.2)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.1.1 ### 🏎 Performance
- **devtools**: Optimize shiki bundle - by @harlan-zw [`**(9b4ce)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9b4ce02) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.1.0...v4.1.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.1.1 ### 🐞 Bug Fixes
- Resolve sub modules as explicit imports - by @harlan-zw [`**(465b6)**`](https://github.com/harlan-zw/nuxt-seo/commit/465b6b8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.1.0...v2.1.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.1.0 ### 🚀 Features ### Nuxt Content v3 All modules now support Nuxt Content v3 including Robots, Sitemap, OG Image, Schema.org and Link Checker. You can either install them manually by following the individual module instructions or use the Nuxt SEO [`**asSeoCollection()**`](https://nuxtseo.com/docs/nuxt-seo/guides/nuxt-content#setup-nuxt-content-v3) to register them all at once.
- Nuxt Robots: robots ([**~~docs~~**](https://nuxtseo.com/docs/robots/guides/content))
- Nuxt Sitemap: sitemap ([**~~docs~~**](https://nuxtseo.com/docs/sitemap/guides/content))
- Nuxt OG Image: ogImage ([**~~docs~~**](https://nuxtseo.com/docs/og-image/integrations/content))
- Nuxt Schema.org: schemaOrg ([**~~docs~~**](https://nuxtseo.com/docs/schema-org/guides/content)) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.3...v2.1.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.1.0...v4.1.1)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.1.0 ### 🚀 Features
- Nuxt Content v3 - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/52~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/52) [`**(ecf35)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ecf35eb) ### 🐞 Bug Fixes
- **client**: Add current node as possible component path - by @harlan-zw [`**(84a58)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/84a58da) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.4...v4.1.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.1.0 ### 🚀 Features
- Nuxt Content v3 integration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/75~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/75) [`**(2cccd)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/2cccdf8) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.4...v4.1.0)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.0.3_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.2...v2.0.3)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.0.4 ### 🐞 Bug Fixes
- Treat links with non-http protocol as external - by @manniL in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/51~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/51) [`**(99404)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/994045d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.3...v4.0.4)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.0.3 ### 🐞 Bug Fixes
- Ignore fragment-only links - by @manniL in [**~~https://github.com/harlan-zw/nuxt-link-checker/issues/49~~**](https://github.com/harlan-zw/nuxt-link-checker/issues/49) [`**(64c44)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/64c44db) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.2...v4.0.3)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.0.4 ### 🐞 Bug Fixes
- Render schema.org when indexing is disabled - by @harlan-zw [`**(3d3d9)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/3d3d9d6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.3...v4.0.4)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.0.2 ### 🐞 Bug Fixes
- Nuxt context `**#link-checker**` alias - by @harlan-zw [`**(04fde)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/04fde70)
- Manual opt-in for checking external links - by @harlan-zw [`**(44ec3)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/44ec341) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.1...v4.0.2)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.0.3 ### 🐞 Bug Fixes
- Prefer explicit imports over `**#imports**` - by @harlan-zw [`**(4225e)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/4225ed2) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.2...v4.0.3)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.0.1 ### 🐞 Bug Fixes
- Enable devtools by default if not disabled - by @harlan-zw [`**(dc0f1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/dc0f11d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v4.0.0...v4.0.1)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.0.2 ### 🐞 Bug Fixes
- Avoid using default `**id**` - by @harlan-zw [`**(f5be8)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/f5be801) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.1...v4.0.2)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.0.1 ### 🐞 Bug Fixes
- Avoid duplicate tags and `**node**` prop being exposed - by @harlan-zw [`**(84895)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/8489595)
- **devtools**: Show a warning if no schema.org is configured - by @harlan-zw [`**(c1baa)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/c1baa1e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v4.0.0...v4.0.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.1...v2.0.2)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.0.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0...v2.0.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)last yearv2.0.0** Major **# **Nuxt SEO v2 Stable 🎉** This release has been almost two years in the making. Please read the [**~~Announcing Nuxt SEO Stable~~**](https://nuxtseo.com/announcement) post to learn about the history of Nuxt SEO, what the stable means and what is planned for the module. Ready to upgrade? Check out the migration guides:
- [**~~Nuxt SEO RC to Stable~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/rc-to-stable)
- [**~~Nuxt SEO Beta to RC~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/beta-to-rc)
- [**~~Nuxt SEO Kit to Nuxt SEO Beta~~**](https://nuxtseo.com/docs/nuxt-seo/migration-guide/nuxt-seo-kit) ## Changelog ### 🚨 Breaking Changes
- No longer render default og:image, requires `**defineOgImage()**` - by @harlan-zw [`**(f50ec)**`](https://github.com/harlan-zw/nuxt-seo/commit/f50ec72)
- No longer render default og:image, requires `**defineOgImage()**` - by @harlan-zw [`**(5eac2)**`](https://github.com/harlan-zw/nuxt-seo/commit/5eac2bb)
- Drop `**nuxt-seo-ui**` module - by @harlan-zw [`**(cc7c5)**`](https://github.com/harlan-zw/nuxt-seo/commit/cc7c53d)
- Migrate to `**@nuxtjs/robots**` - by @harlan-zw [`**(991bf)**`](https://github.com/harlan-zw/nuxt-seo/commit/991bfda)
- Bump `**@nuxtjs/sitemap**` v6 beta - by @harlan-zw [`**(a6204)**`](https://github.com/harlan-zw/nuxt-seo/commit/a620429)
- Migrate core features to `**nuxt-seo-utils**` - by @harlan-zw [`**(dd466)**`](https://github.com/harlan-zw/nuxt-seo/commit/dd466d4) ### 🚀 Features
- Nuxt-seo-experiments - by @harlan-zw [`**(2de57)**`](https://github.com/harlan-zw/nuxt-seo/commit/2de579d)
- Add `**canonicalDomain**` config - by @harlan-zw [`**(1a6ce)**`](https://github.com/harlan-zw/nuxt-seo/commit/1a6ce7b)
- Support `**identity**` site config - by @harlan-zw [`**(5a90e)**`](https://github.com/harlan-zw/nuxt-seo/commit/5a90e83)
- Support `**twitter**` site config - by @harlan-zw [`**(807f7)**`](https://github.com/harlan-zw/nuxt-seo/commit/807f774)
- Support `**currentLocale**` site config - by @harlan-zw [`**(47b2f)**`](https://github.com/harlan-zw/nuxt-seo/commit/47b2fc5)
- Nuxt Simple Sitemap v4 - by @harlan-zw [`**(578e5)**`](https://github.com/harlan-zw/nuxt-seo/commit/578e584)
- Implement `**fallbackTitle**` as separate plugin - by @harlan-zw [`**(eb3bc)**`](https://github.com/harlan-zw/nuxt-seo/commit/eb3bc37)
- `**useBreadcrumbItems()**` - by @harlan-zw [`**(1b5d8)**`](https://github.com/harlan-zw/nuxt-seo/commit/1b5d87d)
- Nuxt Sitemap v5 - by @harlan-zw [`**(b1e43)**`](https://github.com/harlan-zw/nuxt-seo/commit/b1e4374)
- `**canonicalQueryWhitelist**` - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/282~~**](https://github.com/harlan-zw/nuxt-seo/issues/282) [`**(568c2)**`](https://github.com/harlan-zw/nuxt-seo/commit/568c2b7)
- Docs for v2 stable - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/338~~**](https://github.com/harlan-zw/nuxt-seo/issues/338) [`**(5ed69)**`](https://github.com/harlan-zw/nuxt-seo/commit/5ed69d9) ### 🐞 Bug Fixes
- Nav re-order - by @harlan-zw [`**(5dae2)**`](https://github.com/harlan-zw/nuxt-seo/commit/5dae282)
- Misc kit bugs - by @harlan-zw [`**(a1e98)**`](https://github.com/harlan-zw/nuxt-seo/commit/a1e9832)
- Redirect to canonical domain in production by default - by @harlan-zw [`**(ccbab)**`](https://github.com/harlan-zw/nuxt-seo/commit/ccbabf6)
- Prefer `**useServerHead**` for static head data - by @harlan-zw [`**(ba518)**`](https://github.com/harlan-zw/nuxt-seo/commit/ba51818)
- Drop fallback title support - by @harlan-zw [`**(185b8)**`](https://github.com/harlan-zw/nuxt-seo/commit/185b8c8)
- Only expose name and url from site config - by @harlan-zw [`**(0585c)**`](https://github.com/harlan-zw/nuxt-seo/commit/0585cee)
- Drop fallback title support" - by @harlan-zw [`**(6d00c)**`](https://github.com/harlan-zw/nuxt-seo/commit/6d00cdd)
- Use lower priority for nuxtseo defaults - by @harlan-zw [`**(6fcf8)**`](https://github.com/harlan-zw/nuxt-seo/commit/6fcf891)
- Only set description if set - by @harlan-zw [`**(164a2)**`](https://github.com/harlan-zw/nuxt-seo/commit/164a251)
- Tag priorities for nuxt.config overrides - by @harlan-zw [`**(0f309)**`](https://github.com/harlan-zw/nuxt-seo/commit/0f3095b)
- Tag priorities for nuxt.config overrides - by @harlan-zw [`**(1cda3)**`](https://github.com/harlan-zw/nuxt-seo/commit/1cda345)
- Support `**%siteName**` param - by @harlan-zw [`**(fb23e)**`](https://github.com/harlan-zw/nuxt-seo/commit/fb23ea9)
- Give `` higher priority than nuxt.config - by @harlan-zw [`**(c306a)**`](https://github.com/harlan-zw/nuxt-seo/commit/c306a9d)
- Provide all site config as template params and render client-side - by @harlan-zw [`**(9560a)**`](https://github.com/harlan-zw/nuxt-seo/commit/9560a65)
- Update splash for beta - by @harlan-zw [`**(8cd22)**`](https://github.com/harlan-zw/nuxt-seo/commit/8cd229f)
- Nuxt-og-image 2.1.0 beta - by @harlan-zw [`**(a7edb)**`](https://github.com/harlan-zw/nuxt-seo/commit/a7edbc3)
- Fallback to defaultLocale for `**lang**` attribute - by @harlan-zw [`**(ce573)**`](https://github.com/harlan-zw/nuxt-seo/commit/ce5737a)
- Redirect canonical site url requires opt-in - by @harlan-zw [`**(f0387)**`](https://github.com/harlan-zw/nuxt-seo/commit/f038733)
- Remove Schema.org defaults, moved to `**nuxt-schema-org**` - by @harlan-zw [`**(38514)**`](https://github.com/harlan-zw/nuxt-seo/commit/3851490)
- Enable `**fallbackTitle**` by default - by @harlan-zw [`**(9e0a0)**`](https://github.com/harlan-zw/nuxt-seo/commit/9e0a0de)
- Module exports - by @harlan-zw [`**(44830)**`](https://github.com/harlan-zw/nuxt-seo/commit/44830c4)
- Safer version resolving - by @harlan-zw [`**(66929)**`](https://github.com/harlan-zw/nuxt-seo/commit/66929e4)
- Redirect logic - by @harlan-zw [`**(75ddb)**`](https://github.com/harlan-zw/nuxt-seo/commit/75ddb0f)
- Add `**og:type**` back in - by @harlan-zw [`**(9dae0)**`](https://github.com/harlan-zw/nuxt-seo/commit/9dae098)
- Apply trailingSlash config to `**NuxtLink**` component - by @harlan-zw [`**(18793)**`](https://github.com/harlan-zw/nuxt-seo/commit/1879310)
- Don't apply default trailing slashes while upstream bug - by @harlan-zw [`**(79d42)**`](https://github.com/harlan-zw/nuxt-seo/commit/79d42b6)
- 2s timeout on update check, allow failure - by @harlan-zw [`**(c34fe)**`](https://github.com/harlan-zw/nuxt-seo/commit/c34fe82)
- Avoid using nuxt/ui types for breadcrumb item - by @harlan-zw [`**(534f5)**`](https://github.com/harlan-zw/nuxt-seo/commit/534f5f2)
- Explicitly import $fetch - by @harlan-zw [`**(ca435)**`](https://github.com/harlan-zw/nuxt-seo/commit/ca435c7)
- Only run version check in dev on stable branch - by @harlan-zw [`**(b0dcd)**`](https://github.com/harlan-zw/nuxt-seo/commit/b0dcdc8)
- Breadcrumb `**to**` optional - by @harlan-zw [`**(48353)**`](https://github.com/harlan-zw/nuxt-seo/commit/48353f7)
- Avoid running plugins in server components - by @harlan-zw [`**(5c0c9)**`](https://github.com/harlan-zw/nuxt-seo/commit/5c0c90b)
- Ensure defaults are applied after i18n site config - by @harlan-zw [`**(31f0d)**`](https://github.com/harlan-zw/nuxt-seo/commit/31f0d70)
- Ensure breadcrumb schema.org paths are fully resolved - by @harlan-zw [`**(09a4c)**`](https://github.com/harlan-zw/nuxt-seo/commit/09a4c6e)
- Opt in to `**import.meta.***` properties - by @danielroe in [**~~https://github.com/harlan-zw/nuxt-seo/issues/211~~**](https://github.com/harlan-zw/nuxt-seo/issues/211) [`**(0fad0)**`](https://github.com/harlan-zw/nuxt-seo/commit/0fad027)
- Redirect using url config key - by @94726 in [**~~https://github.com/harlan-zw/nuxt-seo/issues/256~~**](https://github.com/harlan-zw/nuxt-seo/issues/256) [`**(2f195)**`](https://github.com/harlan-zw/nuxt-seo/commit/2f195e4)
- Disable splash by default - by @harlan-zw [`**(840cf)**`](https://github.com/harlan-zw/nuxt-seo/commit/840cf49)
- Avoid infinite redirects with `**redirectToCanonicalSiteUrl**` redirects - by @harlan-zw [`**(bac31)**`](https://github.com/harlan-zw/nuxt-seo/commit/bac31a9)
- `**useBreadcrumbItems**` generating invalid schema.org - by @harlan-zw [`**(e321b)**`](https://github.com/harlan-zw/nuxt-seo/commit/e321b80)
- Missing nuxt app context when using `**useBreadcrumbItems**` - by @harlan-zw [`**(2005a)**`](https://github.com/harlan-zw/nuxt-seo/commit/2005a29)
- Reactive `**lang**` when using Nuxt I18n - by @harlan-zw [`**(58e4f)**`](https://github.com/harlan-zw/nuxt-seo/commit/58e4f3e)
- Wait for i18n plugin, handle fallback - by @harlan-zw [`**(81163)**`](https://github.com/harlan-zw/nuxt-seo/commit/8116353)
- `**useBreadcrumbItems**` support static meta from dynamic routes - by @terion-name in [**~~https://github.com/harlan-zw/nuxt-seo/issues/323~~**](https://github.com/harlan-zw/nuxt-seo/issues/323) [`**(d3895)**`](https://github.com/harlan-zw/nuxt-seo/commit/d389507)
- Avoid `**og-image**` and `**sitemap**` version locks - by @harlan-zw [`**(76b7e)**`](https://github.com/harlan-zw/nuxt-seo/commit/76b7e1d)
- **breadcrumbs**:
- Support computed overrides - by @thorge in [**~~https://github.com/harlan-zw/nuxt-seo/issues/331~~**](https://github.com/harlan-zw/nuxt-seo/issues/331) [`**(79e4d)**`](https://github.com/harlan-zw/nuxt-seo/commit/79e4d63)
- **doc**:
- Broken config key for robot user agents - by @harlan-zw [`**(b76b2)**`](https://github.com/harlan-zw/nuxt-seo/commit/b76b26c)
- **useBreadcrumbItems**:
- Avoid infinite recursion - by @harlan-zw [`**(f6fd1)**`](https://github.com/harlan-zw/nuxt-seo/commit/f6fd135)
- Enable schema.org by default - by @harlan-zw [`**(6b0d7)**`](https://github.com/harlan-zw/nuxt-seo/commit/6b0d7fd)
- Allow `**overrides**`, `**append**` and `**prepend**` - by @harlan-zw [`**(a1d8b)**`](https://github.com/harlan-zw/nuxt-seo/commit/a1d8b1d)
- Ensure i18n prefix is correct - by @harlan-zw [`**(919a2)**`](https://github.com/harlan-zw/nuxt-seo/commit/919a243)
- Nuxt instance in computed - by @harlan-zw [`**(c1696)**`](https://github.com/harlan-zw/nuxt-seo/commit/c1696ea)
- Avoid route path becoming label - by @harlan-zw [`**(bc1dc)**`](https://github.com/harlan-zw/nuxt-seo/commit/bc1dc0b)
- Route meta regression - by @harlan-zw [`**(f5a4d)**`](https://github.com/harlan-zw/nuxt-seo/commit/f5a4da6) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v1.3.13...v2.0.0)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv4.0.0** Major **## Introduction The v5 major of Nuxt Link Checker is a simple release to remove deprecations and add support for the [**~~Nuxt SEO v2 stable~~**](https://nuxtseo.com/announcement). ## ⚠️ Breaking Features ### Site Config v3 Nuxt Site Config is a module used internally by Nuxt Link Checker. The major update to v3.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.0.0). ### 🚨 Breaking Changes
- Upgrade to nuxt-site-config v3 - by @harlan-zw [`**(5a290)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/5a2902f) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.2.0...v4.0.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv4.0.0** Major **## Introduction The v5 major of Nuxt Schema.org is a simple release to remove deprecations and add support for the [**~~Nuxt SEO v2 stable~~**](https://nuxtseo.com/announcement). ## ⚠️ Breaking Features ### Site Config v3 Nuxt Site Config is a module used internally by Nuxt Schema.org. The major update to v3.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the [**~~breaking changes~~**](https://github.com/harlan-zw/nuxt-site-config/releases/tag/v3.0.0). ## Changelog ### 🚨 Breaking Changes
- Upgrade to nuxt-site-config v3 - by @harlan-zw [`**(d44e2)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/d44e258) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v3.5.0...v4.0.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv3.5.0 ### 🚀 Features
- Improved identity configuration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/66~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/66) [`**(252a1)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/252a12e)
- Nuxt Content integration - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-schema-org/issues/67~~**](https://github.com/harlan-zw/nuxt-schema-org/issues/67) [`**(6dee1)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/6dee1ca) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v3.4.7...v3.5.0)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv3.2.0 ### 🚀 Features
- `**no-missing-href**` rule - by @harlan-zw [`**(e12ab)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/e12ab3d)
- `**no-double-slashes**` rule - by @harlan-zw [`**(11b8f)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/11b8fa9)
- `**no-non-ascii-chars**` rule - by @harlan-zw [`**(3d663)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/3d663c3)
- `**no-duplicate-query-params**` rule - by @harlan-zw [`**(bfe9e)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/bfe9e0f)
- `**no-whitespace**` rule - by @harlan-zw [`**(ce79e)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/ce79e8a)
- `**no-uppercase-chars**` rule - by @harlan-zw [`**(7e92d)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/7e92daf) ### 🐞 Bug Fixes
- Better description for `**no-baseless**` - by @harlan-zw [`**(370aa)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/370aa70)
- `**skipInspections**` not honoured - by @harlan-zw [`**(2df19)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/2df19ed) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.1.3...v3.2.0)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv3.4.7_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v3.4.6...v3.4.7)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv3.4.6_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v3.4.5...v3.4.6)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv3.4.5 ### 🐞 Bug Fixes
- Broken `**injectHead**` import - by @harlan-zw [`**(9d581)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/9d581a0) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v3.4.4...v3.4.5)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)last yearv3.4.4 ### 🐞 Bug Fixes
- Pure utils for useSchemaOrgConfig - by @harlan-zw [`**(5ba65)**`](https://github.com/harlan-zw/nuxt-schema-org/commit/5ba6529) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-schema-org/compare/v3.4.3...v3.4.4)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)last yearv3.1.3 ### 🐞 Bug Fixes
- Support custom root ids - by @harlan-zw [`**(f1659)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/f1659eb)
- **link-text**: Expose extracted textContent - by @harlan-zw [`**(53b71)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/53b710a) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.1.2...v3.1.3)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.23 ### 🐞 Bug Fixes
- Avoid `**og-image**` and `**sitemap**` version locks - by @harlan-zw [`**(76b7e)**`](https://github.com/harlan-zw/nuxt-seo/commit/76b7e1d) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.22...v2.0.0-rc.23)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.22 ### 🐞 Bug Fixes
- **useBreadcrumbItems**:
- Avoid route path becoming label - by @harlan-zw [`**(bc1dc)**`](https://github.com/harlan-zw/nuxt-seo/commit/bc1dc0b)
- Route meta regression - by @harlan-zw [`**(f5a4d)**`](https://github.com/harlan-zw/nuxt-seo/commit/f5a4da6)
- Support static meta from dynamic routes - by @terion-name in [**~~https://github.com/harlan-zw/nuxt-seo/issues/323~~**](https://github.com/harlan-zw/nuxt-seo/issues/323) [`**(d3895)**`](https://github.com/harlan-zw/nuxt-seo/commit/d389507) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.21...v2.0.0-rc.22)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov3.1.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.1.1...v3.1.2)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.21 ### 🐞 Bug Fixes
- **useBreadcrumbItems**: Nuxt instance in computed - by @harlan-zw [`**(c1696)**`](https://github.com/harlan-zw/nuxt-seo/commit/c1696ea) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.20...v2.0.0-rc.21)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.20 ### 🚨 Breaking Changes
- Bump `**@nuxtjs/sitemap**` v6 stable - by @harlan-zw [`**(a6204)**`](https://github.com/harlan-zw/nuxt-seo/commit/a620429). ⚠️ Please see [**~~https://github.com/nuxt-modules/sitemap/pull/320~~**](https://github.com/nuxt-modules/sitemap/pull/320) if you have submitted multi-sitemap URLS in Google Search Console as the paths have changed. ⚠️ Please verify your sitemap output. ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.19...v2.0.0-rc.20)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov3.1.1_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.1.0...v3.1.1)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.19_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.18...v2.0.0-rc.19)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.18 ### 🐞 Bug Fixes
- Wait for i18n plugin, handle fallback - by @harlan-zw [`**(81163)**`](https://github.com/harlan-zw/nuxt-seo/commit/8116353) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.17...v2.0.0-rc.18)
- [Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)2 years agov2.0.0-rc.17 ### 🚨 Breaking Changes
- Bump `**@nuxtjs/sitemap**` v6 beta - by @harlan-zw [`**(a6204)**`](https://github.com/harlan-zw/nuxt-seo/commit/a620429). ⚠️ Please see [**~~https://github.com/nuxt-modules/sitemap/pull/320~~**](https://github.com/nuxt-modules/sitemap/pull/320) if you have submitted multi-sitemap URLS in Google Search Console as the paths have changed. ### 🚀 Features
- `**canonicalQueryWhitelist**` - by @harlan-zw in [**~~https://github.com/harlan-zw/nuxt-seo/issues/282~~**](https://github.com/harlan-zw/nuxt-seo/issues/282) [`**(568c2)**`](https://github.com/harlan-zw/nuxt-seo/commit/568c2b7) ### 🐞 Bug Fixes
- Missing nuxt app context when using `**useBreadcrumbItems**` - by @harlan-zw [`**(2005a)**`](https://github.com/harlan-zw/nuxt-seo/commit/2005a29)
- Reactive `**lang**` when using Nuxt I18n - by @harlan-zw [`**(58e4f)**`](https://github.com/harlan-zw/nuxt-seo/commit/58e4f3e) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-seo/compare/v2.0.0-rc.16...v2.0.0-rc.17)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov3.1.0 ## v3.1.0 ### 📈 JSON reports and custom storage Reports should be easier to work with now that routes with no warnings or errors will be filtered out. With these new reports, you can save them in `**json**` format or save them anywhere using the new `**report.storage**` option which supports an unstorage instance or a string path.```
export default defineNuxtConfig({
lineChecker: {
report: {
// save json reports in the public directory
json: true,
storage: './public',
}
}
})
```## Changelog ### 🚀 Features
- Fuzzy search page titles to find link fix - by @harlan-zw [`**(83b48)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/83b4812)
- Config `**report.json**` for json reports - by @harlan-zw [`**(fd721)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/fd7216d)
- `**report.storage**` save reports anywhere using unstorage - by @harlan-zw [`**(a7c74)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/a7c742c) ### 🐞 Bug Fixes
- Initialize route in plugin - by @harlan-zw [`**(b2685)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/b268512)
- Broken prop type - by @harlan-zw [`**(75388)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/7538807)
- Add nuxt content pages to fuzzy search - by @harlan-zw [`**(077e1)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/077e1d8)
- Generate link database on-demand - by @harlan-zw [`**(70849)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/7084906)
- Display link fix suggestion on generate output - by @harlan-zw [`**(6cc2c)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/6cc2c6b)
- Filter generated reports for having data - by @harlan-zw [`**(9e099)**`](https://github.com/harlan-zw/nuxt-link-checker/commit/9e099c4) ##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.0.2...v3.1.0)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)2 years agov3.0.2_No significant changes_##### [**~~View changes on GitHub~~**](https://github.com/harlan-zw/nuxt-link-checker/compare/v3.0.1...v3.0.2)
Check GitHub for older releases.
---
### /pro
Source: https://nuxtseo.com/pro
Description: Nuxt SEO is a collection of hand-crafted Nuxt Modules to help you rank higher in search engines.
Nuxt SEO on GitHub
h1. **Stop overpaying****for SEO tools. **
Your GSC data, indexing health, Core Web Vitals, competitor tracking, and AI content briefs. One dashboard, one payment. Built for Nuxt.
[**Get Early Access **](https://buy.stripe.com/aFaaEXfcU6Os4gjfsJcs801) [** Try Free in Dev **](https://nuxtseo.com/docs/nuxt-seo-pro/getting-started/introduction)
$119 one-time. Not $99/month like the other guys.
h2. **Find the keywords driving your next 1,000 visitors **
Connect Google Search Console and see exactly which pages to optimize, which keywords to target, and where your traffic is leaving money on the table.
nuxtseo.com — Nuxt SEO Pro Dashboard
**Live GSC Data**
Clicks
**4.9K**
+13%
Views
**362K**
-13%
Avg Position
**8.5**
+38%
Top Keywords
sitemap validator pos: 6
nuxt seo pos: 9
schema validator pos: 6
validate sitemap pos: 6
xml sitemap validator pos: 5
Striking Distance
schema validator pos 6 · 71K imp
schema markup validator pos 7 · 16K imp
schema.org validator pos 5 · 8.4K imp
Keywords ranking 4-20 with optimization potential
[**Open Dashboard **](https://nuxtseo.com/pro/dashboard)
h2. **Everything you need after technical SEO **
Your meta tags are set, sitemap's live, schema's rendering. Now track what matters.
h3. **Search Console**
Clicks, impressions, CTR, and position for every page and keyword. Compare periods, filter by country, track trends.
h3. **Indexing Diagnostics**
Which pages Google indexed, which it skipped, and why. Soft 404s, crawl errors, and redirect issues surfaced with fixes.
h3. **Core Web Vitals**
Live CrUX data for LCP, INP, and CLS. Threshold indicators and trend history from real Chrome users.
h3. **Competitor Tracking**
Monitor up to 10 competitors. Domain rank, organic traffic, keyword overlap, and gaps. Auto-discovery included.
h3. **AI Content Briefs**
Generate content briefs, page audits, and keyword strategies using your real GSC data. Context your AI assistant actually needs.
h3. **MCP Server**
Your GSC data exposed via MCP. Research keywords, analyze SERPs, and check rankings from Claude Code, Cursor, or Windsurf.
**Competitor Tracking **
h2. **Know exactly where you stand **
Track up to 10 competitors. Keyword gaps, quick wins, and position distribution updated automatically.
Competitor Tracking — nuxtseo.com
**12**Quick Wins
**34**Keyword Gaps
**87**Shared Keywords
| **Domain ** | **Traffic ** | **Keywords ** | **Rank ** | **Wins ** |
| --- | --- | --- | --- | --- |
| **nuxtseo.com****You** | 2.4k | 247 | 42 | — |
| **unhead.unjs.io** | 1.8k | 189 | 38 | 5 |
| **next-seo.vercel.app** | 920 | 94 | 31 | 4 |
| **vueuse.org** | 12k | 890 | 56 | 3 |
**Position Distribution **
You
**45%**
**30%**
**25%**
Competitors
**32%**
**35%**
**33%**
Top 10 11–20 21+
**Quick Wins**Small push to overtake competitors
nuxt meta tags
**#11****#4****7 spots**1.2k/mo
vue seo best practices
**#14****#7****7 spots**880/mo
nuxt head management
**#12****#3****9 spots**720/mo
**Keyword Intelligence **
h2. **Find your next page one keyword **
Track keywords with real search volume, difficulty, and intent. Spot striking distance opportunities your competitors missed.
Keywords — nuxtseo.com
**All Keywords****Non-branded****First Page****Striking Distance****Improving**
| **Keyword ** | **Intent ** | **Difficulty ** | **Volume ** | **Position ** | **Trend ** |
| --- | --- | --- | --- | --- | --- |
| nuxt seo | **navigational** | 28 | 2.4k | **#1** | **—** |
| nuxt sitemap | **informational** | 22 | 1.8k | **#2** | **+1** |
| nuxt og image | **informational** | 18 | 1.1k | **#1** | **+2** |
| vue meta tags | **informational** | 35 | 3.2k | **#7** | **-2** |
| nuxt schema.org | **informational** | 15 | 890 | **#1** | **—** |
| nuxt robots.txt | **informational** | 12 | 720 | **#3** | **+3** |
| nuxt seo module | **commercial** | 24 | 480 | **#1** | **—** |
**Striking Distance**8 pages ranking 4–20 with high impressions
/docs/sitemap/guides/caching pos: 7/docs/og-image/api/config pos: 12/docs/robots/guides/disallow pos: 9
**MCP Integration **
h2. **SEO research without leaving your editor **
Your GSC data exposed via MCP. Ask your AI assistant to find striking distance keywords, analyze competitors, or generate content briefs with real data.
- Query GSC data from any AI assistant
- Keyword research with volume and difficulty
- SERP analysis and domain rankings
- Content briefs grounded in your real traffic
[**Set up MCP **](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)
Claude Code
$claude "show me pages in striking distance"
nuxt-seo-pro
gsc_analysispreset: striking-distance
✓Found 8 pages ranking 4-20 with optimization potential
/docs/sitemap/guides/cachingpos: 7 · 2.1k imp
/docs/og-image/api/configpos: 12 · 890 imp
/docs/robots/guides/disallowpos: 9 · 1.4k imp
h2. **Built for Nuxt developers, not enterprise SEO teams **
You don't need a $1,200/year tool to track your sites. You need your own data, presented clearly.
**Nuxt SEO Pro **
Ahrefs Lite
Price
**$119 one-time**
$99/month
Sites
**Unlimited**
1 per plan
Nuxt integration
**Native**
None
GSC data
**Direct from Google**
Estimated
MCP / IDE access
**Built-in**
None
AI content briefs
**Included**
Separate tool
Indexing diagnostics
**Yes**
Limited
Core Web Vitals
**Live CrUX**
No
h2. **Free SEO tools in your browser **
2 free requests/day, unlimited with a license.
[**Keyword Research **
Volume, difficulty, and search intent for any topic.nuxt seo tutorialkd: 24nuxt meta tagskd: 18nuxt sitemapkd: 35](https://nuxtseo.com/tools/keyword-research) [**SERP Analyzer **
See who ranks and what SERP features appear.●AI Overview●Featured Snippet○Local Pack](https://nuxtseo.com/tools/serp-analyzer) [**Domain Rankings **
Check what keywords any domain ranks for.nuxtseo.com247 kwTop 3: 18·Page 1: 42](https://nuxtseo.com/tools/domain-rankings)
[**All SEO tools **](https://nuxtseo.com/tools)
h2. **Trusted by Nuxt developers **
The free modules have 3M+ downloads. Here's what developers say.
_**Israel Ortuño**@IsraelOrtuno_
> I've been doing technical SEO for years, always liked it. With @nuxt_js SEO is way easier. It's a gem in the ecosystem. Amazing job by @harlan_zw.
_**Ju Nogueira**@nogueiraju_
> Nuxt SEO by @harlan_zw. Makes my life a lot easier.
_**Estéban**@soubiran__
> I have to say that your SEO modules are one of the things that make me stay on Nuxt for every one of my websites.
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**Israel Ortuño**@IsraelOrtuno_
> I've been doing technical SEO for years, always liked it. With @nuxt_js SEO is way easier. It's a gem in the ecosystem. Amazing job by @harlan_zw.
_**Ju Nogueira**@nogueiraju_
> Nuxt SEO by @harlan_zw. Makes my life a lot easier.
_**Estéban**@soubiran__
> I have to say that your SEO modules are one of the things that make me stay on Nuxt for every one of my websites.
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**marcustoy**marcustoy_
> Hey man, appreciate all your great work on those Nuxt modules. I'm using Nuxt SEO and it's awesome! 💪🏻
_**Sun**@__Sun___
> how freaking cool is this ?! OG Image preview of community templates, as well as the ones i made, right in the @nuxt_js dev tools 🤯 amazing work @harlan_zw
_**Sébastien Chopin**@Atinux_
> What an impressive work done by @harlan_zw on Nuxt OG Image v3 🙌
_**Fabian B.**@madebyfabian_
> Nuxt GraphQL middleware by @dulnan is really, really good. And Nuxt SEO by @harlan_zw is also something I use in almost every project. There are so many more though!
_**Thomas ✪**@eoThica_
> Just did schema markup for a whole webshop in 20 minutes cause of @harlan_zw. absolutely gorgeous. Check it out. nuxtseo.com
_**marcustoy**marcustoy_
> Hey man, appreciate all your great work on those Nuxt modules. I'm using Nuxt SEO and it's awesome! 💪🏻
_**Sun**@__Sun___
> how freaking cool is this ?! OG Image preview of community templates, as well as the ones i made, right in the @nuxt_js dev tools 🤯 amazing work @harlan_zw
_**Sébastien Chopin**@Atinux_
> What an impressive work done by @harlan_zw on Nuxt OG Image v3 🙌
_**Fabian B.**@madebyfabian_
> Nuxt GraphQL middleware by @dulnan is really, really good. And Nuxt SEO by @harlan_zw is also something I use in almost every project. There are so many more though!
h2. **One payment. Everything included. **
No subscriptions, no per-seat pricing, no per-domain limits. One license for all your sites.
h3. **Nuxt SEO Pro **
**$119**~~$249~~+ tax
- Dashboard, MCP server, and AI tools
- Unlimited sites and domains
- Lifetime updates, no recurring fees
- Private GitHub repo access
- 30-day refund, no questions asked
[**Get Nuxt SEO Pro **](https://buy.stripe.com/aFaaEXfcU6Os4gjfsJcs801)
h3. **Not sure yet? **
Sign in with GitHub to get notified before the price goes up.
[**Join Waitlist with GitHub **](https://nuxtseo.com/auth/github?source=pro-page)
**+**
Joined by hundreds of Nuxt developers

> "By purchasing Nuxt SEO Pro you're supporting all of the open-source work I do on Nuxt and within the Nuxt ecosystem. Thank you so much!"
**Harlan Wilton **
Nuxt Core Team
h2. **One license, every site **
Use it on all your domains. Try free in dev, purchase when you're ready for production.
[**Get Early Access · $119 **](https://buy.stripe.com/aFaaEXfcU6Os4gjfsJcs801) [**Read the docs **](https://nuxtseo.com/docs/nuxt-seo-pro/getting-started/introduction)
---