Skip to content

docs: manual client injection examples reference removed exports #589

Description

@SaKaNa-Y

Describe the bug

The manual client injection documentation still tells users to import @vitejs/devtools/client/inject, although that entry was removed when Vite DevTools adopted the @devframes/hub-ui client.

Affected pages:

This matters for backend-served HTML, middleware integrations, and JavaScript-only entries where automatic HTML injection does not run. Following the documented import fails during module resolution, before the client can initialize.

The @ts-expect-error comment in the guide addresses missing type declarations; it cannot suppress this module-resolution failure.

Reproduction

Using the published package, without building DevTools from source:

mkdir devtools-manual-injection-repro
cd devtools-manual-injection-repro
pnpm init
pnpm add -D -E vite@8.3.0 @vitejs/devtools@0.7.5
node --input-type=module -e "console.log(import.meta.resolve('@vitejs/devtools/client/inject'))"

Actual result:

ERR_PACKAGE_PATH_NOT_EXPORTED
Package subpath './client/inject' is not defined by "exports"

This is also reproducible through Vite with DevTools explicitly enabled. Create check.mjs:

import { createServer } from 'vite'
import { DevTools } from '@vitejs/devtools'
import { writeFile } from 'node:fs/promises'

await writeFile('old.js', "import '@vitejs/devtools/client/inject'\n")
const server = await createServer({
  configFile: false,
  plugins: await DevTools({ builtinDevTools: false }),
  server: { host: '127.0.0.1', port: 5173, strictPort: true },
  devtools: { open: false },
})

try {
  await server.listen()
  await server.transformRequest('/old.js')
}
finally {
  await server.close()
}

Run node check.mjs. The Vite transformation fails with:

"./client/inject" is not exported under the conditions
["module", "browser", "development", "import"]

The published package also does not export ./client/inject-passive or ./client/inject-hidden, both of which are still shown in the guide.

Migration evidence

Commit 352456fb in #529 removed the old client directory and the three injection exports, added @devframes/hub-ui, and changed injection to load the hub-served /__devtools/embedded.js script.

The capability still exists. I verified a backend-served HTML page that loads this script through a same-origin HTTP/WebSocket proxy to Vite: after authorization, the dock appeared and the Settings panel opened. This verifies that setup, not arbitrary cross-origin configurations.

Expected behavior

Please update the manual integration instructions to describe the current supported entry and its hosting/connection requirements, and synchronize the client-context explanation and visibility-mode examples.

The request is to retain and update the manual integration guidance. It does not require restoring the removed npm exports or deleting support for backend-served pages.

Environment

  • vite: 8.3.0
  • @vitejs/devtools: 0.7.5
  • Package manager: pnpm
  • Reproduced on macOS using published packages.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions