remotion-dev/remotion · error · Error

No video config found

Error message

No video config found

What it means

The rendering path of `<Video>` (`VideoForRendering`) reads the active video config via `useUnsafeVideoConfig()`. If the component is mounted outside a `<Composition>` / `<Player>` context that provides a config, the value is `null` and the component throws.

Source

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

		useContext(RenderAssetManager);

	// Generate a string that's as unique as possible for this asset
	// but at the same time the same on all threads
	const id = useMemo(
		() =>
			`video-${random(
				props.src ?? '',
			)}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.relativeFrom}-${sequenceContext?.durationInFrames}`,
		[
			props.src,
			sequenceContext?.cumulatedFrom,
			sequenceContext?.relativeFrom,
			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;
		}

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Ensure `<Video>` is always rendered within a `<Composition>` (or `<Player>`).
  2. In tests, wrap the component in a `<Composition>` and use Remotion's test harness.
  3. Move the `<Video>` out of any standalone-preview code path.

Example fix

// before (standalone)
render(<Video src={url} />);
// after
render(<Composition component={() => <Video src={url} />} ... />);
Defensive patterns

Strategy: type-guard

Validate before calling

// Ensure composition context exists before mounting
import {useVideoConfig} from 'remotion';
const cfg = useVideoConfig(); // throws a clearer error if missing

Type guard

const hasVideoConfig = (): boolean => Boolean(useUnsafeVideoConfig());

Prevention

When it happens

Trigger: Rendering `<Video>` outside of any `<Composition>`, `<Player>`, or `<CurrentFrameContext>`-providing wrapper during a server render.

Common situations: Unit-testing a component that contains `<Video>` without wrapping it in a `RemotionRoot`/`Composition`, or rendering a fragment standalone.

Related errors


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