# 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 is solely due to the missing third-party packages, not the rewrite itself.
- Program: minimized from 5 to 1 lines

## Reproducer

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

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

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

The original import path `@vue/reactivity` does not exist in the project’s dependency tree; replacing it with `vue` assumes that package provides the same exported symbol under a different module specifier. Since neither package is resolvable, both imports fail, but the error messages differ because they reference distinct module names—indicating the rewrite changed the module resolution target without establishing functional equivalence or ensuring the new path is valid, thus altering observable behavior (the specific module-not-found error).

## Upstream search

Queries: "useVueBaseImport fix", "nursery useVueBaseImport reactivity import", "Biome Vue base import transformation", "fix changes behavior vue module resolution"

- related: https://github.com/biomejs/biome/pull/7597
  PR #7597 fixes aliased paths in useImportExtensions, a different rule and mechanism than nursery/useVueBaseImport rewriting @vue/reactivity to vue
- related: https://github.com/biomejs/biome/pull/3274
  PR #3274 adds importMapping options to useImportExtensions, same general area of import rewriting but different rule and construct

<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] 🐛 noImportCycles ignores subpath imports · Issue #7242 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7242
- [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
- [tavily] noImportCycles doesn't ignore types · Issue #6799 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6799
- [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] 💅 Shows "All these imports are only used as types" in Vue+typescript · Issue #4539 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/4539
- [tavily] 🐛 Import sort (on beta) produces invalid JS/TS · Issue #6211 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6211
- [tavily] 🐛 Does not support `resolution-mode` for `typeof import` · Issue #2115 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2115
- [tavily] experimentalFullSupportEnabled causes biome format to silently skip Vue files · Issue #10166 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/10166
- [tavily] 🐛 --apply / --write broken for vue files on stdin · Issue #2225 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2225
- [tavily] 🐛 Vue: Parse error when encountering slot scope with type definition · Issue #9155 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/9155
- [tavily] 🐛 parse error when using generic component in vue files · Issue #2456 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2456

</details>
