feat: add nuxt-content-tags - #1574
Conversation
📝 WalkthroughWalkthroughAdded a catalog entry for Estimated code review effort: 1 (Trivial) | ~3 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@modules/vitalizer.yml`:
- Line 17: Update the Nuxt version constraint in the modules/vitalizer.yml entry
from Nuxt 4-only compatibility back to >=3.0.0, preserving nuxt-vitalizer
support for Nuxt 3.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: d71a1f46-e386-4bcc-b188-2cb7de347af4
📒 Files selected for processing (4)
modules/nuxt-auto-form.ymlmodules/nuxt-content-tags.ymlmodules/nuxt-open-fetch.ymlmodules/vitalizer.yml
🚧 Files skipped from review as they are similar to previous changes (1)
- modules/nuxt-content-tags.yml
| avatar: https://avatars.githubusercontent.com/johannschopplich?v=4 | ||
| compatibility: | ||
| nuxt: '>=3.0.0' | ||
| nuxt: '>=4.0.0' |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n -C 6 'fetchModuleJson|compatibility\.nuxt|mergeCompatibilityRanges|mod\.compatibility\.nuxt' lib/modules.ts
rg -n -C 5 '^(npm|compatibility):|nuxt:|vitalizer' modules/vitalizer.yml
npm_name="$(sed -nE 's/^[[:space:]]*npm:[[:space:]]*["'\'']?([^"'\'']+)["'\'']?[[:space:]]*$/\1/p' modules/vitalizer.yml | head -n1)"
test -n "$npm_name"
curl -fsSL "https://registry.npmjs.org/${npm_name}/latest" \
| jq '{name, version, engines, peerDependencies, compatibility}'Repository: nuxt/modules
Length of output: 3197
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "## Git diff stat and relevant lines"
git diff --stat || true
git diff -- modules/vitalizer.yml | sed -n '1,120p' || true
sed -n '1,80p' modules/vitalizer.yml
echo "## Search vitalizer occurrences"
rg -n -C 3 'vitalizer|nuxt-vitalizer|Nuxt 3|Nuxt 4|'nuxt'|\*compatibility' .
echo "## Package metadata candidates"
npm_name="$(sed -nE 's/^[[:space:]]*npm:[[:space:]]*["'"'"']?([^"'"'"']+)["'"'"']?[[:space:]]*$/\1/p' modules/vitalizer.yml | head -n1)"
echo "npm_name=$npm_name"
printf '\n--- npm latest ---\n' || true
curl -fsSL "https://registry.npmjs.org/${npm_name}/latest" | jq '{name, version, description, engines, peerDependencies, compatibility}' || true
printf '\n--- npm compatibility metadata for recent versions ---\n' || true
node - <<'JS'
const fetch = (...args) => import('node:de').then((m)=>m.default.fetch(...args));
(async () => {
const metaUrl = `https://registry.npmjs.org/${"nuxt-vitalizer"}`;
const res = await fetch(metaUrl);
const body = await res.json();
console.log('versions:', Object.keys(body.versions || {}).slice(-20));
const versions = body.versions || {};
for (const [v, p] of Object.entries(versions).slice(-30)) {
if (p.compatibility || p.engines || p.peerDependencies || p.dependencies?.nuxt || p.devDependencies?.nuxt) {
console.log(`${v}: compat=${JSON.stringify(p.compatibility)}, engine=${JSON.stringify(p.engines)}, peer=${JSON.stringify(p.peerDependencies)}, deps=${JSON.stringify({'nuxt': p.dependencies?.nuxt, '`@nuxt/core`': p.dependencies?.['`@nuxt/core`']})}`);
}
}
})().catch(e => { console.error(e); process.exit(1); });
JS
echo "## Module metadata parsing for vitrifier"
sed -n '1,340p' lib/modules.ts
sed -n '1,260p' lib/utils.tsRepository: nuxt/modules
Length of output: 50369
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "## Repository files around modules"
git ls-files | rg '(^modules/|lib/modules|README|package')Repository: nuxt/modules
Length of output: 238
🌐 Web query:
johannschopplich nuxt-vitalizer README Nuxt 4 support compatibility Nuxt 3
💡 Result:
The nuxt-vitalizer module by Johann Schopplich is compatible with Nuxt 4, having been explicitly upgraded to support the version in August 2025 [1]. It remains fully compatible with Nuxt 3 as well [2][3]. However, users migrating from Nuxt 3 to Nuxt 4 have reported a regression regarding Flash of Unstyled Content (FOUC) [4]. This issue arises because Nuxt 4 handles CSS loading and render-blocking differently than Nuxt 3, which can cause styles to be applied later than expected [4]. In response to this, a new option, enforceRenderBlockingCSS, was introduced to the module to help prevent FOUC in Nuxt 4 environments [4]. If you are experiencing FOUC issues after upgrading to Nuxt 4, you may need to enable this configuration option [4].
Citations:
- 1: Upgrade to nuxt 4 johannschopplich/nuxt-vitalizer#9
- 2: https://github.com/johannschopplich/nuxt-vitalizer/blob/main/README.md
- 3: https://nuxt.com/modules/vitalizer
- 4: FOUC regression in Nuxt 4 compared to Nuxt 3 (styles loaded too late) johannschopplich/nuxt-vitalizer#11
Revert the Nuxt 4-only compatibility change.
nuxt-vitalizer still supports Nuxt 3 and does not drop Nuxt 3 compatibility. The modules/vitalizer.yml entry should remain compatible with Nuxt >=3.0.0, or this should be coordinated with an actual breaking upstream release and package metadata update.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@modules/vitalizer.yml` at line 17, Update the Nuxt version constraint in the
modules/vitalizer.yml entry from Nuxt 4-only compatibility back to >=3.0.0,
preserving nuxt-vitalizer support for Nuxt 3.
|
Correcting my own PR description: I wrote that The autofix commit also refreshed three unrelated entries (nuxt-auto-form, nuxt-open-fetch, vitalizer) from upstream drift. Happy to drop those from the branch if you would rather keep this PR to a single module. |
Adds nuxt-content-tags to the modules listing.
WordPress-like tagging for Nuxt Content: tag pages, related tags via co-occurrence, and article counts, all server-rendered. Ships headless components and a Nuxt UI variant, auto-detecting which to use, plus a
useTagscomposable for sites that render tags themselves.Generated with
pnpm sync nuxt-content-tags poliha/nuxt-content-tags, then adjusted:category:DevtoolstoCMS, matching@nuxt/contentand other content modulestype:3rd-partytocommunity(individually maintained, not a company integration)maintainers[0].name: GitHub login to display namelearn_more: filled in, and the emptyiconkey droppedTested against Nuxt 3 and Nuxt 4 in CI.