deep
Edit this pageimport { deep } from "solid-js/store"
function deep<T>(store: Store<T>): TStore tracking is normally property-level (optimal for performance). When you truly need deep observation — tracking every change anywhere inside a store — use deep(store) inside a reactive scope.
Usage
import { createEffect } from "solid-js"import { createStore, deep, snapshot } from "solid-js/store"
const [store, setStore] = createStore({ user: { name: "Alice", settings: { theme: "dark" } },})
createEffect( () => deep(store), // compute: deeply observe entire store () => { // apply: runs when anything changes console.log("Store changed:", snapshot(store)) })When to use
Use deep() when you need to react to any change in a store, regardless of which property changed:
- Serialization (auto-save on any change)
- Logging and debugging
- Syncing entire store to external systems
- Undo/redo snapshots
Caution
deep() opts out of Solid's fine-grained property-level tracking. Every change to any nested property will trigger the reactive scope. For most use cases, reading specific store properties directly is more performant:
// Preferred: fine-grained trackingcreateEffect( () => store.user.name, (name) => console.log("Name changed:", name))
// Use deep only when you need to watch everythingcreateEffect( () => deep(store), () => console.log("Something changed"))