# 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. The program fails both before and after the fix because neither '@vue/reactivity' nor 'vue' is installed in the execution environment. The rewrite correctly changes the import source as documented, but the observed module-not-found errors stem from the missing packages, not from a semantic change introduced by the fix.
- Program: minimized from 7 to 1 lines

## Reproducer

```js
import { ref } from '@vue/reactivity'; // keep this comment
```

## 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:16.292833342 -0400
+++ fixed.js	2026-10-22 13:33:18.430869317 -0400
@@ -1 +1 @@
-import { ref } from '@vue/reactivity'; // keep this comment
+import { ref } from 'vue'; // keep this comment
```

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

The original import path `@vue/reactivity` does not exist in the module resolution context; replacing it with `vue` still fails because neither package is available in the environment. Although both imports target non-existent modules, the specific error message changes due to the altered string in the import statement—Node.js reports the exact path it attempted to resolve. Since the runtime attempts to load different strings (`@vue/reactivity` vs `vue`), the diagnostic output differs, meaning the program’s observable behavior (the error message) has changed. Thus, the rewrite is not semantics-preserving under the tool’s definition of behavioral equivalence, which includes stderr output. No speculation about the tool internals is needed—the change in emitted error text proves behavioral divergence.

## Upstream search

Queries: "useVueBaseImport fix", "nursery useVueBaseImport import specifier", "useVueBaseImport Vue reactivity module", "biome lint rule base import"

- related: https://github.com/biomejs/biome/pull/7597
  PR #7597 fixes aliased paths in useImportExtensions, a different rule that also rewrites import specifiers but does not handle the Vue reactivity subpath rewrite performed by useVueBaseImport
- related: https://github.com/biomejs/biome/pull/3274
  PR #3274 adds importMapping options to useImportExtensions, a related import rewriting feature but for a different rule and configuration mechanism
- related: https://github.com/biomejs/biome/issues/11453
  Issue #11453 describes a safe fix in useConsistentTestIt that rewrites a call but leaves the import, breaking the module — same class of defect (fix-changes-behavior on import-related rewrite) but different rule and construct
- related: https://github.com/biomejs/biome/issues/6859
  Issue #6859 describes conflicting autofixes (useNodejsImportProtocol and noUnusedImports) that break code — same class of defect (autofix changes behavior) but different rules and constructs

<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
- [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] feat(analyze/html/vue): add useVueVapor rule by JacquesLeupin · Pull Request #8644 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/8644
- [tavily] feat(lint/html): add `useVueScopedStyles` by dyc3 · Pull Request #9185 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9185
- [tavily] experimentalFullSupportEnabled causes biome format to silently skip Vue files · Issue #10166 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/10166
- [tavily] fix(linter): improve Vue defineProps handling in noVueReservedKeys by mdevils · Pull Request #8448 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/8448
- [github, open] 💅 useImportType not reporting on unused imports — https://github.com/biomejs/biome/issues/11710
- [github, open] 💅 `noUnresolvedImports`: a deprecated `@types` stub shadows a package's own `typings` — https://github.com/biomejs/biome/issues/11881
- [github, open] 💅 useAwaitThenable: false positive calling a Promise-returning property of an intersection type (2.5.7+) — https://github.com/biomejs/biome/issues/11359
- [github, open] 💅 Biome reports false-positives on non-array's `.forEach` signatures — https://github.com/biomejs/biome/issues/10799
- [github, open] 🐛 Unable to migrate ESLint configuration that extends @antfu/eslint-config — https://github.com/biomejs/biome/issues/4802
- [github, open] 📎 Add `reactCompiler` option for `useExhaustiveDependencies` — https://github.com/biomejs/biome/issues/5293
- [github, closed] useConsistentTestIt: safe fix renames a call whose callee is an imported binding, breaking the import — https://github.com/biomejs/biome/issues/11453
- [github, closed] 💅 `noFloatingPromise` does not catch missing promises when called through Playwright fixtures — https://github.com/biomejs/biome/issues/11692
- [github, closed] ☂️  Tailwind class sorting lint rule — https://github.com/biomejs/biome/issues/1274
- [github, closed] 💅 noMisusedPromises is ~4x slower in 2.5.8 than 2.5.7 on imported return chains — https://github.com/biomejs/biome/issues/11310
- [tavily] noImportCycles doesn't ignore types · Issue #6799 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6799
- [tavily] 💅 Biome does not resolve modules? · Issue #3440 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/3440
- [tavily] 🐛 Auto-fix from conflicting lint rules breaks code · Issue #6859 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/6859

</details>
