Suggest an editImprove this articleRefine the answer for “What does the immediate parameter do?”. Your changes go to moderation before they’re published.Approval requiredContentWhat you’re changing🇺🇸EN🇺🇦UAPreviewTitle (EN)Short answer (EN)**`immediate`** is a `watch()` parameter that makes the watcher run its callback right away when it is created, not only on the first change of the observed value. **Key point:** without `immediate`, a watcher fires only when the value changes, so this parameter is most often used to load data right at initialization.Shown above the full answer for quick recall.Answer (EN)ImageThe `immediate` parameter in the `watch()` function makes the watcher **run its callback right away when it is created**, not only on the first change of the observed value. In simpler terms: > `immediate: true` **runs the handler right away, as soon as the watcher is set up.** Without `immediate`, the watcher fires **only** when the value changes. --- ## A simple example ```js watch( count, (newVal, oldVal) => { console.log('watch fired', newVal, oldVal) }, { immediate: true } ) ``` If `count = ref(5)`: It fires immediately: ``` watch fired 5 undefined ``` Then, on every subsequent change. --- ## Example without immediate (default behavior) ```js watch(count, () => console.log('changed')) ``` If the user has not changed anything yet: - the callback does NOT run - the watcher waits for the first change This can be inconvenient, for example, when loading data. --- ## When should you use immediate? ### 1. To load data on initialization The most common case: ```js watch( () => route.params.id, (id) => loadUser(id), { immediate: true } ) ``` It fires right away, without needing to duplicate code in mounted(). --- ### 2. To sync with localStorage ```js watch( form, () => localStorage.setItem('form', JSON.stringify(form)), { immediate: true, deep: true } ) ``` On initialization, it saves the data immediately. --- ### 3. To run code that must fire right away and on changes For example: - a websocket subscription - initializing filters - initial validation --- ## Important nuances #### 1. With immediate, oldValue is undefined Since the watcher is starting for the first time, there is no previous value. --- #### 2. immediate is not always needed If the logic should run **only on change**, immediate is not needed. --- #### 3. Use it together with `deep` if the object is nested ```js watch(settings, save, { immediate: true, deep: true }) ``` --- ## Summary (great for interviews) > `immediate: true` **makes** `watch()` **run its callback right after the watcher is set up.** > **Useful for loading data, initial setup, synchronization, and cases where the effect must run right away instead of waiting for the value to change.**For the reviewerNote to the moderator (optional)Visible only to the moderator. Helps review go faster.