Skip to content

Conversation

@KazariEX
Copy link
Member

@KazariEX KazariEX commented Sep 24, 2025

🔗 Linked issue

📚 Description

See https://github.com/KazariEX/dxup/tree/main/packages/nuxt

This experimental plugin provides improved TypeScript integration and development tooling for better DX when working with TypeScript in Nuxt applications.

This flag is disabled by default, but you can enable this feature:

export default defineNuxtConfig({
  experimental: {
    typescriptPlugin: true,
  },
})

To use this feature, you need to:

  • Have typescript installed a dependency
  • Configure VS Code to use your workspace TypeScript version (see VS Code documentation)

@KazariEX KazariEX requested a review from danielroe as a code owner September 24, 2025 22:11
@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 Sep 24, 2025

Walkthrough

A conditional branch was added in loadNuxt (packages/nuxt/src/core/nuxt.ts): when options.experimental.typescriptPlugin is truthy, the function pushes the @dxup/nuxt module into the modules list, registering an additional module during Nuxt startup. packages/schema/src/types/schema.ts adds a new public boolean field typescriptPlugin to ConfigSchema with JSDoc. Documentation docs/2.guide/3.going-further/1.experimental-features.md adds an experimental feature entry describing the flag and usage. No function signatures or error handling were changed.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Scope: Three files across packages and docs
  • Nature: One runtime control-flow change, one schema/API addition, and documentation update
  • Heterogeneity: Moderate — verify config propagation, module registration, and docs accuracy
  • Logic density: Low per file but needs cross-file consistency checks (config → runtime)

Pre-merge checks and finishing touches

❌ Failed checks (3 warnings)
Check name Status Explanation Resolution
Linked Issues Check ⚠️ Warning The changes introduce an experimental TypeScript plugin and related documentation but do not address disabling or documenting VS Code’s auto-refactoring of generated .d.ts files as requested in issue #19627, so the PR fails to meet the linked issue’s requirements. The PR should include changes to prevent VS Code from auto-opening or auto-refactoring generated .d.ts files or add documentation guiding users on disabling this behaviour to satisfy issue #19627.
Out of Scope Changes Check ⚠️ Warning The PR’s additions for an experimental TypeScript plugin, including code, schema, and documentation updates, are unrelated to disabling or documenting VS Code’s handling of generated .d.ts files as required by issue #19627, making the changes out of scope. Refocus the PR on addressing VS Code behaviour with generated .d.ts files or split the experimental plugin changes into a separate enhancement PR.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title succinctly and accurately summarises the addition of experimental TypeScript plugin support in the Nuxt core, directly reflecting the primary change in the PR.
Description Check ✅ Passed The PR description clearly describes the new experimental TypeScript plugin feature, how to enable it, and its requirements, directly relating to the introduced changes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8392a88 and d894c4f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !pnpm-lock.yaml
📒 Files selected for processing (2)
  • packages/nuxt/src/core/nuxt.ts (1 hunks)
  • packages/schema/src/types/schema.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/schema/src/types/schema.ts
  • packages/nuxt/src/core/nuxt.ts

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.

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: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cb2b9d5 and ddf2c26.

⛔ Files ignored due to path filters (2)
  • packages/nuxt/package.json is excluded by !**/package.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !pnpm-lock.yaml
📒 Files selected for processing (1)
  • packages/kit/src/template.ts (4 hunks)
🧰 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/kit/src/template.ts
🧠 Learnings (1)
📚 Learning: 2024-11-05T15:22:54.759Z
Learnt from: GalacticHypernova
PR: nuxt/nuxt#26468
File: packages/nuxt/src/components/plugins/loader.ts:24-24
Timestamp: 2024-11-05T15:22:54.759Z
Learning: In `packages/nuxt/src/components/plugins/loader.ts`, the references to `resolve` and `distDir` are legacy code from before Nuxt used the new unplugin VFS and will be removed.

Applied to files:

  • packages/kit/src/template.ts
⏰ 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

@pkg-pr-new
Copy link

pkg-pr-new bot commented Sep 24, 2025

Open in StackBlitz

@nuxt/kit

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

nuxt

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

@nuxt/rspack-builder

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

@nuxt/schema

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

@nuxt/vite-builder

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

@nuxt/webpack-builder

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

commit: eb6096b

@codspeed-hq
Copy link

codspeed-hq bot commented Sep 24, 2025

CodSpeed Performance Report

Merging #33314 will not alter performance

Comparing KazariEX:feat/unimport (eb6096b) with main (e317fd5)

Summary

✅ 10 untouched

@KazariEX KazariEX changed the title feat(kit, nuxt): builtin secondary definition navigation for auto imported variables feat(nuxt): builtin experimental dxup module Sep 26, 2025
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: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ddf2c26 and 6a68c54.

⛔ Files ignored due to path filters (2)
  • packages/nuxt/package.json is excluded by !**/package.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !pnpm-lock.yaml
📒 Files selected for processing (1)
  • packages/nuxt/src/core/nuxt.ts (1 hunks)
🧰 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/nuxt.ts
🧠 Learnings (1)
📚 Learning: 2024-12-12T12:36:34.871Z
Learnt from: huang-julien
PR: nuxt/nuxt#29366
File: packages/nuxt/src/app/components/nuxt-root.vue:16-19
Timestamp: 2024-12-12T12:36:34.871Z
Learning: In `packages/nuxt/src/app/components/nuxt-root.vue`, when optimizing bundle size by conditionally importing components based on route metadata, prefer using inline conditional imports like:

```js
const IsolatedPage = route?.meta?.isolate ? defineAsyncComponent(() => import('#build/isolated-page.mjs')) : null
```

instead of wrapping the import in a computed property or importing the component unconditionally.

Applied to files:

  • packages/nuxt/src/core/nuxt.ts
🪛 GitHub Check: build
packages/nuxt/src/core/nuxt.ts

[failure] 822-822:
Property 'dxup' does not exist on type '{ decorators: boolean; asyncEntry: boolean; externalVue: boolean; serverAppConfig: boolean; emitRouteChunkError: false | "manual" | "automatic" | "automatic-immediate"; templateRouteInjection: boolean; ... 38 more ...; entryImportMap: boolean; }'.

⏰ 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). (1)
  • GitHub Check: code

@KazariEX KazariEX changed the title feat(nuxt): builtin experimental dxup module feat(nuxt): builtin experimental dxup support Sep 26, 2025
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)
packages/schema/src/types/schema.ts (1)

1451-1455: Document the new experimental.dxup toggle

We're exposing this flag publicly, so we should replace the TODO with a short description of what enabling it does (e.g. that it wires in the bundled @dxup/nuxt module) to keep the schema self-documenting.

-    /**
-     * TODO:
-     */
-    dxup: boolean
+    /**
+     * Enable the experimental DXUP integration. When true, Nuxt will register the bundled `@dxup/nuxt` module to unlock its DX enhancements.
+     */
+    dxup: boolean
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6a68c54 and 1f1b1ab.

📒 Files selected for processing (1)
  • packages/schema/src/types/schema.ts (1 hunks)
🧰 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/schema/src/types/schema.ts
⏰ 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). (18)
  • GitHub Check: test-fixtures (windows-latest, built, vite, default, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, built, webpack, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, built, vite, async, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, built, webpack, default, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, built, rspack, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, dev, vite, default, manifest-off, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, rspack, default, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, built, vite, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, rspack, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (windows-latest, dev, vite, async, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite, async, manifest-on, js, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, built, vite, default, manifest-on, 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, default, manifest-on, json, lts/-1)
  • GitHub Check: test-fixtures (ubuntu-latest, dev, vite, async, manifest-on, js, lts/-1)
  • GitHub Check: release-pkg-pr-new
  • GitHub Check: test-benchmark
  • GitHub Check: typecheck (windows-latest, bundler)

@socket-security
Copy link

socket-security bot commented Oct 7, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​dxup/​nuxt@​0.0.5741007891100
Addedinstalled-check@​9.3.0961009578100
Addedhookable@​5.5.310010010080100
Addedimpound@​1.0.0991008680100
Addedjiti@​2.6.19910010089100
Addedhtmlnano@​2.1.5991009289100
Addedhtml-validate@​10.1.1100100100100100

View full report

@KazariEX KazariEX changed the title feat(nuxt): builtin experimental dxup support feat(nuxt): experimental typescript plugin support Oct 9, 2025
@danielroe danielroe merged commit 6cbfa2c into nuxt:main Oct 9, 2025
88 of 92 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

2 participants