remotion-dev/remotion · error · Error

No src passed

Error message

No src passed

What it means

`VideoForRendering` throws inside its `useEffect` if `props.src` is falsy, because audio asset registration and frame seeking both require a source URL. The throw happens after mount, during the effect run.

Source

Thrown at packages/core/src/video/VideoForRendering.tsx:109

			sequenceContext?.durationInFrames,
		],
	);

	if (!videoConfig) {
		throw new Error('No video config found');
	}

	const volume = evaluateVolume({
		volume: volumeProp,
		frame: volumePropsFrame,
		mediaVolume: 1,
	});

	warnAboutTooHighVolume(volume);

	useEffect(() => {
		if (!props.src) {
			throw new Error('No src passed');
		}

		if (props.muted) {
			return;
		}

		if (volume <= 0) {
			return;
		}

		if (!window.remotion_audioEnabled) {
			return;
		}

		registerRenderAsset({
			type: 'video',
			src: getAbsoluteSrc(props.src),
			id,

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Always pass a non-empty `src` string to `<Video>`.
  2. Conditionally mount: `{url && <Video src={url} />}`.
  3. Use static typing to make `src` required at the call site.

Example fix

// before
<Video src={maybeUrl} />
// after
{maybeUrl && <Video src={maybeUrl} />}
Defensive patterns

Strategy: type-guard

Validate before calling

if (!src || typeof src !== 'string') {
  return null;
}

Type guard

const hasSrc = (p: {src?: unknown}): p is {src: string} => typeof p.src === 'string' && p.src.length > 0;

Prevention

When it happens

Trigger: Rendering `<Video>` without a `src`, or with `src={undefined}` / `src={''}` during a server render.

Common situations: Conditional src that resolves late, or destructuring an asset payload that omits the URL.

Related errors


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