remotion-dev/remotion · error · Error

The <Freeze /> component requires a 'frame' prop, but none w

Error message

The <Freeze /> component requires a 'frame' prop, but none was passed.

What it means

Thrown by the <Freeze /> component when the `frame` prop is undefined. Freeze needs a concrete frame number to pin its children at; without it the component cannot operate.

Source

Thrown at packages/core/src/freeze.tsx:29

	readonly frame: number;
	readonly children: React.ReactNode;
	readonly active?: boolean | ((f: number) => boolean);
};

/*
 * @description Freezes its children at the specified frame when rendering videos.
 * @see [Documentation](https://remotion.dev/docs/freeze)
 */
export const Freeze: React.FC<FreezeProps> = ({
	frame: frameToFreeze,
	children,
	active = true,
}) => {
	const frame = useCurrentFrame();
	const videoConfig = useVideoConfig();

	if (typeof frameToFreeze === 'undefined') {
		throw new Error(
			`The <Freeze /> component requires a 'frame' prop, but none was passed.`,
		);
	}

	if (typeof frameToFreeze !== 'number') {
		throw new Error(
			`The 'frame' prop of <Freeze /> must be a number, but is of type ${typeof frameToFreeze}`,
		);
	}

	if (Number.isNaN(frameToFreeze)) {
		throw new Error(
			`The 'frame' prop of <Freeze /> must be a real number, but it is NaN.`,
		);
	}

	if (!Number.isFinite(frameToFreeze)) {
		throw new Error(

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Always pass a numeric frame prop: <Freeze frame={30}>.
  2. If frame is computed, supply a fallback: frame={computedFrame ?? 0}.
  3. Render <Freeze /> only when the frame value is known, otherwise render children directly.

Example fix

// before
<Freeze>{scene}</Freeze>

// after
<Freeze frame={30}>{scene}</Freeze>
Defensive patterns

Strategy: type-guard

Validate before calling

if (typeof frameToFreeze !== 'number') {
  // render children directly or pick a default frame
  return <>{children}</>;
}
return <Freeze frame={frameToFreeze}>{children}</Freeze>;

Type guard

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

Prevention

When it happens

Trigger: Rendering <Freeze>{children}</Freeze> without passing a `frame` prop, or passing frame={undefined} conditionally (e.g. frame={someMaybeUndefined}).

Common situations: Forgetting the frame prop; computing frame from a value that can be undefined; conditional rendering where frame is only sometimes passed.

Related errors


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