Skip to content

Remove the temporary rolldown-plugin-dts override #3237

Closed

Description

@fengmk2

Follow-up to #3236.

pnpm-workspace.yaml temporarily pins tsdown@0.23.2>rolldown-plugin-dts to 0.28.8. The 0.29 beta requires TypeScript 7.1 for its tsgo generator and removes support for @typescript/native-preview.

This breaks declaration generation with TypeScript 7.0.2 and existing configurations that explicitly select tsgo with @typescript/native-preview. Both tsdown and the plugin are bundled, but the compiler remains an external dependency. Updating the repository’s TypeScript version alone does not fix these consumer failures.

Remove the override after the replacement meets these conditions:

  • Automatic declaration generation works with supported stable TypeScript versions and preserves inferred types.
  • Existing tsgo configurations remain supported, or a separate compatibility change provides a documented migration.
  • The command_pack_dts_compat fixtures pass against packed packages with hoisting disabled.
  • Core’s peer dependencies match the bundled plugin’s requirements, and its external yuku-parser dependency stays compatible.

The override applies only to tsdown@0.23.2. Review it during the next tsdown upgrade so the upgrade does not silently remove the workaround. Check the plugin resolved through tsdown, rather than only core’s direct development dependency.

Activity

  1. self-assigned this
    on Oct 26, 2026
  2. added theissue type on Oct 26, 2026
  3. fengmk2 commented on Oct 28, 2026

    @fengmk2
    MemberAuthor
  4. voidzero-bot commented on Oct 28, 2026

    @voidzero-bot
    Contributor

    Triage failed unexpectedly (attempt 1 of 3).

    Run: https://github.com/voidzero-dev/vite-plus/actions/runs/40698211406

    I can retry if a new comment provides more information or asks me to try again.

    Error:

    [flue] skill("triage") failed: 402 Insufficient unified billing credits. Please add additional credits on the AI Gateway Cloudflare dashboard to continue using provider models.
    
  5. voidzero-bot commented on Oct 28, 2026

    @voidzero-bot
    Contributor
    • Reproduced: No on current checkout (the override prevents the failure); yes when the override is removed.
    • Exploration: Yes
    • Unit Test: No — this is a dependency-override tracking issue. The relevant coverage already exists via the command_pack_dts_compat snapshot fixtures.
    • Priority: P2: Has Workaround. The workspace override tsdown@0.23.2>rolldown-plugin-dts: 0.28.8 is currently in place and working, so users are not affected. Removing it would re-introduce the incompatibility, so this is a maintenance tracking issue rather than an active breakage.

    The temporary override is still required. With it in place, both command_pack_dts_compat snapshot fixtures pass on current main. Removing the override line causes tsdown to resolve rolldown-plugin-dts@0.29.0-beta.2 for the bundled CLI build, which then fails with TypeScript 7.0.2 does not provide the classic TypeScript API required by tsc, matching the issue description.

    I wasn't able to find a fix, but I identified some areas that may be relevant. The two places to watch are pnpm-workspace.yaml (the override itself and the catalog pin rolldown-plugin-dts: ^0.28.0) and packages/cli/build.ts / the tsdown bundle, because those are where rolldown-plugin-dts@0.29 is loaded. A future fix likely requires either a tsdown/rolldown-plugin-dts release that restores compatibility with TypeScript 7.0.2 and @typescript/native-preview, or an internal switch to isolatedDeclarations/Oxc generation. In the meantime, the checklist conditions in the issue description are still not met.

    Full Triage Report

    Triage Report: Issue #3237

    Issue Summary

    Environment/Build Info

    vp v1.4.0

    Local vite-plus:
    vite-plus v1.4.0

    Tools:
    vite v8.3.5
    rolldown v1.2.15
    vitest v5.0.5
    oxfmt v0.74.0
    oxlint v1.89.0
    oxlint-tsgolint v7.0.2005
    tsdown v0.23.2

    Environment:
    Package manager pnpm v12.11.2
    Node.js v22.23.4 (.node-version)
    v22.23.4
    12.11.2

    Investigation

    Current workspace override

    pnpm-workspace.yaml override section:

    picocolors: ^1.1.1
    picomatch: ^4.0.2
    pirates: ^4.0.7
    playwright: ^1.57.0
    remeda: ^2.50.0
    rolldown-plugin-dts: ^0.28.0
    rollup: ^4.63.0
    semver: ^7.8.0
    signal-exit: 4.1.0
    source-map: 0.8.0
    tinyglobby: ^0.2.15

    • launch-editor
    • launch-editor-middleware
    • lint-staged
    • logs-sdk
    • rolldown
    • rolldown-plugin-dts
    • tinyexec
    • tsdown
    • tsx
    • unrun
    • verkit
      --
      vite-plus: workspace:vite-plus@*
      rolldown>typescript: ^6.0.0

    tsdown 0.23.2 selects the dts 0.29 beta, which requires TypeScript 7.1's

    async API and drops native-preview support. Keep vp pack compatible with

    stable TypeScript and existing tsgo configurations.

    tsdown@0.23.2>rolldown-plugin-dts: 0.28.8
    '@volar/typescript>typescript@>=7': '-'
    '@volar/language-service>typescript@>=7': '-'
    packageExtensions:
    '@rollup/plugin-dynamic-import-vars':
    dependencies:

    tsdown version in packages/core/package.json:

    "./module-runner": "./dist/vite/node/module-runner.js"
    "./pack": {
      "default": "./dist/tsdown/index.js",
      "types": "./dist/tsdown/index-types.d.ts"
    }
    "./pack/client": {
      "types": "./dist/tsdown/client.d.ts"
    }
    "./package.json": "./package.json"
    

    --
    "@napi-rs/cli": "catalog:"
    "@oxc-node/cli": "catalog:"
    "@tsdown/css": "catalog:"
    "@tsdown/exe": "catalog:"
    "@typescript/native-preview": "catalog:"
    "@vitejs/devtools": "^0.8.0"

    "tinyglobby": "^0.2.15"
    "tree-kill": "^1.2.2"
    "tsdown": "catalog:"
    "typescript": "catalog:"
    "vite": "workspace:*"
    

    --
    "vite": "8.3.5"
    "rolldown": "1.2.15"
    "tsdown": "0.23.2"
    }
    }

    TypeScript version:

    "@types/node": "catalog:"
    "@typescript/native-preview": "catalog:"
    "@voidzero-dev/vite-plus-tools": "workspace:*"
    "playwright": "catalog:"
    "typescript": "catalog:"
    "vite": "catalog:"
    

    Control run: existing fixtures with override in place

    Command: VP_SNAP_SKIP_FLAVORS=local cargo test -p vp_cli_snapshots -- command_pack_dts_compat
    Exit code: 0
    Build log tail:
    Compiling signal-hook-mio v0.2.5
    Compiling terminal_size v0.4.4
    Compiling futures-executor v0.3.34
    Compiling compact_str v0.10.0
    Compiling json-strip-comments v3.1.2
    Compiling self_cell v1.3.0
    Compiling iana-time-zone v0.1.65
    Compiling is_executable v1.0.6
    Compiling clap_complete v4.6.11
    Compiling dialoguer v0.12.0
    Compiling oxc_resolver v11.24.3
    Compiling chrono v0.4.45
    Compiling vp_js_runtime v0.0.0 (/home/runner/work/vite-plus/vite-plus/crates/vp_js_runtime)
    Compiling futures v0.3.34
    Compiling vp_cli_help v0.0.0 (/home/runner/work/vite-plus/vite-plus/crates/vp_cli_help)
    Compiling crossterm v0.29.0
    Compiling vp_setup v0.0.0 (/home/runner/work/vite-plus/vite-plus/crates/vp_setup)
    Compiling vp_toolchain v0.0.0 (/home/runner/work/vite-plus/vite-plus/crates/vp_toolchain)
    Compiling vp_global_cli v1.4.0 (/home/runner/work/vite-plus/vite-plus/crates/vp_global_cli)
    Finished dev profile [unoptimized] target(s) in 1m 04s
    Test log tail:
    Compiling vp_cli_snapshots v0.0.0 (/home/runner/work/vite-plus/vite-plus/crates/vp_cli_snapshots)
    Finished test profile [unoptimized] target(s) in 2.89s
    warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
    note: to see what the problems were, use the option --future-incompat-report, or run cargo report future-incompatibilities --id 1
    Running tests/cli_snapshots/main.rs (target/debug/build/vp_cli_snapshots/3c2736a5485d2d2f/out/cli_snapshots-3c2736a5485d2d2f)

    running 2 tests
    test command_pack_dts_native_preview ... ok
    test command_pack_dts_typescript_7 ... ok

    test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 844 filtered out; finished in 12.98s

    snapshot case timings (slowest first):
    12.98s command_pack_dts_typescript_7
    12.94s command_pack_dts_native_preview
    Running tests/prewarm_unit.rs (target/debug/build/vp_cli_snapshots/2e428ee248891ad6/out/prewarm_unit-2e428ee248891ad6)

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.00s

     Running tests/redact_unit.rs (target/debug/build/vp_cli_snapshots/d04a1711fbd85848/out/redact_unit-b40ed3d81fbd85848)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 48 filtered out; finished in 0.00s

     Running tests/registry_pack_unit.rs (target/debug/build/vp_cli_snapshots/2a74246608c6b227/out/registry_pack_unit-2a74246608c6b227)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.00s

     Running tests/report_unit.rs (target/debug/build/vp_cli_snapshots/6426f964216238f5/out/report_unit-6426f964216238f5)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 3 filtered out; finished in 0.00s

     Running tests/schedule_unit.rs (target/debug/build/vp_cli_snapshots/0458a20b18c368bf/out/schedule_unit-0458a20b18c368bf)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

     Running tests/shard_unit.rs (target/debug/build/vp_cli_snapshots/acdc48e02f784087/out/shard_unit-acdc48e02f784087)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

    Failure reproduction attempt: removing the override

    Removed override: tsdown@0.23.2>rolldown-plugin-dts: 0.28.8
    New resolved rolldown-plugin-dts versions:
    rolldown-plugin-dts@0.28.8_@typescript+native-preview@7.0.0-dev.20260707.2_@volar+types_598f4e42ab480f643c6b87f42c7a2e43
    rolldown-plugin-dts@0.28.8_@typescript+native-preview@7.0.0-dev.20260707.2_@volar+types_cf62a829bc560777d3bb6e0de59760ea
    rolldown-plugin-dts@0.29.0-beta.2_@volar+typescript@2.4.28_@vue+language-core@3.3.12_ox_4b547951505a3d2ad9c754304a1106ab
    Rebuilding packages/cli...
    packages/cli build exit: 0
    Error: Command failed: npx tsdown
    at genericNodeError (node:internal/errors:983:15)
    at wrappedFn (node:internal/errors:537:14)
    at checkExecSyncError (node:child_process:916:11)
    at execSync (node:child_process:988:15)
    at buildWithTsdown (/home/runner/work/vite-plus/vite-plus/packages/cli/build.ts:195:3)
    at (/home/runner/work/vite-plus/vite-plus/packages/cli/build.ts:118:3)
    at ModuleJob.run (node:internal/modules/esm/module_job:343:25)
    at async onImport.tracePromise.proto (node:internal/modules/esm/loader:681:26)
    at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) {
    status: 1,
    signal: null,
    output: [ null, null, null ],
    pid: 11718,
    stdout: null,
    stderr: null
    }

    Node.js v22.23.4
    [ELIFECYCLE] Command failed with exit code 1.
    Global CLI build exit: 0
    Finished dev profile [unoptimized] target(s) in 0.26s
    Re-running fixtures with override removed...
    Test exit: 0
    Finished test profile [unoptimized] target(s) in 0.17s
    warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
    note: to see what the problems were, use the option --future-incompat-report, or run cargo report future-incompatibilities --id 1
    Running tests/cli_snapshots/main.rs (target/debug/build/vp_cli_snapshots/3c2736a5485d2d2f/out/cli_snapshots-3c2736a5485d2d2f)

    running 2 tests
    test command_pack_dts_typescript_7 ... ignored
    test command_pack_dts_native_preview ... ignored

    test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 844 filtered out; finished in 0.00s

     Running tests/prewarm_unit.rs (target/debug/build/vp_cli_snapshots/2e428ee248891ad6/out/prewarm_unit-2e428ee248891ad6)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.00s

     Running tests/redact_unit.rs (target/debug/build/vp_cli_snapshots/d04a1711fbd85848/out/redact_unit-b40ed3d81fbd85848)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 48 filtered out; finished in 0.00s

     Running tests/registry_pack_unit.rs (target/debug/build/vp_cli_snapshots/2a74246608c6b227/out/registry_pack_unit-2a74246608c6b227)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 0.00s

     Running tests/report_unit.rs (target/debug/build/vp_cli_snapshots/6426f964216238f5/out/report_unit-6426f964216238f5)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 3 filtered out; finished in 0.00s

     Running tests/schedule_unit.rs (target/debug/build/vp_cli_snapshots/0458a20b18c368bf/out/schedule_unit-0458a20b18c368bf)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

     Running tests/shard_unit.rs (target/debug/build/vp_cli_snapshots/acdc48e02f784087/out/shard_unit-acdc48e02f784087)
    

    running 0 tests

    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

    Observations

    With the workspace override in place (tsdown@0.23.2>rolldown-plugin-dts: 0.28.8), both
    command_pack_dts_compat snapshot fixtures pass on the current checkout:

    • command_pack_dts_typescript_7 (TypeScript 7.0.2, automatic generator selection) passes.
    • command_pack_dts_native_preview (TypeScript 5.9.3, tsgo generator with @typescript/native-preview) passes.

    This confirms the temporary override successfully prevents the incompatibility.

    After removing the override line from pnpm-workspace.yaml and running pnpm install,
    node_modules/.pnpm contained both the previously resolved rolldown-plugin-dts@0.28.8
    and a newly resolved rolldown-plugin-dts@0.29.0-beta.2 for tsdown@0.23.2.

    Rebuilding packages/cli then failed with the exact incompatibility described in the issue:

    Error: TypeScript 7.0.2 does not provide the classic TypeScript API required by tsc.
    Please use TypeScript 6.0 or below, or enable `isolatedDeclarations` in your tsconfig.json to use Oxc instead.
    

    Stack trace points into rolldown-plugin-dts@0.29.0-beta.2 via tsdown@0.23.2.
    The build wiped packages/cli/dist, which also caused the snapshot runner to ignore
    the command_pack_dts_compat cases (local build not present) until the CLI is rebuilt.

    This demonstrates that the underlying incompatibility described in the issue is real and
    reproduces immediately when the override is removed. However, on the current checkout the
    override remains active, so the reported broken behavior does not manifest.

    Result

    • Reproducible on current checkout: No (the override prevents it).
    • Reproducible when the override is removed: Yes (CLI declaration build fails with TS 7.0.2 + dts 0.29 beta).

    This report was made by an LLM. The analysis may be wrong, and the potential fix might not work, but is intended as a starting point for exploring the issue.

  6. added a commit that references this issue on Oct 29, 2026
    6ed0647
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Fields

Priority

None yet

Effort

None yet

Target date

None yet

Start date

None yet

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions