Home / Function/ RenderTag() — svelte Function Reference

RenderTag() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  ed06b79a_37ce_dcd0_328f_d06d5b99809c["RenderTag()"]
  33213a93_cd07_c3e4_5bd9_38e1d3664aa0["RenderTag.js"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|defined in| 33213a93_cd07_c3e4_5bd9_38e1d3664aa0
  9bcad0f1_2e1e_1fe2_1a87_0967adb89be8["unwrap_optional()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 9bcad0f1_2e1e_1fe2_1a87_0967adb89be8
  66243dec_e2be_a66d_3992_3ea42cf964b5["build_expression()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5
  5ff7d39f_78e8_c057_8c8e_279f6e72149e["add()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 5ff7d39f_78e8_c057_8c8e_279f6e72149e
  10046df1_7862_0e3a_2d28_14faf64ff123["apply()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 10046df1_7862_0e3a_2d28_14faf64ff123
  c2ad0578_181a_4701_2788_ba3b9ab69623["deriveds()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| c2ad0578_181a_4701_2788_ba3b9ab69623
  575bfb79_8777_5076_eda3_be015882482a["add_svelte_meta()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 575bfb79_8777_5076_eda3_be015882482a
  3c8a9b45_1c84_b995_7438_57a8885c67ba["async_values()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 3c8a9b45_1c84_b995_7438_57a8885c67ba
  c8d80c9d_ab6c_13c0_c85e_a9b120f82f45["blockers()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| c8d80c9d_ab6c_13c0_c85e_a9b120f82f45
  0ded3b0c_d77a_8cc1_be19_72a1a33537da["async_ids()"]
  ed06b79a_37ce_dcd0_328f_d06d5b99809c -->|calls| 0ded3b0c_d77a_8cc1_be19_72a1a33537da
  style ed06b79a_37ce_dcd0_328f_d06d5b99809c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js lines 12–95

export function RenderTag(node, context) {
	context.state.template.push_comment();

	const call = unwrap_optional(node.expression);

	/** @type {Expression[]} */
	let args = [];

	const memoizer = new Memoizer();

	for (let i = 0; i < call.arguments.length; i++) {
		const arg = /** @type {Expression} */ (call.arguments[i]);
		const metadata = node.metadata.arguments[i];
		let expression = build_expression(context, arg, metadata);
		const memoized = memoizer.add(expression, metadata);

		if (expression !== memoized) {
			expression = b.call('$.get', memoized);
		}

		args.push(b.thunk(expression));
	}

	memoizer.apply();

	/** @type {Statement[]} */
	const statements = memoizer.deriveds(context.state.analysis.runes);

	let snippet_function = build_expression(
		context,
		/** @type {Expression} */ (call.callee),
		node.metadata.expression
	);

	if (node.metadata.dynamic) {
		// If we have a chain expression then ensure a nullish snippet function gets turned into an empty one
		if (node.expression.type === 'ChainExpression') {
			snippet_function = b.logical('??', snippet_function, b.id('$.noop'));
		}

		statements.push(
			add_svelte_meta(
				b.call('$.snippet', context.state.node, b.thunk(snippet_function), ...args),
				node,
				'render'
			)
		);
	} else {
		statements.push(
			add_svelte_meta(
				(node.expression.type === 'CallExpression' ? b.call : b.maybe_call)(
					snippet_function,
					context.state.node,
					...args
				),
				node,
				'render'
			)
		);
	}

	const async_values = memoizer.async_values();
	const blockers = memoizer.blockers();

	if (async_values || blockers) {
		context.state.init.push(
			b.stmt(
				b.call(
					'$.async',
					context.state.node,
					blockers,
					memoizer.async_values(),
					b.arrow([context.state.node, ...memoizer.async_ids()], b.block(statements))
				)
			)
		);

		if (context.state.is_standalone) {
			context.state.init.push(b.stmt(b.call('$.next')));
		}
	} else {

Domain

Subdomains

Frequently Asked Questions

What does RenderTag() do?
RenderTag() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js.
Where is RenderTag() defined?
RenderTag() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js at line 12.
What does RenderTag() call?
RenderTag() calls 9 function(s): add, add_svelte_meta, apply, async_ids, async_values, blockers, build_expression, deriveds, and 1 more.

Analyze Your Own Codebase

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

Try Supermodel Free