Home / Function/ root() — svelte Function Reference

root() — svelte Function Reference

Architecture documentation for the root() function in batch.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  c19ea0c4_0909_9915_ac53_f65d5af69919["root()"]
  517c145b_769f_b163_6854_d8f2a4412e11["Batch"]
  c19ea0c4_0909_9915_ac53_f65d5af69919 -->|defined in| 517c145b_769f_b163_6854_d8f2a4412e11
  5cf0e011_b627_b109_ccf7_5cb23fa00b51["defer_effect()"]
  c19ea0c4_0909_9915_ac53_f65d5af69919 -->|calls| 5cf0e011_b627_b109_ccf7_5cb23fa00b51
  9d7b1994_c635_b82f_ff1f_b19fc461c425["is_dirty()"]
  c19ea0c4_0909_9915_ac53_f65d5af69919 -->|calls| 9d7b1994_c635_b82f_ff1f_b19fc461c425
  19374192_7fff_dd82_3581_d62b472dfbdd["update_effect()"]
  c19ea0c4_0909_9915_ac53_f65d5af69919 -->|calls| 19374192_7fff_dd82_3581_d62b472dfbdd
  style c19ea0c4_0909_9915_ac53_f65d5af69919 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/internal/client/reactivity/batch.js lines 244–308

	#traverse_effect_tree(root, effects, render_effects) {
		root.f ^= CLEAN;

		var effect = root.first;

		/** @type {Effect | null} */
		var pending_boundary = null;

		while (effect !== null) {
			var flags = effect.f;
			var is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;
			var is_skippable_branch = is_branch && (flags & CLEAN) !== 0;

			var skip = is_skippable_branch || (flags & INERT) !== 0 || this.#skipped_branches.has(effect);

			// Inside a `<svelte:boundary>` with a pending snippet,
			// all effects are deferred until the boundary resolves
			// (except block/async effects, which run immediately)
			if (
				async_mode_flag &&
				pending_boundary === null &&
				(flags & BOUNDARY_EFFECT) !== 0 &&
				effect.b?.is_pending
			) {
				pending_boundary = effect;
			}

			if (!skip && effect.fn !== null) {
				if (is_branch) {
					effect.f ^= CLEAN;
				} else if (
					pending_boundary !== null &&
					(flags & (EFFECT | RENDER_EFFECT | MANAGED_EFFECT)) !== 0
				) {
					/** @type {Boundary} */ (pending_boundary.b).defer_effect(effect);
				} else if ((flags & EFFECT) !== 0) {
					effects.push(effect);
				} else if (async_mode_flag && (flags & (RENDER_EFFECT | MANAGED_EFFECT)) !== 0) {
					render_effects.push(effect);
				} else if (is_dirty(effect)) {
					if ((flags & BLOCK_EFFECT) !== 0) this.#maybe_dirty_effects.add(effect);
					update_effect(effect);
				}

				var child = effect.first;

				if (child !== null) {
					effect = child;
					continue;
				}
			}

			var parent = effect.parent;
			effect = effect.next;

			while (effect === null && parent !== null) {
				if (parent === pending_boundary) {
					pending_boundary = null;
				}

				effect = parent.next;
				parent = parent.parent;
			}
		}
	}

Domain

Subdomains

Frequently Asked Questions

What does root() do?
root() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/reactivity/batch.js.
Where is root() defined?
root() is defined in packages/svelte/src/internal/client/reactivity/batch.js at line 244.
What does root() call?
root() calls 3 function(s): defer_effect, is_dirty, update_effect.

Analyze Your Own Codebase

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

Try Supermodel Free