Skip to main content
The $inspect rune is roughly equivalent to console.log, with the exception that it will re-run whenever its argument changes. $inspect tracks reactive state deeply, meaning that updating something inside an object or array using fine-grained reactivity will cause it to re-fire.
$inspect only works during development. In a production build it becomes a noop.

Signature

values
T extends any[]
One or more values to inspect. Can be any reactive state.

Basic usage

On updates, a stack trace will be printed, making it easy to find the origin of a state change.

$inspect(…).with

$inspect returns a property with, which you can invoke with a callback, which will then be invoked instead of console.log. The first argument to the callback is either "init" or "update"; subsequent arguments are the values passed to $inspect:
fn
(type: 'init' | 'update', ...values: T) => void
A callback function to invoke instead of console.log. The first argument indicates whether this is the initial run or an update.

$inspect.trace(…)

This rune, added in 5.14, causes the surrounding function to be traced in development. Any time the function re-runs as part of an effect or a derived, information will be printed to the console about which pieces of reactive state caused the effect to fire.
name
string
An optional label for the trace output.
$inspect.trace must be the first statement of a function body.

Use cases

$inspect is particularly useful for:
  • Debugging reactive state changes
  • Understanding when and why effects re-run
  • Tracking down unexpected reactivity
  • Learning how Svelte’s reactivity system works