# 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 (the missing package name) stems entirely from the missing dependency, not from the rewrite itself.
- Program: minimized from 3 to 1 lines

## Reproducer

```js
import { ref } /* inline */ from "@vue/reactivity"; // trailing
```

## 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:28.742042843 -0400
+++ fixed.js	2026-10-22 13:33:30.877078778 -0400
@@ -1 +1 @@
-import { ref } /* inline */ from "@vue/reactivity"; // trailing
+import { ref } /* inline */ from "vue"; // trailing
```

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

The original import targets @vue/reactivity, which does not exist as a standalone package; rewriting it to vue changes the module specifier entirely. Since neither package exists in this environment, both attempts fail—but with different error messages reflecting the distinct specifiers tried. Thus the behavior differs because the resolver reports failure for a different module name, even though both outcomes are errors. This change alters what the runtime attempts to load, so it is not semantically equivalent. (98 words)

## Upstream search

Queries: "useVueBaseImport fix", "nursery useVueBaseImport import specifier", "Biome Vue reactivity module rewrite", "fix changes behavior @vue/reactivity to vue"

- related: https://github.com/biomejs/biome/pull/7597
  PR #7597 fixes aliased paths in useImportExtensions, a different rule that also rewrites import specifiers but not the Vue base import mapping
- related: https://github.com/biomejs/biome/pull/3274
  PR #3274 adds importMapping options to useImportExtensions, same domain of import specifier rewriting but different rule
- related: https://github.com/biomejs/biome/issues/6305
  Issue #6305 ports vue/no-setup-props-reactivity-loss from eslint-plugin-vue, same Vue domain but different rule and construct
- related: https://github.com/biomejs/biome/issues/9848
  Issue #9848 reports panic in useImportType rule on Vue SFC with multi-line imports, same Vue domain and import rewriting but different rule and trigger

<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(biome_js_analyze): `useImportExtensions` - add `importMapping` options by drdaemos · Pull Request #3274 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/3274
- [tavily] noUnresolvedImports: False positives for installed packages (zod, clsx types) in standard Next.js setup · Issue #6464 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6464
- [tavily] feat(biome_css_analyzer): implement noInvalidPositionAtImportRule by t-shiratori · Pull Request #2717 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2717
- [tavily] 🐛 fix of `lint/nursery/noUnusedImports` does not work correctly · Issue #688 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/688
- [tavily] feat(js_analyze): implement useQwikLoaderLocation by Netail · Pull Request #9809 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9809
- [github, closed] 💅 Linter: `lint --write` is not idempotent on Astro frontmatter, while `lint` reports no issues — https://github.com/biomejs/biome/issues/7912
- [github, closed] 📎 Embedded language formatting — https://github.com/biomejs/biome/issues/3334
- [github, closed] 🐛 Self-closing tags do not exist in HTML — https://github.com/biomejs/biome/issues/4490
- [tavily] 📎 Port `vue/no-setup-props-reactivity-loss` from `eslint-plugin-vue` · Issue #6305 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6305
- [tavily] 🐛 biome lint panics with "assertion failed: start.raw <= end.raw" on Vue SFC with multi-line named imports (useImportType rule) · Issue #9848 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/9848
- [tavily] 💅 Svelte Reactive Blocks marked as Unexpected/Unused · Issue #2571 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2571
- [tavily] 🐛 Biome crashed while open astro file · Issue #7837 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7837

</details>
