name: nuxt-content-skilld description: 'ALWAYS use when writing code importing "@nuxt/content". Consult for debugging, best practices, or modifying @nuxt/content, nuxt/content, nuxt content, content.' metadata: version: 3.14.0 generated_by: Google · Gemini 2.5 Flash generated_at: 2026-05-29
nuxt/content @nuxt/content@3.14.0
Tags: next: 3.0.0-alpha.8, alpha: 3.0.0-alpha.9, latest: 3.14.0
References: package.json • README • Docs • Issues • Discussions • Releases
Search
Use skilld search "query" -p @nuxt/content instead of grepping .skilld/ directories. Run skilld search --guide -p @nuxt/content for full syntax, filters, and operators.
API Changes
This section documents version-specific API changes — prioritize recent major/minor releases.
BREAKING:
queryContent()— replaced withqueryCollection(). Old API silently ignored. sourceBREAKING:
fetchContentNavigation()— replaced withqueryCollectionNavigation(). sourceNEW:
queryCollectionItemSurroundings()— new separate API for surroundings. sourceBREAKING: Document driven mode dropped — Markdown files no longer convert to Nuxt pages automatically. source
BREAKING:
useContent()composable — removed in v3. sourceBREAKING:
searchContent()— dropped in favor ofqueryCollectionSearchSectionsAPI. sourceBREAKING:
<ContentDoc>,<ContentList>,<ContentNavigation>,<ContentQuery>components — dropped in v3. Use<ContentRenderer>instead. sourceBREAKING:
<ContentSlot>and<MDCSlot>components — not supported in v3. Use native<slot>withmdc-unwrapattribute. sourceBREAKING: Components under
components/contentno longer auto-registered globally. Manual registration required. sourceBREAKING:
NavItemtype — replaced withContentNavigationItemtype. sourceRENAMED:
_dir.ymlfiles — renamed to.navigation.yml. sourceBREAKING:
sourceoption in module options removed — define multiple sources for collections incontent.config.tsinstead. sourceRENAMED:
._pathand other internal fields with_prefix — removed or renamed to.path. sourceBREAKING:
useContentHelpers()— removed in v3. sourceBREAKING: Module no longer ignores dot files by default —
ignore: ['**/.*']needed inexcludeoptions. sourceSILENT BREAKAGE: Sort order now alphabetical instead of numerical due to SQL limitations. source
BREAKING: Module options changed from v2. Refer to configuration page for details. source
Best Practices
If you are using multiple themes for syntax highlighting, it's recommended to always have a
defaulttheme specified. sourceFor AWS Amplify deployments with Node.js 22+, use native
node:sqliteas theexperimental.sqliteConnectorfor better compatibility. sourceTo overwrite a Prose component, create a component with the same name in your project
components/content/directory (e.g.,components/content/ProseA.vue). sourceA document should ideally be present in only one collection at a time to prevent live reload issues when referenced in multiple collections. source
Use the
excludeattribute withinsourceto explicitly exclude documents from other collections if they are referenced in multiple, to avoid live reload problems. sourceWhen using the visual editor, avoid complex HTML structures; prefer reusable Vue components with MDC syntax for a better editing experience. source
Create a
server/tsconfig.jsonfile to avoid type errors when usingqueryCollectionand related utilities in server-side contexts. sourceFor better organization and explicit content management, define content collections in a
content.config.tsfile, rather than relying on automatic parsing of all files. sourceDefine collection schemas using Zod or Valibot to enforce data consistency, provide type safety, and automatically drive Studio forms. source
Optimize query performance and reduce Cloudflare D1 costs by defining indexes on collection columns, especially those used in filtering, sorting, or lookups. source
When configuring remote git repository sources, never commit authentication tokens or credentials directly in your code; always use environment variables for security. source
When deploying to serverless platforms with in-memory SQLite, prerender as many routes as possible to minimize repeated runtime initialization and database recreation on cold starts. source
When integrating with
@nuxtjs/i18n, organize content files in language-specific folders (e.g.,content/en/,content/fr/) to match defined collections and ensure content parity across locales. sourceImplement a fallback strategy for i18n to gracefully handle missing content by displaying content from the default locale if it's not available in the current language. source