remotion-dev/remotion · 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.

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@46a3a6bf13 (2026-09-18). Data as JSON: /api/errors/2fb03055d91efdef. Report an issue: GitHub.

Appendix: source

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

		frame: volumePropsFrame,
		mediaVolume: 1,
	});

	warnAboutTooHighVolume(volume);
	const audioEnabled = useAudioEnabled();
	const {shouldUseAudio} = useMediaAudioState({
		muted: props.muted ?? false,
		volume,
		audioEnabled,
	});

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

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

		if (!shouldUseAudio) {
			return;
		}

		registerRenderAsset({
			type: 'video',
			src: getAbsoluteSrc(props.src),
			id,
			frame: absoluteFrame,
			volume,
			mediaFrame: frame,
			playbackRate: playbackRate ?? 1,
			toneFrequency: toneFrequency ?? 1,
			audioStartFrame: Math.max(
				0,
				-(sequenceContext?.cumulatedNegativeFrom ?? 0),

View on GitHub (pinned to 46a3a6bf13)