Victauri for VS Code

X-ray vision for Tauri apps. See your app's DOM tree, IPC traffic, window state, memory usage, and performance metrics — all live inside VS Code. Click elements, take screenshots, run accessibility audits, and generate tests without leaving your editor.
Works with any Tauri 2.x app. Framework-agnostic — tested with React, Vue, Svelte, and vanilla JS.
Quick Start
- Add
victauri-plugin to your Tauri app (one-line setup)
- Run your app in debug mode
- The extension connects when it finds a
tauri.conf.json (or tauri.conf.json5, Tauri.toml) in your workspace, and keeps looking if the app is not up yet or restarts. It connects by itself only to this workspace's app (matched by identifier) or, if the config names none, to the single running app. To bind to another project's app, run Victauri: Connect to Tauri App.
That's it. The sidebar populates with live app state, the DOM tree, and IPC traffic.
Features
Activity Bar — Three Live Views
| View |
What You See |
| App State |
Windows (size, visibility, URL), memory usage, JS heap, DOM stats, long tasks, plugin version, diagnostic warnings |
| DOM Explorer |
Full accessible tree with ref IDs, ARIA roles, element bounds. Right-click to interact, inspect, or generate tests |
| IPC Log |
Live Tauri command log with each command's outcome (ok, error, pending, unknown), duration, timestamps, and the error text in the tooltip |
Screenshot Panel
Victauri: Take Screenshot captures the app window into an inline webview panel. Refresh or save to disk without leaving VS Code.
CodeLens — Test Generation
A #[tauri::command] function in a Rust file gets a "Generate Victauri test" lens. Click it to scaffold an e2e_test! block that invokes the command and fails if it errors; add your own assertions on the result and pass any arguments it takes.
DOM Interactions
Right-click any element in the DOM Explorer:
- Click Element — trigger a click in the running app
- Highlight Element — draw a colored overlay on the element
- Inspect Styles — dump computed CSS to the Output panel
- Copy Ref ID — copy the element's ref handle
- Generate Test — scaffold a test that finds the element by role and name (or text). An element with neither gets a visible
todo!()
Accessibility Audit
Victauri: Audit Accessibility runs a comprehensive WCAG check — missing alt text, unlabeled inputs, heading hierarchy, color contrast, ARIA validity — and reports violations in the Output panel.
Victauri: Performance Metrics shows navigation timing, JS heap usage, DOM stats, long task count, and resource loading details.
Diagnostics
Victauri: Run Diagnostics checks for compatibility issues — CSP problems, missing bridge methods, shadow DOM, service workers.
Commands
| Command |
Description |
Victauri: Connect to Tauri App |
Connect to a running Victauri server |
Victauri: Disconnect |
Disconnect from the server |
Victauri: Take Screenshot |
Capture the app window |
Victauri: Evaluate JavaScript |
Run JS in the Tauri webview |
Victauri: Run Diagnostics |
Check for compatibility issues |
Victauri: Audit Accessibility |
Run WCAG accessibility audit |
Victauri: Performance Metrics |
Show navigation timing, heap, DOM stats |
Victauri: Clear Highlights |
Remove all debug overlays from the app |
Victauri: Refresh All Views |
Force-refresh all tree views |
Configuration
| Setting |
Default |
Description |
victauri.port |
7373 |
Port of the Victauri server (1-65535; anything else is ignored with a warning) |
victauri.autoConnect |
true |
Auto-connect when a Tauri project is detected |
victauri.pollInterval |
2000 |
Polling interval (ms) for live updates (at least 500) |
victauri.authToken |
"" |
Bearer token for authenticated connections. User settings only; sent to a port set by workspace settings only after you confirm that port |
How It Works
Victauri runs an HTTP server inside your Tauri app's process. This extension talks to its REST API, giving it simultaneous access to the webview DOM, Rust backend state, IPC traffic, and native window state — something external tools like Playwright can't do.
The plugin is gated behind #[cfg(debug_assertions)], so init() is a no-op in release builds — zero runtime cost (the server never starts). Add it as a normal dependency (the app binary cannot use [dev-dependencies]); to also keep it out of the release binary, make it an optional dependency behind a Cargo feature and gate the .plugin(...) call on that feature.
Requirements
- A Tauri 2.x app with victauri-plugin enabled
- The plugin starts an HTTP server on
127.0.0.1:7373 that this extension connects to
- Port discovery reads the per-process discovery directory (
%TEMP%\victauri\<pid>\ on Windows; $XDG_RUNTIME_DIR/victauri/<pid>/, <temp>/victauri-<uid>/<pid>/ or ~/.local/state/victauri/<pid>/ on Unix, plus the legacy <temp>/victauri/) — trusted entries owned by a live process of yours only — if the default port is taken. On Windows a discovery directory outside your user profile (a shared TEMP, e.g. MSYS2's C:\msys64\tmp) is used only if you own it, checked with PowerShell's Get-Acl; where PowerShell cannot run, set victauri.port and victauri.authToken instead
Compatibility
In a one-time evaluation (May 2026, on an older Victauri release) against 5 real-world open-source Tauri apps, 867/895 checks passed (96.9%). Results of that evaluation (the per-release harness in scripts/compat re-verifies Kanri, En Croissant and Lettura on each release):
| App |
Framework |
Result |
| Kanri |
Vue 3 / Nuxt |
174/179 |
| En Croissant |
React / Mantine |
177/179 |
| Surrealist |
React 19 / Mantine |
176/179 |
| Duckling |
React 19 / Jotai |
169/179 |
| Lettura |
React / Custom UI |
171/179 |
License
Apache-2.0