remotion-dev/remotion · error · TypeError

The "freeze" prop of <Sequence /> must be a number, but is o

Error message

The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof freeze}.

What it means

Thrown when the freeze prop of <Sequence> is defined (not undefined/null) but is not a number. freeze pins playback at a specific frame, so a non-number makes the freeze point indeterminate.

Source

Thrown at packages/core/src/Sequence.tsx:256

			`The "trimBefore" prop of <Sequence /> must be greater than or equal to 0, but got ${trimBefore}.`,
		);
	}

	if (Number.isNaN(trimBefore)) {
		throw new TypeError(
			'The "trimBefore" prop of <Sequence /> must be a real number, but it is NaN.',
		);
	}

	if (!Number.isFinite(trimBefore)) {
		throw new TypeError(
			`The "trimBefore" prop of <Sequence /> must be finite, but it is ${trimBefore}.`,
		);
	}

	if (typeof freeze !== 'undefined' && freeze !== null) {
		if (typeof freeze !== 'number') {
			throw new TypeError(
				`The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof freeze}.`,
			);
		}

		if (Number.isNaN(freeze)) {
			throw new TypeError(
				`The "freeze" prop of <Sequence /> must be a real number, but it is NaN.`,
			);
		}

		if (!Number.isFinite(freeze)) {
			throw new TypeError(
				`The "freeze" prop of <Sequence /> must be finite, but it is ${freeze}.`,
			);
		}
	}

	const absoluteFrame = useTimelinePosition();

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Pass a concrete frame number: freeze={30}.
  2. Coerce when reading from external sources: freeze={Number(rawFreeze)}.
  3. Omit freeze entirely when freezing is not desired, rather than passing a sentinel.

Example fix

// before
<Sequence freeze={config.freezeFrame} />

// after
<Sequence freeze={config.freezeFrame ? Number(config.freezeFrame) : undefined} />
Defensive patterns

Strategy: type-guard

Validate before calling

const freeze = typeof rawFreeze === 'number' ? rawFreeze : undefined;

Type guard

const isFreezeFrame = (v: unknown): v is number =>
  typeof v === 'number' && Number.isFinite(v);

Prevention

When it happens

Trigger: Passing freeze="10" (string), freeze={true}, freeze={someObject}, or any non-number truthy value to <Sequence>.

Common situations: Loading freeze from config as a string; conditional freeze={condition} where condition is boolean instead of a frame number; mis-spelling a related prop.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/55b925e1d565b574. Report an issue: GitHub.