# biome nursery/useVueBaseImport: fix changes program behavior

Internal evidence sheet generated by fixhunt. Not an issue text. A human re-verifies, checks the duplicates
below, and writes the upstream report in their own words following the project's AI policy.

- Tool: biome 2.5.15
- Rule: nursery/useVueBaseImport (tool labels the fix: safe, this fix reported as safe)
- Oracle: fix-changes-behavior
- Judge (Nemotron 3 Ultra, advisory): program-bug, severity low. Both the original and fixed programs fail with ERR_MODULE_NOT_FOUND because neither '@vue/reactivity' nor 'vue' is installed in the execution environment. The behavioral difference (different missing-package name) stems entirely from the missing dependencies, not from a semantic change introduced by the rewrite.
- Program: minimized from 10 to 1 lines

## Reproducer

```js
import { ref } from '@vue/reactivity'; // expect_trigger=true
```

## Commands

```sh
node prog.js
bunx @biomejs/biome lint --only=nursery/useVueBaseImport --write prog.js
node prog.js
```

## Observed

```
stderr before: Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@vue/reactivity' imported from /w/prog.js
stderr after: Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vue' imported from /w/prog.js
```

## Diff applied by the fix

```diff
--- orig.js	2026-10-22 13:33:09.632721288 -0400
+++ fixed.js	2026-10-22 13:33:11.798757729 -0400
@@ -1 +1 @@
-import { ref } from '@vue/reactivity'; // expect_trigger=true
+import { ref } from 'vue'; // expect_trigger=true
```

## Why the rewrite is not equivalent (model draft, verify before use)

The original import targets @vue/reactivity; the replacement imports from vue instead. If neither module exists in the project’s dependency tree or node_modules, both fail with ERR_MODULE_NOT_FOUND—so the error message changes but the outcome (module not found) remains identical. However, if only one of these packages is installed—for example, if @vue/reactivity is present as a separate package while vue is absent—the rewrite shifts which missing module triggers the error, altering diagnostic output and potentially misleading debugging, even though the program still fails to load. Thus, the change is not semantics‑preserving because it modifies which dependency is expected, affecting error reporting and correctness under differing installation states.

## Upstream search

Queries: "useVueBaseImport fix", "nursery useVueBaseImport import Vue reactivity", "biome lint rule Vue base import fix", "import ref from vue instead of reactivity"

- duplicate: https://github.com/biomejs/biome/pull/7597
  PR #7597 fixes aliased paths in useImportExtensions, which is the same rewrite logic that incorrectly changes @vue/reactivity to vue for the useVueBaseImport rule

<details><summary>All hits</summary>

- [tavily] fix(linter): fix aliased paths in `useImportExtensions` by arendjr · Pull Request #7597 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/7597
- [tavily] fix(parse/html): fix disabled vue error message by dyc3 · Pull Request #9879 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9879
- [tavily] fix(js_analyze): mention which dependency the useExhaustiveDependencies fix adds to the list by Netail · Pull Request #9243 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9243
- [tavily] fix(css_parser): fix is at unicode range check by xin2017338 · Pull Request #3745 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/3745
- [tavily] fix(useConsistentTestIt): fix panic when applying code fix by dyc3 · Pull Request #9942 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9942
- [tavily] feat(lint): add nursery rule `useImportsFirst` by terror · Pull Request #9272 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9272
- [tavily] feat(analyze/html/vue): add useVueVapor rule by JacquesLeupin · Pull Request #8644 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/8644
- [tavily] 📎 Port `vue/no-setup-props-reactivity-loss` from `eslint-plugin-vue` · Issue #6305 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6305
- [github, closed] ☂️  Tailwind class sorting lint rule — https://github.com/biomejs/biome/issues/1274
- [github, closed] ☂️ HTML-ish languages — https://github.com/biomejs/biome/issues/6657
- [github, closed] False positive: Unused function in Vue SFC script section used in template — https://github.com/biomejs/biome/issues/7139
- [tavily] 💅 Linter: `lint --write` is not idempotent on Astro frontmatter, while `lint` reports no issues · Issue #7912 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7912
- [tavily] 💅 Should allow `void` returns when function return type is `void` · Issue #4173 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/4173
- [tavily] 🐛 `useHookAtTopLevel` doesn't report hooks used outside of non-hook functions · Issue #1984 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/1984

</details>
