Home / Function/ flushSync() — svelte Function Reference

flushSync() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  5bc3c950_96f7_e454_6cb7_65ffc2179811["flushSync()"]
  d8e42d9d_2e3c_635c_19d3_b946a4341c0f["batch.js"]
  5bc3c950_96f7_e454_6cb7_65ffc2179811 -->|defined in| d8e42d9d_2e3c_635c_19d3_b946a4341c0f
  6b775363_a430_a650_b5bb_43f6c298e1fe["await_block()"]
  6b775363_a430_a650_b5bb_43f6c298e1fe -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  3991a63f_13e1_fb44_3044_00252e1380f3["flush_queued_effects()"]
  3991a63f_13e1_fb44_3044_00252e1380f3 -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  e5a062fc_3223_a0e1_88f5_b719e1456637["eager_flush()"]
  e5a062fc_3223_a0e1_88f5_b719e1456637 -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  a967b3b9_6263_60ec_74ff_b1889e66d284["fork()"]
  a967b3b9_6263_60ec_74ff_b1889e66d284 -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  a53cae39_471c_2887_0e0b_eedb385d245a["tick()"]
  a53cae39_471c_2887_0e0b_eedb385d245a -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  b72b8566_6fe5_6e9f_7848_f28f37253eff["constructor()"]
  b72b8566_6fe5_6e9f_7848_f28f37253eff -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  1edde895_4b1f_7b83_74c8_3640bf220ca9["run_test_variant()"]
  1edde895_4b1f_7b83_74c8_3640bf220ca9 -->|calls| 5bc3c950_96f7_e454_6cb7_65ffc2179811
  f618e317_1a72_981e_22c2_44b823813de7["flush_effects()"]
  5bc3c950_96f7_e454_6cb7_65ffc2179811 -->|calls| f618e317_1a72_981e_22c2_44b823813de7
  2971ce9b_3ec0_83be_f33b_e82e216aeeb3["flush_tasks()"]
  5bc3c950_96f7_e454_6cb7_65ffc2179811 -->|calls| 2971ce9b_3ec0_83be_f33b_e82e216aeeb3
  ec59c019_2fd3_2a1c_3cf5_7cd95b795a96["flush()"]
  5bc3c950_96f7_e454_6cb7_65ffc2179811 -->|calls| ec59c019_2fd3_2a1c_3cf5_7cd95b795a96
  style 5bc3c950_96f7_e454_6cb7_65ffc2179811 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/internal/client/reactivity/batch.js lines 563–599

export function flushSync(fn) {
	var was_flushing_sync = is_flushing_sync;
	is_flushing_sync = true;

	try {
		var result;

		if (fn) {
			if (current_batch !== null) {
				flush_effects();
			}

			result = fn();
		}

		while (true) {
			flush_tasks();

			if (queued_root_effects.length === 0) {
				current_batch?.flush();

				// we need to check again, in case we just updated an `$effect.pending()`
				if (queued_root_effects.length === 0) {
					// this would be reset in `flush_effects()` but since we are early returning here,
					// we need to reset it here as well in case the first time there's 0 queued root effects
					last_scheduled_effect = null;

					return /** @type {T} */ (result);
				}
			}

			flush_effects();
		}
	} finally {
		is_flushing_sync = was_flushing_sync;
	}
}

Domain

Subdomains

Frequently Asked Questions

What does flushSync() do?
flushSync() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/reactivity/batch.js.
Where is flushSync() defined?
flushSync() is defined in packages/svelte/src/internal/client/reactivity/batch.js at line 563.
What does flushSync() call?
flushSync() calls 3 function(s): flush, flush_effects, flush_tasks.
What calls flushSync()?
flushSync() is called by 7 function(s): await_block, constructor, eager_flush, flush_queued_effects, fork, run_test_variant, tick.

Analyze Your Own Codebase

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

Try Supermodel Free