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
Source
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