Home / Function/ update_derived() — svelte Function Reference

update_derived() — svelte Function Reference

Architecture documentation for the update_derived() function in deriveds.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  e6ca562d_6ddf_c249_6259_b15d55cbdd91["update_derived()"]
  2fb8b3eb_7c25_3930_a184_09fab29d537f["deriveds.js"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|defined in| 2fb8b3eb_7c25_3930_a184_09fab29d537f
  9d7b1994_c635_b82f_ff1f_b19fc461c425["is_dirty()"]
  9d7b1994_c635_b82f_ff1f_b19fc461c425 -->|calls| e6ca562d_6ddf_c249_6259_b15d55cbdd91
  a08b6cc5_af73_1be4_d02f_3113cf8a8305["get()"]
  a08b6cc5_af73_1be4_d02f_3113cf8a8305 -->|calls| e6ca562d_6ddf_c249_6259_b15d55cbdd91
  6ac29608_bb3f_4976_22d6_2651518ca4bc["execute_derived()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| 6ac29608_bb3f_4976_22d6_2651518ca4bc
  cba02be5_1b7d_ad21_f54b_8a8a90da7e59["equals()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| cba02be5_1b7d_ad21_f54b_8a8a90da7e59
  4af42bfc_fe4c_0160_eada_7d109f39af3a["increment_write_version()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| 4af42bfc_fe4c_0160_eada_7d109f39af3a
  6479f832_c1d7_7636_b658_b3f9c70d9af0["set_signal_status()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| 6479f832_c1d7_7636_b658_b3f9c70d9af0
  461d1f5f_ffa4_d984_98a4_868566c66f30["effect_tracking()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| 461d1f5f_ffa4_d984_98a4_868566c66f30
  63ee8247_ada4_9f1d_e139_0c1167cd5b1c["set()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| 63ee8247_ada4_9f1d_e139_0c1167cd5b1c
  58b2d309_6832_2659_5c05_6923f97c1163["update_derived_status()"]
  e6ca562d_6ddf_c249_6259_b15d55cbdd91 -->|calls| 58b2d309_6832_2659_5c05_6923f97c1163
  style e6ca562d_6ddf_c249_6259_b15d55cbdd91 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/internal/client/reactivity/deriveds.js lines 356–394

export function update_derived(derived) {
	var value = execute_derived(derived);

	if (!derived.equals(value)) {
		derived.wv = increment_write_version();

		// in a fork, we don't update the underlying value, just `batch_values`.
		// the underlying value will be updated when the fork is committed.
		// otherwise, the next time we get here after a 'real world' state
		// change, `derived.equals` may incorrectly return `true`
		if (!current_batch?.is_fork || derived.deps === null) {
			derived.v = value;

			// deriveds without dependencies should never be recomputed
			if (derived.deps === null) {
				set_signal_status(derived, CLEAN);
				return;
			}
		}
	}

	// don't mark derived clean if we're reading it inside a
	// cleanup function, or it will cache a stale value
	if (is_destroying_effect) {
		return;
	}

	// During time traveling we don't want to reset the status so that
	// traversal of the graph in the other batches still happens
	if (batch_values !== null) {
		// only cache the value if we're in a tracking context, otherwise we won't
		// clear the cache in `mark_reactions` when dependencies are updated
		if (effect_tracking() || current_batch?.is_fork) {
			batch_values.set(derived, value);
		}
	} else {
		update_derived_status(derived);
	}
}

Domain

Subdomains

Called By

Frequently Asked Questions

What does update_derived() do?
update_derived() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/reactivity/deriveds.js.
Where is update_derived() defined?
update_derived() is defined in packages/svelte/src/internal/client/reactivity/deriveds.js at line 356.
What does update_derived() call?
update_derived() calls 7 function(s): effect_tracking, equals, execute_derived, increment_write_version, set, set_signal_status, update_derived_status.
What calls update_derived()?
update_derived() is called by 2 function(s): get, is_dirty.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free