Real-time debugging for Svelte 5 apps via Vite DevTools Kit.
$state, $derived, $effect in real-timenpm install @svelte-devtools/vite-plugin
// vite.config.ts
import { defineConfig } from 'vite';
import { sveltekit } from '@sveltejs/kit/vite';
import { svelteDevTools } from '@svelte-devtools/vite-plugin';
export default defineConfig({
plugins: [
sveltekit(),
svelteDevTools()
]
});
Start your app — a floating Vite button appears. Click it and select the Svelte tab.
| Stage | What Happens |
|---|---|
| Build | Vite plugin injects $inspect hooks into Svelte files |
| Runtime | State changes trigger callbacks → postMessage events |
| UI | DevTools iframe receives events and displays component tree |
.svelte file → [Vite Transform] → $inspect injection → Runtime handler → postMessage → DevTools UI
Svelte 5 runes are compile-time transforms — they don't exist at runtime. The only way to track state is via $inspect, Svelte's official state observation API.
packages/
├── vite-plugin/ # Build-time transforms
├── runtime/ # State handling, postMessage emission
├── client/ # DevTools iframe UI
└── types/ # Shared TypeScript types
MIT