Skip to content

Conversation

@iiio2
Copy link
Contributor

@iiio2 iiio2 commented Oct 25, 2025

🔗 Linked issue

📚 Description

@iiio2 iiio2 requested a review from danielroe as a code owner October 25, 2025 09:15
@bolt-new-by-stackblitz
Copy link

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@coderabbitai
Copy link

coderabbitai bot commented Oct 25, 2025

Warning

Rate limit exceeded

@danielroe has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 25 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 74b5e03 and 30f7b60.

📒 Files selected for processing (7)
  • docs/1.getting-started/13.server.md (1 hunks)
  • docs/2.guide/2.concepts/3.rendering.md (3 hunks)
  • docs/3.api/3.utils/define-nuxt-plugin.md (1 hunks)
  • docs/3.api/5.kit/14.builder.md (4 hunks)
  • docs/3.api/6.nuxt-config.md (20 hunks)
  • docs/README.md (1 hunks)
  • packages/schema/src/types/schema.ts (24 hunks)

Walkthrough

This pull request updates numerous inline documentation links, comment URLs and prose across GitHub workflow files, the docs site and several package source comments/messages to point to revised targets (examples: app/plugins, app/app, datatracker.org, updated external domains). lychee.toml was changed to reduce max_redirects from 10 to 1 and its exclude list was expanded with additional URLs. No executable logic, exported/public signatures, control flow or error handling were modified.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Changes are numerous and heterogeneous (workflow comments, extensive docs edits, one lint/monitor config and small in-repo comment/message updates) but low-risk.
  • Review focus:
    • lychee.toml: verify reduce to max_redirects = 1 and new excludes are intentional.
    • Representative docs where anchors/paths changed (e.g., plugins → app/plugins, app → app/app) to ensure links resolve and anchors exist.
    • CI workflow comment URL updates to confirm the referenced GitHub Actions docs are correct.
    • User-facing message updates in code (e.g., warning strings) to ensure URL targets are accurate.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description Check ❓ Inconclusive The pull request description provided by the author consists entirely of template boilerplate text with no substantive content describing the changeset. The author has not filled in the "Description" section beyond placeholder instruction text, and no linked issue is referenced. Whilst this is not technically unrelated to the changeset (it simply lacks any actual description), the description provides no meaningful information about what changes are being made, why they are being made, or what problem they solve. This renders the description too vague to determine whether it meaningfully relates to the changeset's content. The author should provide a substantive description of the URL update effort, including which categories of URLs are being updated (e.g., documentation links, GitHub Actions workflows, external references), the rationale for the updates, and any automation or tooling involved (as alluded to in the discussion about lychee.toml configuration). This would transform the description from a template into a meaningful summary that communicates the purpose and scope of the changes to reviewers.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title "chore: update URLs" directly and accurately reflects the primary change throughout the changeset. The raw summary demonstrates that the PR systematically updates URLs across multiple documentation files, workflow configuration files, and source code comments—replacing outdated URLs with current ones, removing .html suffixes, updating internal documentation paths (such as app/plugins and app/app-config), and adjusting lychee.toml configuration for link checking. The title is concise, follows conventional commits format, and provides sufficient clarity for a teammate reviewing the history to understand this is a URL update effort.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@pkg-pr-new
Copy link

pkg-pr-new bot commented Oct 25, 2025

Open in StackBlitz

@nuxt/kit

npm i https://pkg.pr.new/@nuxt/kit@33567

nuxt

npm i https://pkg.pr.new/nuxt@33567

@nuxt/rspack-builder

npm i https://pkg.pr.new/@nuxt/rspack-builder@33567

@nuxt/schema

npm i https://pkg.pr.new/@nuxt/schema@33567

@nuxt/vite-builder

npm i https://pkg.pr.new/@nuxt/vite-builder@33567

@nuxt/webpack-builder

npm i https://pkg.pr.new/@nuxt/webpack-builder@33567

commit: 30f7b60

@codspeed-hq
Copy link

codspeed-hq bot commented Oct 25, 2025

CodSpeed Performance Report

Merging #33567 will not alter performance

Comparing iiio2:chore/update-urls (30f7b60) with main (606ef13)

Summary

✅ 10 untouched

@danielroe
Copy link
Member

Thank you! What tool did you use to find these redirects? Maybe we could update lychee's configuration so this is done in an automated way?

@iiio2
Copy link
Contributor Author

iiio2 commented Oct 26, 2025

@danielroe , I checked manually everything.

@danielroe
Copy link
Member

whoa.

how can we automate you? 🔥

@iiio2
Copy link
Contributor Author

iiio2 commented Oct 26, 2025

@danielroe , I've made some changes in lychee.toml. i removed 3xx status code so that it will not accept redirect. it shows redirect as problematic. and also max_redirect set to 0. how would it be ?

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
lychee.toml (1)

9-9: Consider documenting the rationale for stricter redirect handling.

This configuration change represents a deliberate shift in link-checking policy. It would be helpful to document why redirects are no longer followed or accepted (e.g., as a decision record or comment in this file).

For future maintainers, it's useful to understand whether this was changed to:

  • Catch broken links earlier (before they become redirects).
  • Ensure documentation targets stable, non-redirected URLs.
  • Simplify the link checker's output and CI logic.

Consider adding a comment above line 9 explaining the rationale, for example:

-# HTTP status code: 429 (Too Many Requests) will also be treated as a valid link if Lychee gets rate limited
-accept = [200, 201, 204, 206, 999]
+# HTTP status code: 429 (Too Many Requests) will also be treated as a valid link if Lychee gets rate limited
+# Note: 3xx redirect codes are no longer accepted; all URLs must resolve to final destinations to encourage updating docs
+# and catching stale links early. Redirect following is disabled (max_redirects = 0).
+accept = [200, 201, 204, 206, 999]

Also applies to: 20-20

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 32e15cd and b8ec860.

📒 Files selected for processing (1)
  • lychee.toml (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build
  • GitHub Check: code
🔇 Additional comments (1)
lychee.toml (1)

9-9: Verify CI impact of stricter redirect handling configuration.

The changes significantly tighten link validation: disabling redirect following (max_redirects = 0) and removing HTTP redirect status codes (3xx) from the accept list. This is a breaking change for the link checker.

With this configuration, any documentation URL that currently redirects (even to a valid destination) will now fail validation. This could cause CI to fail on previously-accepted links.

Please verify that:

  1. All documentation links have been audited and updated to remove redirect-only URLs (no links that rely on 3xx redirects to reach their final destination).
  2. This change will not break the CI pipeline when run against the full documentation.
  3. You want to enforce this stricter policy going forward rather than accepting 3xx responses.

You can verify by running lychee locally with this configuration against the documentation.

Also applies to: 20-20

Copy link
Member

@danielroe danielroe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great! thank you ❤️

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/1.getting-started/11.state-management.md (1)

203-203: Inconsistency: code header path missing app/ prefix.

Line 203 code header is marked as [composables/states.ts], but given the PR scope of updating paths to reflect the app/ directory structure, and consistent with the linked documentation on line 201 (/docs/4.x/guide/directory-structure/app/composables) and all other code examples in the file (lines 66, 91, 107, 126, 168, 207 all use app/ prefix), this should be updated to [app/composables/states.ts].

-```ts twoslash [composables/states.ts]
+```ts twoslash [app/composables/states.ts]
docs/2.guide/4.recipes/1.custom-routing.md (1)

16-16: Address inconsistent file path labelling across code fences.

Line 90 updates the code fence label to [app/router.options.ts] to include the full path, but lines 16 and 173 retain the old [router.options.ts] format without the app/ prefix. For consistency and clarity, all three file path labels should follow the same convention.

Apply this diff to ensure consistent naming:

-```ts [router.options.ts]
+```ts [app/router.options.ts]

Update line 16:

-```ts [router.options.ts]
+```ts [app/router.options.ts]

Update line 173:

-```ts [router.options.ts]
+```ts [app/router.options.ts]

Also applies to: 90-90, 173-173

🧹 Nitpick comments (3)
docs/5.community/4.contribution.md (1)

146-154: Update link reference and improve documentation clarity.

The shift from Node.js API documentation to the GitHub Corepack repository (line 146) is appropriate, and the added code example (lines 150–154) effectively illustrates how to configure packageManager in package.json. Both changes strengthen the documentation.

However, there is a minor grammatical issue: "version for package manager" should be "version of package manager".

Apply this diff to correct the grammar:

-[Corepack](https://github.com/nodejs/corepack) makes sure you are using the correct version for package manager when you run corresponding commands.
+[Corepack](https://github.com/nodejs/corepack) makes sure you are using the correct version of package manager when you run corresponding commands.
packages/vite/src/utils/warmup.ts (2)

8-8: Prefer a permalink (tag/commit) over branch + line anchors to avoid link rot

The link to Vite’s source on main with L62–L70 will drift. Either pin to a specific tag/commit matching our Vite version or drop the line anchors. Your call, but pick one for stability.


31-31: Update the TODO comment with current Vite version and rationale

The TODO is outdated—the repository is already on Vite 7.1.12. Update the comment to either:

  1. Keep custom logic with rationale: If the recursive dependency tracking, URL normalisation, and client/server distinction are necessary, update the TODO to document why (e.g., "Custom logic required for recursive module warmup and /@id/ URL normalisation not fully replicated in built-in server.warmup").

  2. Plan refactoring: If the custom logic can be replaced using Vite 7's server.warmup config or environment.warmupRequest(), update the TODO to note the planned refactoring instead of the obsolete version reference.

Current call site: packages/vite/src/vite.ts:310

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b8ec860 and 58fbabf.

📒 Files selected for processing (78)
  • docs/1.getting-started/02.installation.md (1 hunks)
  • docs/1.getting-started/03.configuration.md (2 hunks)
  • docs/1.getting-started/04.views.md (2 hunks)
  • docs/1.getting-started/05.assets.md (1 hunks)
  • docs/1.getting-started/06.styling.md (7 hunks)
  • docs/1.getting-started/09.transitions.md (3 hunks)
  • docs/1.getting-started/10.data-fetching.md (1 hunks)
  • docs/1.getting-started/11.state-management.md (1 hunks)
  • docs/1.getting-started/12.error-handling.md (1 hunks)
  • docs/1.getting-started/13.server.md (1 hunks)
  • docs/1.getting-started/14.layers.md (1 hunks)
  • docs/1.getting-started/17.testing.md (1 hunks)
  • docs/1.getting-started/18.upgrade.md (3 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.composables.md (1 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.layouts.md (2 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.middleware.md (1 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.pages.md (6 hunks)
  • docs/2.guide/1.directory-structure/1.node_modules.md (1 hunks)
  • docs/2.guide/1.directory-structure/1.public.md (1 hunks)
  • docs/2.guide/1.directory-structure/1.server.md (2 hunks)
  • docs/2.guide/1.directory-structure/2.env.md (1 hunks)
  • docs/2.guide/2.concepts/1.auto-imports.md (1 hunks)
  • docs/2.guide/2.concepts/10.nuxt-lifecycle.md (2 hunks)
  • docs/2.guide/2.concepts/3.rendering.md (2 hunks)
  • docs/2.guide/2.concepts/7.esm.md (2 hunks)
  • docs/2.guide/2.concepts/9.code-style.md (1 hunks)
  • docs/2.guide/3.going-further/1.experimental-features.md (2 hunks)
  • docs/2.guide/3.going-further/1.internals.md (2 hunks)
  • docs/2.guide/3.going-further/2.hooks.md (1 hunks)
  • docs/2.guide/3.going-further/3.modules.md (2 hunks)
  • docs/2.guide/3.going-further/6.nuxt-app.md (4 hunks)
  • docs/2.guide/3.going-further/7.layers.md (1 hunks)
  • docs/2.guide/3.going-further/9.debugging.md (1 hunks)
  • docs/2.guide/4.recipes/1.custom-routing.md (3 hunks)
  • docs/2.guide/4.recipes/3.custom-usefetch.md (1 hunks)
  • docs/3.api/1.components/10.nuxt-picture.md (1 hunks)
  • docs/3.api/1.components/12.nuxt-route-announcer.md (1 hunks)
  • docs/3.api/1.components/2.nuxt-page.md (1 hunks)
  • docs/3.api/1.components/4.nuxt-link.md (3 hunks)
  • docs/3.api/1.components/5.nuxt-loading-indicator.md (1 hunks)
  • docs/3.api/2.composables/use-app-config.md (1 hunks)
  • docs/3.api/2.composables/use-nuxt-app.md (3 hunks)
  • docs/3.api/2.composables/use-route.md (1 hunks)
  • docs/3.api/2.composables/use-router.md (3 hunks)
  • docs/3.api/3.utils/abort-navigation.md (2 hunks)
  • docs/3.api/3.utils/define-nuxt-plugin.md (1 hunks)
  • docs/3.api/3.utils/define-nuxt-route-middleware.md (1 hunks)
  • docs/3.api/3.utils/define-page-meta.md (3 hunks)
  • docs/3.api/3.utils/navigate-to.md (3 hunks)
  • docs/3.api/3.utils/on-before-route-leave.md (1 hunks)
  • docs/3.api/3.utils/on-before-route-update.md (1 hunks)
  • docs/3.api/3.utils/update-app-config.md (2 hunks)
  • docs/3.api/5.kit/1.modules.md (2 hunks)
  • docs/3.api/5.kit/14.builder.md (3 hunks)
  • docs/3.api/6.nuxt-config.md (16 hunks)
  • docs/5.community/4.contribution.md (1 hunks)
  • docs/5.community/5.framework-contribution.md (1 hunks)
  • docs/5.community/6.roadmap.md (1 hunks)
  • docs/6.bridge/4.plugins-and-middleware.md (1 hunks)
  • docs/7.migration/2.configuration.md (2 hunks)
  • docs/7.migration/20.module-authors.md (1 hunks)
  • docs/7.migration/5.plugins-and-middleware.md (1 hunks)
  • docs/7.migration/6.pages-and-layouts.md (1 hunks)
  • docs/README.md (1 hunks)
  • lychee.toml (3 hunks)
  • packages/nuxt/src/app/components/nuxt-link.ts (1 hunks)
  • packages/nuxt/src/app/composables/cookie.ts (1 hunks)
  • packages/nuxt/src/app/entry.ts (1 hunks)
  • packages/nuxt/src/core/app.ts (1 hunks)
  • packages/nuxt/src/pages/plugins/page-meta.ts (1 hunks)
  • packages/nuxt/src/pages/runtime/router.options.ts (1 hunks)
  • packages/schema/src/types/builder-env/vite.ts (1 hunks)
  • packages/schema/src/types/imports.ts (1 hunks)
  • packages/schema/src/types/schema.ts (18 hunks)
  • packages/vite/src/utils/warmup.ts (1 hunks)
  • packages/vite/src/vite.ts (1 hunks)
  • packages/webpack/src/configs/client.ts (2 hunks)
  • packages/webpack/src/presets/vue.ts (1 hunks)
✅ Files skipped from review due to trivial changes (18)
  • docs/7.migration/2.configuration.md
  • docs/2.guide/3.going-further/9.debugging.md
  • packages/nuxt/src/pages/runtime/router.options.ts
  • packages/schema/src/types/builder-env/vite.ts
  • packages/nuxt/src/pages/plugins/page-meta.ts
  • packages/nuxt/src/app/components/nuxt-link.ts
  • packages/vite/src/vite.ts
  • docs/1.getting-started/06.styling.md
  • docs/2.guide/2.concepts/1.auto-imports.md
  • packages/webpack/src/presets/vue.ts
  • packages/webpack/src/configs/client.ts
  • packages/nuxt/src/app/composables/cookie.ts
  • docs/3.api/2.composables/use-route.md
  • docs/7.migration/20.module-authors.md
  • packages/schema/src/types/schema.ts
  • packages/schema/src/types/imports.ts
  • docs/3.api/2.composables/use-app-config.md
  • docs/1.getting-started/12.error-handling.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Follow standard TypeScript conventions and best practices

Files:

  • packages/nuxt/src/core/app.ts
  • packages/nuxt/src/app/entry.ts
  • packages/vite/src/utils/warmup.ts
🧬 Code graph analysis (1)
packages/nuxt/src/core/app.ts (1)
packages/nuxt/src/utils.ts (1)
  • logger (14-14)
🪛 LanguageTool
docs/2.guide/1.directory-structure/1.app/1.layouts.md

[uncategorized] ~37-~37: Loose punctuation mark.
Context: ...e/directory-structure/app/app) instead. :: ::important Unlike other components, ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/5.kit/1.modules.md

[style] ~65-~65: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... version constraints and configuration. Can be an object or a function that receive...

(MISSING_IT_THERE)


[uncategorized] ~327-~327: Loose punctuation mark.
Context: ...come non-blocking) in a future version. :: Install specified Nuxt module program...

(UNLIKELY_OPENING_PUNCTUATION)

docs/5.community/4.contribution.md

[uncategorized] ~146-~146: The preposition ‘of’ seems more likely in this position.
Context: ... sure you are using the correct version for package manager when you run correspond...

(AI_HYDRA_LEO_REPLACE_FOR_OF)

docs/7.migration/6.pages-and-layouts.md

[uncategorized] ~17-~17: Loose punctuation mark.
Context: ....x/guide/directory-structure/app/app"} :link-example{to="/docs/4.x/examples/hell...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/3.utils/update-app-config.md

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ... (nested) properties will be preserved. :: ## Usage ```js import { updateAppCon...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/10.data-fetching.md

[uncategorized] ~774-~774: Loose punctuation mark.
Context: ...tps://vueuse.org/core/useeventsource/). :: When consuming SSE via POST request, ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/18.upgrade.md

[uncategorized] ~77-~77: Loose punctuation mark.
Context: ...experimental.viteEnvironmentApi: true`. :: Key changes: 1. **Deprecated env...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/1.components/4.nuxt-link.md

[uncategorized] ~249-~249: Loose punctuation mark.
Context: .../api/interfaces/routerlinkprops) - to: Any URL or a [route location object](ht...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~258-~258: Loose punctuation mark.
Context: ...n internal links ### NuxtLink - href: An alias for to. If used with to, `...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~261-~261: Loose punctuation mark.
Context: ... a Vue Router RouterLink. - prefetch: When enabled will prefetch middleware, ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/2.composables/use-router.md

[uncategorized] ~30-~30: Loose punctuation mark.
Context: ...mentation about the Router interface. :: ## Basic Manipulation - [`addRoute()...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~35-~35: Loose punctuation mark.
Context: ...ejs.org/api/interfaces/router#addRoute-): Add a new route to the router instance....

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~35-~35: Possible missing article found.
Context: ...ce. parentName can be provided to add new route as the child of an existing route...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~36-~36: Loose punctuation mark.
Context: ....org/api/interfaces/router#removeRoute-): Remove an existing route by its name. -...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~37-~37: Loose punctuation mark.
Context: ...js.org/api/interfaces/router#getRoutes-): Get a full list of all the route record...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~38-~38: Loose punctuation mark.
Context: ...ejs.org/api/interfaces/router#hasRoute-): Checks if a route with a given name exi...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~39-~39: Loose punctuation mark.
Context: ...uejs.org/api/interfaces/router#resolve-): Returns the normalized version of a rou...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~52-~52: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ds route details into an array of routes and it is useful while building [Nuxt plugi...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~52-~52: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...d, triggers a new navigation immediately and it is useful in pages, Vue components a...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~52-~52: Loose punctuation mark.
Context: ...n pages, Vue components and composable. :: ## Based on History API - [back()]...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~57-~57: Loose punctuation mark.
Context: ...r.vuejs.org/api/interfaces/router#back-): Go back in history if possible, same as...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~58-~58: Loose punctuation mark.
Context: ...uejs.org/api/interfaces/router#forward-): Go forward in history if possible, same...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~59-~59: Loose punctuation mark.
Context: ...ter.vuejs.org/api/interfaces/router#go-): Move forward or backward through the hi...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~60-~60: Loose punctuation mark.
Context: ...r.vuejs.org/api/interfaces/router#push-): Programmatically navigate to a new URL ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~61-~61: Loose punctuation mark.
Context: ...uejs.org/api/interfaces/router#replace-): Programmatically navigate to a new URL ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~87-~87: Loose punctuation mark.
Context: ...uejs.org/api/interfaces/router#isReady-): Returns a Promise that resolves when th...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~88-~88: Loose punctuation mark.
Context: ...uejs.org/api/interfaces/router#onError-): Adds an error handler that is called ev...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~89-~89: Loose punctuation mark.
Context: ...aught error happens during navigation. :read-more{icon="i-simple-icons-vuedotjs"...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/04.views.md

[uncategorized] ~94-~94: Loose punctuation mark.
Context: .../4.x/api/components/nuxt-page) instead. :: ::code-group ```vue [app/app.vue] <t...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/13.server.md

[uncategorized] ~56-~56: Loose punctuation mark.
Context: ...cel.com/fluid) Or for other runtimes: ::card-group :card{icon="i-logos-deno" ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/3.going-further/6.nuxt-app.md

[uncategorized] ~59-~59: Loose punctuation mark.
Context: ...object with a provide key in plugins. :: ::read-more{to="https://v2.nuxt.com/d...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~61-~61: Loose punctuation mark.
Context: ...ct with a provide key in plugins. :: ::read-more{to="https://v2.nuxt.com/docs/...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/5.kit/14.builder.md

[uncategorized] ~87-~87: Loose punctuation mark.
Context: ...re information about its configuration. :: ### Parameters callback: A cal...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~264-~264: Loose punctuation mark.
Context: ...to find a plugin that suits your needs. :: ### Parameters pluginOrGetter:...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/2.concepts/10.nuxt-lifecycle.md

[uncategorized] ~44-~44: Loose punctuation mark.
Context: ...uide/directory-structure/app/plugins). ::callout{icon="i-lucide-lightbulb"} Afte...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~46-~46: Loose punctuation mark.
Context: ...an be used to execute additional logic. :: :read-more{to="/docs/4.x/guide/direct...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~48-~48: Loose punctuation mark.
Context: ...e used to execute additional logic. :: :read-more{to="/docs/4.x/guide/directory-...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/1.directory-structure/1.app/1.middleware.md

[uncategorized] ~60-~60: Loose punctuation mark.
Context: ...s the current navigation with an error :read-more{to="/docs/4.x/api/utils/naviga...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~63-~63: Loose punctuation mark.
Context: .../docs/4.x/api/utils/abort-navigation"} ::important We recommend using the helper...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~65-~65: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...on-guards#Global-Before-Guards) may work but there may be breaking changes in future...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~65-~65: Loose punctuation mark.
Context: ...here may be breaking changes in future. :: ## Middleware Order Middleware runs ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/1.directory-structure/1.app/1.pages.md

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...es/custom-routing#using-routeroptions). :: ## Usage Pages are Vue components an...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~304-~304: Possible missing comma found.
Context: ...t can be either a string or an array of strings as defined [in the vue-router documenta...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/2.guide/3.going-further/3.modules.md

[style] ~879-~879: Consider using a shorter alternative to avoid wordiness.
Context: ...community are more than welcome to help make them better! Community modules are modules pre...

(MADE_IT_JJR)

docs/3.api/1.components/2.nuxt-page.md

[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...useRoute()may return incorrect paths. :: ` includes the following c...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/3.utils/define-nuxt-plugin.md

[misspelling] ~45-~45: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ... instance and can return a promise with an potential object with a [provide](/do...

(EN_A_VS_AN)

docs/3.api/3.utils/navigate-to.md

[uncategorized] ~20-~20: Loose punctuation mark.
Context: ...ectlocation-status-statustext) instead. :: ### Within a Vue Component ```vue <s...

(UNLIKELY_OPENING_PUNCTUATION)

docs/5.community/5.framework-contribution.md

[uncategorized] ~11-~11: Loose punctuation mark.
Context: ...ry. ## Monorepo Guide - packages/kit: Toolkit for authoring Nuxt Modules, pub...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...om/package/@nuxt/kit). - packages/nuxt: The core of Nuxt, published as [nuxt]...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~13-~13: Loose punctuation mark.
Context: ...s.com/package/nuxt). - packages/schema: Cross-version Nuxt typedefs and default...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~14-~14: Loose punctuation mark.
Context: ...ckage/@nuxt/schema). - packages/rspack: The Rspack bundler...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~15-~15: Loose punctuation mark.
Context: ...@nuxt/rspack-builder). - packages/vite: The Vite bundler fo...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~16-~16: Loose punctuation mark.
Context: ...nuxt/vite-builder). - packages/webpack: The webpack b...

(UNLIKELY_OPENING_PUNCTUATION)

docs/README.md

[uncategorized] ~7-~7: Possible missing comma found.
Context: ...epository contains the documentation of Nuxt hosted on <https://nuxt.com/docs/4.x/ge...

(AI_HYDRA_LEO_MISSING_COMMA)

🔇 Additional comments (85)
docs/3.api/3.utils/abort-navigation.md (1)

25-25: ✓ MDN locale links updated correctly.

Both MDN documentation links have been updated from Polish (pl) locale to English-US (en-US), which is appropriate for an English-language documentation repository. The changes align with the PR objective and maintain consistency across documentation link targeting.

Also applies to: 63-63

docs/2.guide/4.recipes/3.custom-usefetch.md (1)

15-15: URL update is correct and well-targeted.

The change from /docs/4.x/guide/directory-structure/plugins to /docs/4.x/guide/directory-structure/app/plugins correctly reflects the directory structure reorganisation. The updated link remains contextually appropriate within the example and aligns with the PR objective of updating plugin path references across the documentation.

docs/3.api/3.utils/on-before-route-leave.md (1)

11-11: URL update correctly targets Vue Router API documentation.

The link now points to the official Vue Router documentation for onBeforeRouteLeave(), using the modern lowercase slug format that aligns with Vue Router's current URL structure. The change is straightforward and improves documentation accuracy.

docs/3.api/1.components/5.nuxt-loading-indicator.md (2)

13-13: Link path update aligns with PR objectives.

The documentation link has been correctly updated to reflect the new directory structure, changing from /app to /app/app to match the relocated app-related references mentioned in the PR.


45-45: Verify composable documentation link consistency.

Line 45 references the useLoadingIndicator composable documentation at /docs/4.x/api/composables/use-loading-indicator. Given that this PR updates app-related paths to use the app/ subdirectory, please verify whether this composable link should similarly be updated to reflect any new directory structure changes (e.g., if composables have been moved to an app/composables subdirectory).

docs/1.getting-started/14.layers.md (1)

79-79: URL update to correct GitHub repository references.

The change appropriately updates the documentation links to point directly to the GitHub repositories for unjs/c12 and unjs/giget. This aligns with the PR objective to resolve redirect issues detected by lychee.

Please verify that both GitHub URLs resolve correctly and do not contain any additional redirects:

docs/1.getting-started/09.transitions.md (3)

27-27: Updated app.vue reference link to use new path structure.

The link target has been updated to /docs/4.x/guide/directory-structure/app/app, aligning with the PR's objective to update documentation paths. Please verify that this path exists and is accessible in the documentation structure.


128-128: Updated app.vue reference link consistently with line 27.

The link update here mirrors the change on line 27, maintaining consistency across the document. Both references now point to /docs/4.x/guide/directory-structure/app/app.


419-419: Verified View Transitions API reference links.

The change adds or updates external links to the View Transitions API documentation (Chrome docs and MDN). Ensure these URLs remain current and stable, particularly the MDN link which may be subject to maintenance or restructuring over time.

docs/1.getting-started/05.assets.md (3)

33-33: External links properly formatted and documentation clarity improved.

Line 33 updates the paragraph with clear markdown links to Vite, webpack, and their respective plugin/loader documentation. The explanation of how these build tools extend asset processing is accurate and well-structured.


37-37: Consistent convention documentation and example.

Lines 37 and 46 work together to clearly establish the ~/assets/ path convention for referencing processed assets. The documented pattern aligns with the example provided in the code block, improving developer guidance.

Also applies to: 46-46


52-54: Important clarification added about static asset serving.

The added note at line 53 correctly clarifies that files in app/assets/ are processed by the build tool and won't be automatically served at a static /assets/ URL. This prevents confusion and directs users to the correct directory (public/) when static URLs are required. This is an important distinction that improves the guide's completeness.

lychee.toml (3)

20-20: Clarify the redirect strictness change and discrepancy with PR objectives.

The max_redirects setting has been reduced from 10 to 1, significantly tightening redirect handling. However, the PR objectives mention setting max_redirect to 0 to reject all redirects. This change (1 vs. 0) warrants clarification: is limiting to 1 redirect intentional, or should this be 0 to fully align with the automated redirect detection strategy?

Additionally, please confirm whether this stricter policy will not break legitimate links elsewhere in the repository that may require following redirects.


42-43: Provide rationale for excluding nuxt.new URLs.

These two entries (https://nuxt.new/c/v4 and https://nuxt.new/s/v4) are being added to the exclude list. Please clarify whether these URLs are problematic redirects that should be fixed in the documentation instead, or whether they are intentionally temporary/transient URLs that warrant exclusion from link checking.


52-52: Verify test fixture URL is actually referenced in test suite.

The addition of http://example3.com/ to the exclude list is consistent with the existing dummy URLs (example1.com, example2.com). Please confirm this URL is actually referenced in the test suite to justify its exclusion.

docs/1.getting-started/11.state-management.md (1)

64-64: Link path updated correctly to reflect app/ directory structure.

The change from /docs/4.x/guide/directory-structure/app to /docs/4.x/guide/directory-structure/app/app aligns with the PR's objective to update documentation links to the revised path structure.

docs/5.community/5.framework-contribution.md (3)

11-16: Updated package and bundler URLs to official sources.

The Monorepo Guide URLs have been updated to point to official package registry and bundler documentation sites. All npm package links now follow a consistent pattern to npmjs.com, and bundler URLs (rspack.rs, vite.dev, webpack.js.org) reference the official domains. These changes align with the PR objective to update documentation references.


22-23: GitHub and Node.js documentation links updated to current official URLs.

The fork and clone references have been correctly updated from the deprecated help.github.com domain to docs.github.com, and the Node.js link now points to nodejs.org/en. These are appropriate updates and reflect current documentation locations.


11-16: Static analysis warnings are false positives.

The LanguageTool warnings flagging "UNLIKELY_OPENING_PUNCTUATION" on lines 11–16 are incorrect. In Markdown, backticks are used for inline code formatting and are correctly placed here. No action is required on these warnings.

docs/2.guide/1.directory-structure/1.node_modules.md (1)

8-8: Update is correct.

The URL https://bun.com/package-manager correctly points to Bun's package manager landing page, confirming that this change removes a redirect as intended by the PR's chore objectives.

docs/5.community/6.roadmap.md (1)

71-73: Consistent documentation path updates improve navigation clarity.

The URL updates follow a coherent pattern: active and maintenance versions (4.x, 3.x) now point to specific introduction pages within their respective documentation sections, whilst the legacy 2.x version correctly maintains an external link to v2.nuxt.com. This aligns well with the PR objective and improves user discoverability of versioned getting-started guides.

docs/1.getting-started/10.data-fetching.md (1)

774-774: URL update to VueUse composable link.

The URL path has been updated to lowercase useeventsource to align with the PR's objective of fixing redirects and URL inconsistencies. This change is part of the broader effort mentioned in the PR to address detected redirects after adjusting lychee's configuration.

Please verify that the VueUse documentation URL https://vueuse.org/core/useeventsource/ is the canonical, non-redirect path and resolves correctly.

docs/1.getting-started/17.testing.md (1)

268-268: URL change is correct.

The updated URL with the trailing slash resolves correctly to the Vue Testing Library Introduction page. The change aligns with this PR's URL standardisation effort.

docs/3.api/5.kit/14.builder.md (2)

86-87: ✓ Approved — Vite link and text are consistent and correct.

The URL now points to the canonical Vite configuration docs with a trailing slash, and the text has been correctly updated to "Check out the Vite website…" using proper English grammar and the definite article.


264-264: ✓ Approved — Webpack plugins link and text are correct.

The URL now points to the correct webpack plugins documentation page with a trailing slash. The surrounding text is grammatically sound.

docs/2.guide/4.recipes/1.custom-routing.md (1)

20-20: URLs updated correctly—no changes required.

The Vue Router documentation URLs in lines 20 and 178 are valid. The canonical URL is https://router.vuejs.org/api/interfaces/routeroptions, confirming that removing the .html suffix is the correct approach.

docs/3.api/3.utils/navigate-to.md (3)

151-151: Updated Vue Router API reference link.

The link to RouteLocationRaw type documentation has been updated to point to the Vue Router API. This appears appropriate for type reference documentation.


189-191: Updated HTTP status code reference links.

Links to MDN documentation for HTTP status codes 302 Found and 301 Moved Permanently have been updated. These are authoritative references for HTTP specifications and are appropriately contextualised within the redirectCode parameter documentation.


20-20: Verify h3 version compatibility for sendRedirect recommendation.

The h3.dev link is valid and documents sendRedirect correctly. However, web search results reveal that h3 v2 renamed sendRedirect to redirect. The documentation should clarify which h3/Nitro version is targeted:

  • If the project uses h3 v1, the current recommendation is correct.
  • If the project uses h3 v2 (likely for modern Nitro), use redirect instead.

Search the codebase for the h3 or Nitro version specification to confirm which API is appropriate.

docs/1.getting-started/18.upgrade.md (3)

57-57: Verify internal documentation link format consistency.

Both lines 57 and 77 update internal links to use the full /docs/4.x/getting-started/upgrade#… path format. Confirm that this path structure is valid for the documentation system and that anchor links resolve correctly. If these are moving from relative to absolute paths, ensure the routing layer handles both formats during any transition period.

Also applies to: 77-77


77-77: Minor: Confirm punctuation placement around code segment.

Static analysis flagged loose punctuation at this line, specifically around the backtick before the :: block. Verify that the markdown renders correctly and that the inline code segment closes properly before the note directive.


217-217: No issues identified — URL is canonical.

The official Codemod Registry is hosted at https://app.codemod.com/registry, with the default registry URL being https://app.codemod.com/ and the registry UI served under /registry. The updated URL in the documentation is the canonical endpoint and not a redirect.

docs/3.api/5.kit/1.modules.md (1)

327-327: Cross-reference link is appropriate.

The deprecation notice now points users towards the recommended moduleDependencies approach with a clear internal link. The static analysis warning about punctuation is a false positive—the :: syntax is a legitimate Nuxt documentation callout marker.

docs/1.getting-started/02.installation.md (2)

38-38: Documentation link verified and correct.

The VS Code terminal documentation at https://code.visualstudio.com/docs/terminal/basics is valid and accessible. The code change is approved.


33-33: WSL documentation link verified—no action required.

The updated WSL installation documentation is available at the new URL and was last updated 6 August 2025. The link update from docs.microsoft.com to learn.microsoft.com aligns with Microsoft's documentation structure and is functional.

docs/1.getting-started/13.server.md (2)

52-53: All external provider links verified as active and accessible.

The URL updates in docs/1.getting-started/13.server.md have been confirmed:

  • Netlify Functions link → HTTP 200
  • Vercel Fluid link → HTTP 200
  • Deno link → HTTP 200
  • Bun link → HTTP 200

No broken links or redirects detected. The documentation changes are ready.


58-59: Review comment is based on an incorrect assumption about domain consolidation.

According to official sources, Deno maintains deno.com as well as deno.land for package/installation/registry and deno.dev for Deno Deploy, whilst Bun maintains bun.com for main documentation alongside bun.sh for the installer. These are not consolidations—both old and new domains remain official and serve complementary purposes. The changes to use .com domains are fine, but the verification premise that this represents official domain consolidation is inaccurate.

Likely an incorrect or invalid review comment.

docs/3.api/1.components/2.nuxt-page.md (1)

14-14: URL update is correct — no further changes required.

The simplified slug-based URL format aligns with the current Vue Router v4 documentation structure. The new target (https://router.vuejs.org/api/interfaces/routerviewprops) is the canonical documentation URL and resolves correctly.

docs/7.migration/6.pages-and-layouts.md (1)

16-16: Documentation paths are correct and resolve to existing files.

The changes correctly reference the app.vue documentation. The repository structure confirms that /docs/4.x/guide/directory-structure/app/app maps to the actual documentation file at docs/2.guide/1.directory-structure/1.app/3.app.md. The updated references on lines 16 and 22 are consistent with other path references in the same file (pages, layouts, components, plugins) and align with the actual documentation structure.

docs/2.guide/1.directory-structure/2.env.md (1)

78-78: LGTM!

The path update to include the app/ prefix aligns with the Nuxt 4.x directory structure documentation reorganisation. This ensures the link correctly points to the app configuration documentation.

docs/2.guide/1.directory-structure/1.public.md (1)

25-25: LGTM!

Adding the trailing slash normalises the URL and likely eliminates an unnecessary redirect, improving link performance.

docs/2.guide/3.going-further/3.modules.md (2)

227-227: LGTM!

The path correctly references the plugins directory under the app/ structure, aligning with Nuxt 4.x directory organisation.


879-879: LGTM!

The domain update from content.nuxtjs.org to content.nuxt.com reflects the brand consolidation and ensures the link points to the current Nuxt Content documentation.

docs/2.guide/2.concepts/3.rendering.md (1)

47-47: LGTM!

The systematic update of directory structure references to use the app/ prefix correctly reflects the Nuxt 4.x organisation for middleware, pages, plugins, components, composables, and utilities.

packages/nuxt/src/app/entry.ts (1)

47-47: LGTM!

Simplifying the GitHub issue reference by removing the comment anchor improves link maintainability whilst still providing relevant context for the webpack HMR workaround.

docs/2.guide/3.going-further/2.hooks.md (1)

42-42: LGTM!

The link correctly references the plugins directory under the app/ structure, maintaining consistency with the Nuxt 4.x documentation organisation.

docs/3.api/3.utils/define-nuxt-route-middleware.md (1)

31-31: Vue Router documentation URL verified and valid.

The updated URL returns HTTP 200, confirming it correctly points to the Vue Router API documentation for RouteLocationNormalized. The change to lowercase and removal of the .html extension aligns with Vue Router's current documentation structure. No further action required.

docs/3.api/1.components/10.nuxt-picture.md (1)

15-15: MDN URL update verified as correct.

The new URL structure (/Reference/Elements/picture) is valid and returns HTTP 200. The previous URL structure (/Element/picture) correctly responds with HTTP 301, confirming MDN has restructured their documentation hierarchy. The change in the documentation file is appropriate and properly maintains the reference to the picture element documentation.

docs/3.api/3.utils/on-before-route-update.md (1)

11-11: LGTM: Vue Router URL normalisation

The update to the lowercase slug format aligns with Vue Router's API documentation URL structure.

docs/2.guide/3.going-further/1.internals.md (1)

33-33: LGTM: Consistent plugin path updates

The documentation links have been correctly updated to reflect the app/plugins directory structure, maintaining consistency across the codebase.

Also applies to: 79-79

docs/3.api/1.components/12.nuxt-route-announcer.md (1)

19-19: LGTM: App path normalisation

The link has been correctly updated to reference app/app in the directory structure documentation.

packages/nuxt/src/core/app.ts (1)

263-263: LGTM: Warning message URL updated

The documentation URL in the warning message has been correctly updated to match the new app/plugins path, ensuring developers are directed to the correct documentation when plugin metadata parsing fails.

docs/3.api/3.utils/update-app-config.md (1)

12-12: LGTM: App config path updates

The documentation references have been consistently updated to app/app-config, maintaining alignment with the updated directory structure documentation.

Also applies to: 28-28

docs/2.guide/3.going-further/1.experimental-features.md (2)

8-8: LGTM: Internal documentation link update

The internal link has been correctly updated to point to the experimental features guide section.


293-293: URL verified as correct

The correct MDN documentation URL for the View Transition API is https://developer.mozilla.org/docs/Web/API/View_Transition_API, which uses the singular form View_Transition_API (without 's'). The code change is accurate.

docs/1.getting-started/04.views.md (1)

60-60: LGTM: Consistent app directory references

The documentation has been correctly updated to reference app/app in the directory structure, maintaining consistency with the updated documentation paths throughout the codebase.

Also applies to: 94-94

docs/2.guide/2.concepts/7.esm.md (1)

34-34: External documentation URLs verified as accessible

Both external links resolve correctly:

  • Webpack ECMA Script modules guide (with trailing slash): HTTP 200 ✓
  • TypeScript esModuleInterop configuration documentation: HTTP 200 ✓

No redirect issues or broken links detected.

docs/3.api/3.utils/define-page-meta.md (3)

65-65: Link target correctly points to relevant section.

The updated anchor /docs/4.x/api/utils/define-page-meta#using-a-custom-regular-expression appropriately targets the section about custom regular expressions within the same documentation page.


105-105: External Vue Router link updated to correct documentation.

The NavigationGuard reference now links to the official Vue Router documentation at https://router.vuejs.org/api/interfaces/navigationguard, which is the authoritative source for this type.


125-125: External Vue Router link updated to correct documentation.

The RouteRecordRedirectOption reference now links to the Vue Router guide section at https://router.vuejs.org/guide/essentials/redirect-and-alias, which correctly documents redirect and alias functionality.

docs/3.api/6.nuxt-config.md (4)

342-342: Links to bundle analyser documentation correctly point to respective tools.

The updated references separate webpack-bundle-analyzer options from Vite/rollup-plugin-visualizer options, improving clarity for users. Links are correctly formatted to the official repositories.


1149-1149: Plugin documentation path correctly updated to app/plugins directory.

The link has been updated from /docs/4.x/guide/directory-structure/app/plugins (note: the before/after is not shown, but the current state correctly references the canonical app/plugins location), providing users with the correct path for plugin documentation.


1220-1220: Vue Router documentation link uses correct canonical URL format.

The RouterOptions link now references https://router.vuejs.org/api/interfaces/routeroptions without unnecessary trailing segments, pointing directly to the relevant API documentation.


1589-1589: Vite configuration documentation link updated to current domain.

The link has been updated to point to https://vite.dev/config/, which is the current official Vite documentation URL (previously may have been at an older domain).

docs/3.api/1.components/4.nuxt-link.md (4)

247-254: RouterLink prop documentation references correctly updated to Vue Router API.

The links now correctly reference Vue Router's official API documentation endpoints (https://router.vuejs.org/api/interfaces/routerlinkprops, https://router.vuejs.org/api/type-aliases/routelocation, etc.), ensuring users access authoritative prop documentation.


261-261: Prefetch/experimental features link correctly updated.

The link to payloadExtraction now correctly points to /docs/4.x/guide/going-further/experimental-features#payloadextraction, guiding users to the proper experimental features documentation section.


279-279: Defaults configuration link correctly updated to experimental features.

The link now points to /docs/4.x/guide/going-further/experimental-features#defaults, which is the correct section for documentation on overwriting NuxtLink defaults.


339-340: Vue Router router options links correctly reference canonical API documentation.

The links to linkActiveClass and linkExactActiveClass now point to the correct Vue Router API endpoints (https://router.vuejs.org/api/interfaces/routeroptions#linkActiveClass-, etc.), providing accurate external references.

docs/7.migration/5.plugins-and-middleware.md (1)

34-34: Plugin migration documentation path correctly updated to app/plugins.

The read-more link now correctly points to /docs/4.x/guide/directory-structure/app/plugins, providing accurate migration guidance for Nuxt 2 to Nuxt 3+ plugin transition, consistent with current Nuxt 4 directory structure.

docs/2.guide/1.directory-structure/1.app/1.layouts.md (2)

14-14: App.vue documentation reference correctly updated.

The link now correctly references /docs/4.x/guide/directory-structure/app/app, pointing to the proper documentation for the app.vue file location within the app directory structure.


37-37: App.vue documentation reference correctly updated in important note.

The link now correctly references /docs/4.x/guide/directory-structure/app/app, maintaining consistency with the file's directory-structure documentation conventions.

docs/3.api/3.utils/define-nuxt-plugin.md (1)

19-19: Plugin creation documentation read-more link correctly updated.

The link now points to /docs/4.x/guide/directory-structure/app/plugins#creating-plugins, providing users with relevant guidance on creating plugins in the correct documentation location.

docs/2.guide/1.directory-structure/1.app/1.composables.md (1)

74-74: Plugin injection documentation link correctly updated.

The link now correctly references /docs/4.x/guide/directory-structure/app/plugins#providing-helpers, providing composable users with accurate guidance on accessing plugin injections from the proper documentation location.

docs/6.bridge/4.plugins-and-middleware.md (1)

10-10: Bridge migration documentation plugin path correctly updated.

The link now correctly references /docs/4.x/guide/directory-structure/app/plugins, ensuring Bridge users are directed to current Nuxt 3+ plugin documentation from the migration guide.

docs/2.guide/3.going-further/7.layers.md (1)

23-23: Path standardisation is correct and consistent.

The updates to reference app/plugins and app/app-config properly align documentation links with the current directory structure. These changes are consistent with the broader PR objective.

Also applies to: 25-25

docs/2.guide/1.directory-structure/1.server.md (1)

161-161: Minor link format improvements are appropriate.

The MDN reference path updates and trailing slash corrections to anchor links are formatting improvements that ensure consistency across documentation links. These changes pose no risk to documentation quality or usability.

Also applies to: 229-229, 262-262

docs/2.guide/1.directory-structure/1.app/1.middleware.md (1)

51-51: URL structure updates appear consistent but require verification.

The changes update Vue Router documentation links (removing .html suffixes) and standardise MDN paths to use the Reference/Status/* pattern. These align with modern URL routing practices, but we should verify that the Vue Router URLs remain valid.

Can you confirm that Vue Router documentation URLs without the .html suffix (e.g., https://router.vuejs.org/guide/advanced/navigation-guards#Global-Before-Guards) are currently valid and do not result in 404 errors?

Also applies to: 56-56, 57-57, 65-65

docs/2.guide/3.going-further/6.nuxt-app.md (1)

12-12: Path standardisation and version reference updates are appropriate.

The file consistently updates plugin documentation links to reference app/plugins whilst maintaining Nuxt 2 historical references with proper version-scoped domains. Anchor fragments are preserved correctly.

Also applies to: 26-26, 45-45, 58-58, 62-62

docs/2.guide/2.concepts/10.nuxt-lifecycle.md (1)

43-43: Plugin documentation path updates are consistently applied.

All references to plugin documentation have been updated to the standardised app/plugins path. The changes are applied uniformly across both server and client lifecycle sections.

Also applies to: 49-49, 123-123

docs/3.api/2.composables/use-router.md (1)

29-29: Vue Router anchor patterns require verification.

Multiple Vue Router documentation links have been updated to use trailing dash anchors (e.g., #addRoute-, #removeRoute-). This pattern is inconsistent with typical URL fragment naming conventions. The app/plugins path update on Line 52 is correct.

Please verify that the trailing dash anchor pattern for Vue Router links is valid. For example:

  • https://router.vuejs.org/api/interfaces/router#addRoute-
  • https://router.vuejs.org/api/interfaces/router#Properties-currentRoute-

These should be tested to ensure they resolve correctly and do not result in broken anchor links.

Also applies to: 35-35, 36-36, 37-37, 38-38, 39-39, 57-57, 58-58, 59-59, 60-60, 61-61, 87-87, 88-88, 90-90

docs/2.guide/1.directory-structure/1.app/1.pages.md (2)

9-9: App directory path updates are consistent.

References to the main application file have been properly updated from generic app paths to the standardised app/app path, maintaining clarity about the specific file being referenced.

Also applies to: 49-49


157-157: Vue Router documentation link patterns match file use-router.md.

Vue Router links throughout this file follow the same anchor pattern as the previous file. These should be verified along with the use-router.md file to ensure consistency and validity.

Also applies to: 271-271, 304-304, 330-330, 338-338, 342-342

docs/3.api/2.composables/use-nuxt-app.md (1)

33-33: Plugin path standardisation is complete and consistent.

All references to Nuxt plugin documentation have been updated to use the app/plugins path with appropriate anchor fragments preserved (#vue-directives, #vue-plugins). The changes align perfectly with the PR's standardisation objective.

Also applies to: 49-49, 87-87, 88-88

docs/1.getting-started/03.configuration.md (2)

127-127: Verify internal documentation path targets correct location.

The read-more link path has been updated to /docs/4.x/guide/directory-structure/app/app-config. Please confirm this path aligns with the actual documentation structure and that the target page exists, particularly given the PR's focus on updating URLs to reflect path restructuring.


163-165: Verify external URLs resolve correctly with trailing slashes.

The external configuration URLs for Prettier, Stylelint, and TailwindCSS have been updated to include trailing slashes. Whilst this may align with lychee's stricter redirect detection (as mentioned in PR comments), please verify these URLs resolve to valid destinations.

Note: Other entries in the table (lines 161–162) do not have trailing slashes. Confirm whether this formatting is intentional or whether consistency should be applied across all external URLs.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/2.guide/2.concepts/1.auto-imports.md (1)

70-70: Inconsistent grammar: "Checkout" should be "Check out".

Line 70 uses "Checkout the asyncContext experimental feature" but should use the phrasal verb form "Check out the asyncContext experimental feature" for correct English and consistency with similar documentation elsewhere.

- Checkout the `asyncContext` experimental feature to use Nuxt composables in async functions.
+ Check out the `asyncContext` experimental feature to use Nuxt composables in async functions.
♻️ Duplicate comments (1)
docs/3.api/5.kit/14.builder.md (1)

135-137: Unresolved grammar issue: "Checkout" should be "Check out".

Line 136 still uses the noun form "Checkout" instead of the phrasal verb "Check out." This inconsistency was flagged in a previous review. For consistency with the corrected Vite block at line 87 and correct English usage, update to:

- Checkout webpack website for more information about its configuration.
+ Check out the webpack website for more information about its configuration.
🧹 Nitpick comments (1)
docs/3.api/6.advanced/1.hooks.md (1)

27-28: Minor grammar improvement: consider replacing "inside of" with "inside".

Lines 27–28 use the phrase "inside of NuxtPage", which is grammatically acceptable but slightly verbose. Prefer the more concise "inside NuxtPage" (without "of") for consistency with common technical writing style.

This is entirely optional and the current wording is not incorrect.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between be518a8 and 74b5e03.

📒 Files selected for processing (29)
  • docs/1.getting-started/05.assets.md (1 hunks)
  • docs/1.getting-started/06.styling.md (10 hunks)
  • docs/1.getting-started/09.transitions.md (6 hunks)
  • docs/1.getting-started/10.data-fetching.md (2 hunks)
  • docs/1.getting-started/11.state-management.md (2 hunks)
  • docs/1.getting-started/12.error-handling.md (2 hunks)
  • docs/1.getting-started/17.testing.md (2 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.components.md (4 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.pages.md (7 hunks)
  • docs/2.guide/1.directory-structure/1.app/1.plugins.md (1 hunks)
  • docs/2.guide/2.concepts/1.auto-imports.md (2 hunks)
  • docs/2.guide/2.concepts/2.vuejs-development.md (3 hunks)
  • docs/2.guide/2.concepts/3.rendering.md (3 hunks)
  • docs/2.guide/3.going-further/1.features.md (1 hunks)
  • docs/2.guide/3.going-further/6.nuxt-app.md (4 hunks)
  • docs/2.guide/5.best-practices/hydration.md (1 hunks)
  • docs/3.api/1.components/11.teleports.md (1 hunks)
  • docs/3.api/1.components/6.nuxt-error-boundary.md (1 hunks)
  • docs/3.api/2.composables/use-fetch.md (1 hunks)
  • docs/3.api/2.composables/use-nuxt-app.md (3 hunks)
  • docs/3.api/2.composables/use-state.md (1 hunks)
  • docs/3.api/3.utils/define-lazy-hydration-component.md (4 hunks)
  • docs/3.api/3.utils/define-nuxt-component.md (1 hunks)
  • docs/3.api/3.utils/define-page-meta.md (5 hunks)
  • docs/3.api/5.kit/14.builder.md (4 hunks)
  • docs/3.api/6.advanced/1.hooks.md (1 hunks)
  • docs/3.api/6.nuxt-config.md (20 hunks)
  • lychee.toml (3 hunks)
  • packages/schema/src/types/schema.ts (24 hunks)
✅ Files skipped from review due to trivial changes (2)
  • docs/2.guide/2.concepts/2.vuejs-development.md
  • docs/2.guide/3.going-further/1.features.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • docs/1.getting-started/11.state-management.md
  • docs/1.getting-started/06.styling.md
  • packages/schema/src/types/schema.ts
  • docs/1.getting-started/05.assets.md
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-11-05T20:04:39.622Z
Learnt from: Tofandel
PR: nuxt/nuxt#26468
File: packages/nuxt/src/components/runtime/client-delayed-component.ts:62-62
Timestamp: 2024-11-05T20:04:39.622Z
Learning: In Vue components, when typing the `hydrate` prop for hydration strategies like `hydrateOnInteraction`, use `type: null as PropType<Arguments<typeof hydrateOnInteraction>[0]>` to get the type directly from Vue's hydration methods. Also, remember that `HTMLElementEventMap` is not a type but an object; use `keyof HTMLElementEventMap` when defining prop types for events.

Applied to files:

  • docs/2.guide/1.directory-structure/1.app/1.components.md
  • docs/3.api/3.utils/define-lazy-hydration-component.md
📚 Learning: 2025-07-18T16:46:07.446Z
Learnt from: CR
PR: nuxt/nuxt#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-18T16:46:07.446Z
Learning: Applies to **/*.vue : Use `<script setup lang="ts">` and the composition API when creating Vue components

Applied to files:

  • docs/2.guide/2.concepts/1.auto-imports.md
🪛 LanguageTool
docs/2.guide/1.directory-structure/1.app/1.components.md

[uncategorized] ~166-~166: Loose punctuation mark.
Context: ...e/components/async#hydrate-on-visible). :: #### hydrate-on-idle Hydrates the ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~184-~184: Loose punctuation mark.
Context: ...uide/components/async#hydrate-on-idle). :: #### hydrate-on-interaction Hydrat...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~202-~202: Loose punctuation mark.
Context: ...mponents/async#hydrate-on-interaction). :: #### hydrate-on-media-query Hydrat...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~218-~218: Loose punctuation mark.
Context: ...mponents/async#hydrate-on-media-query). :: #### hydrate-after Hydrates the co...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/3.utils/define-page-meta.md

[uncategorized] ~101-~101: Possible missing article found.
Context: ...uilt-in-components#transition) Set name of the transition to apply for current ...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~218-~218: Possible missing comma found.
Context: ...-:postSlug', }) </script> ``` For more examples see [Vue Router's Matching Syntax](http...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/2.guide/1.directory-structure/1.app/1.plugins.md

[uncategorized] ~208-~208: Loose punctuation mark.
Context: ...s#caveat-when-unwrapping-in-templates). :: ## Typing Plugins If you return your...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/3.utils/define-nuxt-component.md

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...syncDataandheadcomponent options. :: ::note Using<script setup lang="ts"...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/5.kit/14.builder.md

[uncategorized] ~87-~87: Loose punctuation mark.
Context: ...re information about its configuration. :: ### Parameters callback: A cal...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~205-~205: Loose punctuation mark.
Context: ...to find a plugin that suits your needs. :: ### Parameters pluginOrGetter:...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~264-~264: Loose punctuation mark.
Context: ...to find a plugin that suits your needs. :: ### Parameters pluginOrGetter:...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/6.advanced/1.hooks.md

[style] ~27-~27: This phrase is redundant. Consider using “inside”.
Context: ....org/guide/built-ins/suspense#suspense) inside of NuxtPage pending event. page:finish...

(OUTSIDE_OF)


[style] ~28-~28: This phrase is redundant. Consider using “inside”.
Context: ....org/guide/built-ins/suspense#suspense) inside of NuxtPage resolved event. `page:loadin...

(OUTSIDE_OF)

docs/3.api/1.components/6.nuxt-error-boundary.md

[uncategorized] ~12-~12: Loose punctuation mark.
Context: ...e#onerrorcaptured) hook under the hood. :: ## Events - @error: Event emitted ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/09.transitions.md

[uncategorized] ~8-~8: Loose punctuation mark.
Context: ... transitions between pages and layouts. :: ## Page Transitions You can enable p...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~313-~313: Loose punctuation mark.
Context: ...vailable in the Transition component. :: ## Dynamic Transitions To apply dyna...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~419-~419: Possible missing comma found.
Context: ...ing new way to implement native browser transitions which (among other things) have the abi...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/1.getting-started/10.data-fetching.md

[uncategorized] ~774-~774: Loose punctuation mark.
Context: ...tps://vueuse.org/core/useeventsource/). :: When consuming SSE via POST request, ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/12.error-handling.md

[uncategorized] ~40-~40: Loose punctuation mark.
Context: ...ecycle#onerrorcaptured) lifecycle hook. :: ## Startup Errors Nuxt will call the...

(UNLIKELY_OPENING_PUNCTUATION)

docs/1.getting-started/17.testing.md

[uncategorized] ~333-~333: Loose punctuation mark.
Context: ...cs](https://vitest.dev/api/vi#vi-mock). :: If you need to mock a Nuxt import and...

(UNLIKELY_OPENING_PUNCTUATION)


[grammar] ~336-~336: The verb ‘mocks’ is singular. Did you mean: “this mocks” or “those mock”?
Context: ...st.dev/api/vi#vi-hoisted), and then use those mocks in mockNuxtImport. You then have acce...

(SINGULAR_VERB_AFTER_THESE_OR_THOSE)

docs/2.guide/1.directory-structure/1.app/1.pages.md

[uncategorized] ~9-~9: Loose punctuation mark.
Context: ...es/custom-routing#using-routeroptions). :: ## Usage Pages are Vue components an...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~304-~304: Possible missing comma found.
Context: ...t can be either a string or an array of strings as defined [in the vue-router documenta...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~310-~310: Possible missing comma found.
Context: ...ur goal is to preserve state for parent routes use this syntax: `<NuxtPage keepalive /...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~325-~325: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...uide/built-ins/transition#transition). You can set default values for these proper...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~329-~329: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...#layouttransition). #### middleware You can define middleware to apply before l...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

docs/2.guide/2.concepts/1.auto-imports.md

[uncategorized] ~112-~112: Loose punctuation mark.
Context: ...s#caveat-when-unwrapping-in-templates). :: ### Explicit Imports Nuxt exposes ev...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/2.concepts/3.rendering.md

[uncategorized] ~60-~60: Loose punctuation mark.
Context: ...ide/scaling-up/ssr#hydration-mismatch). :: ::important When importing a library ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/3.going-further/6.nuxt-app.md

[uncategorized] ~59-~59: Loose punctuation mark.
Context: ...object with a provide key in plugins. :: ::read-more{to="https://v2.nuxt.com/d...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~61-~61: Loose punctuation mark.
Context: ...ct with a provide key in plugins. :: ::read-more{to="https://v2.nuxt.com/docs/...

(UNLIKELY_OPENING_PUNCTUATION)

docs/2.guide/5.best-practices/hydration.md

[uncategorized] ~187-~187: Loose punctuation mark.
Context: ...or a better understanding of hydration. ::

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/1.components/11.teleports.md

[uncategorized] ~7-~7: Loose punctuation mark.
Context: ...targets using a <ClientOnly> wrapper. :: ## Body Teleport ```vue ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/2.composables/use-fetch.md

[uncategorized] ~103-~103: Possible missing comma found.
Context: ...puted). When a reactive fetch option is updated it will trigger a refetch using the upd...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/3.api/3.utils/define-lazy-hydration-component.md

[uncategorized] ~45-~45: Loose punctuation mark.
Context: ...e/components/async#hydrate-on-visible). :: ### Idle Strategy Hydrates the compo...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~73-~73: Loose punctuation mark.
Context: ...uide/components/async#hydrate-on-idle). :: ### Interaction Strategy Hydrates th...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~102-~102: Loose punctuation mark.
Context: ...mponents/async#hydrate-on-interaction). :: ### Media Query Strategy Hydrates th...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~129-~129: Loose punctuation mark.
Context: ...mponents/async#hydrate-on-media-query). :: ### Time Strategy Hydrates the compo...

(UNLIKELY_OPENING_PUNCTUATION)

docs/3.api/6.nuxt-config.md

[typographical] ~1792-~1792: Two consecutive dots
Context: ...hould be set at runtime in a Nuxt plugin.. See: [Vue app config documentation...

(DOUBLE_PUNCTUATION)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: test-fixtures (windows-latest, dev, vite, default, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, built, vite, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, webpack, default, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, webpack, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite, default, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite, async, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite, async, manifest-on, js, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, rspack, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite-env-api, default, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, dev, vite, default, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, dev, vite, async, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, dev, vite, async, manifest-on, js, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, dev, vite, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, dev, vite-env-api, async, manifest-on, json, lts/-1)
  • GitHub Check: release-pkg-pr-new
  • GitHub Check: test-benchmark
  • GitHub Check: typecheck (ubuntu-latest, bundler)
  • GitHub Check: typecheck (windows-latest, bundler)
  • GitHub Check: code
🔇 Additional comments (25)
docs/3.api/2.composables/use-state.md (1)

32-32: URL normalisation looks good.

Removing the .html extension aligns with modern documentation URL patterns and is consistent with the PR's stated objective to normalise links across the docs.

docs/3.api/1.components/6.nuxt-error-boundary.md (1)

12-12: No concerns with this documentation update.

The link to Vue's onErrorCaptured API documentation is correctly formatted and semantically appropriate. The static analysis hint about punctuation is a false positive triggered by the markdown directive syntax.

docs/3.api/1.components/11.teleports.md (2)

7-7: Approve link update to Vue documentation.

The update to point to the general Vue Teleport guide page (removing .html extension) is appropriate and aligns with modern documentation URL conventions. The warning text remains clear and grammatically correct.

Please verify that https://vuejs.org/guide/built-ins/teleport is the correct and current URL for the Vue Teleport guide. Given that lychee link checking was discussed in the PR comments, confirm this link has been validated.


7-7: Static analysis flag appears to be a false positive.

LanguageTool flagged the :: on line 7 as a loose punctuation mark. However, this is standard Nuxt markdown syntax for closing content blocks and is correct in this context.

lychee.toml (3)

19-20: Verify that reducing max_redirects to 1 doesn't inadvertently fail legitimate URLs.

Setting max_redirects = 1 is a significant restriction (down from 10). Combined with the accept list that includes 3xx redirect status codes (line 9), this configuration may prevent lychee from following redirect chains longer than one hop. This could cause CI failures for legitimate URLs with multi-hop redirects or create unexpected behaviour where 3xx responses are accepted but not followed.

Please verify that this change:

  • Does not cause legitimate documentation links with redirect chains > 1 hop to fail
  • Aligns with the intended link-validation strategy (is the goal to accept redirects or to flag them as problems?)
  • Works as expected in CI when combined with the accept list containing 3xx codes

42-43: Confirm that nuxt.new short URLs are intentionally marked as problematic.

Lines 42–43 exclude https://nuxt.new/c/v4 and https://nuxt.new/s/v4 (likely StackBlitz templates or similar shortlinks). Based on the PR context, these appear to be temporarily unstable destinations. Please confirm these are intentionally excluded and document the expected lifetime of these exclusions if they are temporary.


50-53: Good: test suite example URL added for consistency.

The addition of http://example3.com/ on line 53 properly extends the test-suite exclusion pattern to match example1.com and example2.com on lines 51–52.

docs/1.getting-started/10.data-fetching.md (3)

519-519: Documentation link normalisation approved.

The removal of .html extension from the Vue guide link aligns with the PR's objective to eliminate redirects detected by lychee. This change ensures the link points directly to the canonical URL without requiring a redirect.


774-774: VueUse composable link path lowercased correctly.

The update to the VueUse useEventSource link follows the PR's objective of standardising link paths. This documentation-only change eliminates a redirect and improves link reliability.


774-774: Static analysis false positive: MDC syntax is valid.

The static analysis tool flagged "). ::" as loose punctuation, but this is valid Markdown Component (MDC) syntax. The period closes the sentence, and :: correctly terminates the ::tip component on the following line. No action required.

docs/3.api/3.utils/define-nuxt-component.md (1)

12-12: URL modernisation verified as correct.

The updated Vue.js documentation URL correctly points to the defineComponent section on the Vue Global API "General" page. The removal of the .html extension is a valid URL modernisation and the link is functional. No further action required.

docs/1.getting-started/17.testing.md (1)

268-268: Documentation links verified as valid.

The Vitest documentation anchors vi#vi-mock and vi#vi-hoisted are valid in the current Vitest API docs. All three URL updates in this file (lines 268, 333, and 336) are correct and will not result in broken links.

Also applies to: 333-333, 336-336

docs/1.getting-started/12.error-handling.md (3)

20-20: Vue.js documentation links are appropriate.

External links to Vue.js API documentation are correctly formatted and reference the appropriate lifecycle hooks and configuration options.

Also applies to: 24-24, 40-40


48-48: Plugin path update to /app/plugins is consistent with PR objectives.

The URL path update from /plugins to /app/plugins aligns with the broader chore PR goal. Please verify that the target documentation path (/docs/4.x/guide/directory-structure/app/plugins) exists or is being created as part of this PR.


52-52: New app:mounted hook bullet point enhances completeness of Startup Errors section.

The addition of "processing the app:mounted hook" to the startup error sources is logically sound and consistent with existing documentation references to app:mounted (e.g., line 79). It provides a complete picture of lifecycle hooks that can error during startup.

docs/3.api/2.composables/use-nuxt-app.md (1)

33-33: Documentation links correctly migrated to app/plugins paths.

The path updates from plugins to app/plugins are consistent and align with Nuxt 4's directory structure conventions. All updated links reference valid documentation sections.

Also applies to: 49-49, 83-88

docs/2.guide/1.directory-structure/1.app/1.plugins.md (1)

208-208: URL normalisation approved.

Link to Vue documentation correctly updated to remove .html suffix, using the canonical form that matches Vue's current URL structure.

docs/2.guide/2.concepts/1.auto-imports.md (1)

6-6: URL normalisation approved.

Vue API links correctly updated with trailing slash and .html suffix removal applied consistently.

Also applies to: 112-112

docs/3.api/6.nuxt-config.md (1)

205-205: Documentation links correctly normalised across Nuxt config documentation.

External links to Vue, Vite, and webpack documentation updated to use canonical URLs. Internal path updates from plugins to app/plugins are consistent with Nuxt 4 structure. All updates reference valid and appropriate documentation targets.

Also applies to: 216-216, 227-227, 342-342, 1149-1149, 1589-1589, 1788-1788, 1794-1794

docs/3.api/3.utils/define-page-meta.md (1)

65-65: Vue Router and API documentation links correctly updated.

All external link references to Vue Router and Vue API documentation use canonical URL forms. Cross-references and anchor links are appropriately updated to point to relevant sections within this and related documentation.

Also applies to: 81-81, 83-83, 99-99, 105-105, 111-111, 125-125, 218-218

docs/1.getting-started/09.transitions.md (5)

27-27: Internal documentation paths are already consistent—no changes needed.

The paths on lines 27 and 128 reference /docs/4.x/guide/directory-structure/app/app and are consistent with the existing pattern throughout the codebase. This path appears identically in over 40 locations across the documentation, following the established format /docs/4.x/guide/directory-structure/app/[module].

Likely an incorrect or invalid review comment.


232-232: Documentation link is correct and current.

The URL anchor https://vuejs.org/api/built-in-components#transition is accurate. The TransitionProps API anchor is "#transition", which matches the link referenced in line 232 of the file. No changes required.


419-419: MDN View Transition API path is correct.

The correct MDN documentation path is /docs/Web/API/View_Transition_API (singular form), confirming that the change to line 419 is accurate. The reference has been properly updated and no further action is required.


313-313: I need to verify the exact URL path structure to confirm the documentation link is correct.

Confirm the exact anchor identifier for the JavaScript hooks section.

The documentation at https://vuejs.org/guide/built-ins/transition exists and covers the Transition component, and the page references JavaScript hooks documentation. However, I cannot definitively verify whether the anchor #javascript-hooks is the correct identifier used in the current Vue 3 documentation. The base URL path is accurate, but the specific anchor fragment may differ. Manual verification of the exact anchor tag on the live documentation page is recommended to ensure the link works correctly.


8-8: Anchor format verified as correct.

The Vue documentation uses the anchor #the-transition-component with hyphens, confirming the change from #the_transition-component to #the-transition-component is accurate.

Copy link
Member

@danielroe danielroe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you for this! ❤️

@danielroe danielroe merged commit b304097 into nuxt:main Oct 28, 2025
56 of 58 checks passed
@github-actions github-actions bot mentioned this pull request Oct 28, 2025
@iiio2
Copy link
Contributor Author

iiio2 commented Oct 28, 2025

Thanks @danielroe .

@iiio2 iiio2 deleted the chore/update-urls branch October 28, 2025 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants