Auto Import Plus: a Rust daemon that fixes auto-import in your TypeScript/Python/Java monorepo

Auto Import Plus: a Rust daemon that fixes auto-import in your TypeScript/Python/Java monorepo

Auto Import Plus (v0.1.3, MIT) replaces WASM-based auto-import logic with a native Rust daemon that indexes TypeScript/JavaScript/Python/Java across a full workspace — cold-scanning 22k files in 2–4 s with sub-millisecond query latency.

VS Code / JetBrains Plugin Pick
2026. 5. 22. · 01:45
구독 1개 · 콘텐츠 6개
If you've worked on a large monorepo that mixes TypeScript and Python — or a Java project with hundreds of packages — you've probably seen auto-import suggestions either stall out, show nothing, or crash the background extension host. Auto Import Plus (newdlops.vscode-auto-import, v0.1.3) takes a different architectural bet: instead of running import resolution inside a WebAssembly sandbox inside VS Code, it compiles a small Rust binary on first activation and runs the whole indexer as a native OS daemon. The VS Code extension is reduced to a 500-line TypeScript IPC client.
The plugin was released on April 19, 2026 by a solo developer and has essentially zero community traction so far — roughly 17 marketplace installs, no reviews, no GitHub stars. 1 The architecture is sound and the test coverage is real (29 end-to-end tests), but you should treat this as early-adopter territory. This article covers exactly what you get and where it stops.

The problem it solves

VS Code's built-in auto-import works well for single-language TypeScript or JavaScript projects. Expand to a Python + TypeScript monorepo, add a site-packages directory with 10,000+ files, and the WASM-based tree-sitter grammars used by most community extensions start producing Aborted() / memory access out of bounds panics. The author's own TypeScript + WASM prototype logged 5,711 such crashes in a single session before the rewrite. 2
Pylance handles Python well but doesn't give you cross-language suggestions. The Java Extension Pack has its own import resolver that doesn't talk to your TypeScript side. Auto Import Plus builds one unified symbol table across all four supported languages — TypeScript (including TSX/JSX), JavaScript, Python, and Java — and serves every suggestion from the same index.

Install

Search Auto Import Plus in the VS Code Extensions panel, or install by identifier:
newdlops.vscode-auto-import
Minimum VS Code version: 1.85.0. 3
No pre-compiled binaries ship in the VSIX. On first activation the extension runs:
cargo build --release --locked
from the bundled daemon/ source directory. If no cargo is found on your PATH, the extension downloads rustup-init, verifies the SHA-256, and installs a minimal Rust toolchain under its own CARGO_HOME. This happens once; subsequent starts load the cached binary. 1
First-activation time depends on your machine and Cargo cache. On a cold machine with no prior Rust installation, expect 2–5 minutes for the toolchain download and compile step. After that, startup is sub-second.
Corporate / offline machines: first activation needs access to static.rust-lang.org and crates.io. If those are blocked, pre-install Rust manually and make cargo available on the PATH before opening VS Code. 1
Windows: you may need Microsoft C++ Build Tools for the native C dependencies used by the tree-sitter bindings.

How suggestions work — four languages, one index

Once the daemon is running, typing a symbol prefix triggers a lookup against the in-memory symbol table. The daemon returns up to 20 results (configurable via autoImport.maxResults) ranked by this formula:
score = prefix_match_weight × 10
      + last_used_recency × 2
      + path_depth_penalty (−0.5 × depth)
      + is_default_export × 1
      + re_export_penalty (−0.3)
Accepting a suggestion inserts the import and merges it into any existing import block for the same module — preserving multi-line style, indent width, and trailing-comma style. 1
Here is what the inserted imports look like per language:
TypeScript — named, default, and type-only:
// named
import { UserAccount } from './models/user';

// default
import ApiClient from './api/client';

// type-only (when autoImport.typescript.preferTypeImports = "always")
import type { UserId } from './types';
Barrel re-exports are flattened: if index.ts contains export * from './foo', you can import Bar directly from index.ts rather than having to track down the originating file. 1
Python — from-import with __init__.py resolution:
# direct module symbol
from pkg.models import Account

# barrel via __init__.py (when __init__.py has: from .sub import Account)
from pkg import Account
Java — fully qualified class name, including inner classes:
import com.example.service.UserService;

// inner class (autoImport.java.includeInnerClasses must be true)
import com.example.model.Outer.Inner;
The daemon indexes only exportable symbols — roughly 5–15% of the total symbol count in a typical project. 4 Already-imported names are filtered out per file using language-specific regex, so the suggestion list stays short.

Performance benchmark

The author benchmarked a 22,000-file Python + TypeScript monorepo on a MacBook Air M2. 2
MetricRust daemon (v0.1.x)V1 TS/WASM prototype
Cold workspace scan2–4 s18–25 s
Library scan (10k+ files)3–6 s, 0 crashes8–18 s, ~5,700 crashes
Warm query (1–2 char prefix)< 1 ms1–3 ms
Repeat cold start (cache hit)< 500 msFull rescan
Read the baseline carefully: the V1 column is the author's own internal TypeScript + WASM prototype — a version that was never publicly released. 2 There is no published comparison against VS Code's built-in IntelliSense or against steoates.autoimport. The self-reported numbers are plausible given the architecture, but they have not been independently verified. The crash-elimination claim is the stronger story: native C FFI bindings replace the WASM grammars that were causing the Aborted() panics.
링크 미리보기를 불러오는 중…
For monorepos above 100,000 files, scan time and memory behavior are undocumented. The PLAN.md design document estimates the path-table for a 100k-file repo at around 2–3 MB, but no runtime benchmarks exist at that scale. 4

Useful settings

The extension ships 14 configuration properties. The ones worth knowing immediately:
{
  // Languages to index (default: all four)
  "autoImport.languages": ["typescript", "javascript", "python", "java"],

// Start suggesting after the first character (default: 1)
  "autoImport.minPrefixLength": 1,

// Prefer "import type" where possible
  "autoImport.typescript.preferTypeImports": "auto", // "auto" | "always" | "never"

// Include Java inner classes in the index
  "autoImport.java.includeInnerClasses": false,

// How much disk space the cache may use
  "autoImport.cache.maxDiskMB": 100
}
Five Command Palette actions are available: Show Logs, Show Cache Stats, Rebuild Workspace Index, Restart Daemon, and Daemon Status. If suggestions stop appearing, open the Command Palette and run Auto Import: Daemon Status to check whether the daemon process is still alive. 1
The cache lives at .vscode/.auto-import-cache/index.bin (bincode format). Add that path to .gitignore — it's machine-specific and regenerates quickly on cache miss.
링크 미리보기를 불러오는 중…

Known limits

  • VS Code only. No JetBrains, no Neovim, no other editors.
  • Four languages only. Go, Rust, C#, Ruby, PHP, and C/C++ are not supported.
  • Not an LSP replacement. The extension adds import suggestions; it does not provide type checking, hover types, go-to-definition, or signature help. It is designed to coexist with Pylance, the Java Extension Pack, and VS Code's built-in TypeScript server — running at lower priority and deduplicating any symbol that the built-in already suggests. 4
  • Single-root workspace only. Multi-root workspaces (VS Code's .code-workspace files) are not supported in the current version.
  • Several features are not documented as supported: TypeScript paths aliases from tsconfig.json, dynamic import() expressions, Python import * and namespace packages, Java static import, and Maven/Gradle multi-module project layouts. Whether these work, partially work, or are silently ignored is unknown — the official docs don't address them.
  • v0.1.2 and v0.1.3 have no changelog entries. The CHANGELOG documents v0.1.0 and v0.1.1 only; what changed in the two subsequent releases is not recorded. 2
  • Zero community signal. No Reddit threads, no dev.to posts, no GitHub issues filed, no blog reviews as of May 21, 2026. 1 This is a one-developer project with bus factor 1.
링크 미리보기를 불러오는 중…

Plugin: Auto Import Plus · Publisher: newdlops · Version: 0.1.3 · License: MIT Languages: TypeScript / JavaScript / Python / Java · Use case: Auto-import, workspace indexing Install: newdlops.vscode-auto-import on VS Code Marketplace · Source: newdlops/vscode-auto-import on GitHub

이 콘텐츠를 둘러싼 관점이나 맥락을 계속 보강해 보세요.

  • 로그인하면 댓글을 작성할 수 있습니다.