remotion-dev/remotion · error · Error

No video config found. Likely reasons:- You are probably cal

Error message

No video config found. Likely reasons:- You are probably calling useVideoConfig() from outside the component passed to <Player />. See https://www.remotion.dev/docs/player/examples for how to set up the Player correctly.- You have multiple versions of Remotion installed which causes the React context to get lost.

What it means

useVideoConfig throws this Player-specific variant when no video config is found and the code detects it is running inside @remotion/player (window.remotion_isPlayer or useIsPlayer true). It means useVideoConfig was called from a component that is not a descendant of the component passed to <Player component={...}/>, or that multiple Remotion versions split the context.

Source

Thrown at packages/core/src/use-video-config.ts:21

import {useIsPlayer} from './is-player.js';
import {useUnsafeVideoConfig} from './use-unsafe-video-config.js';
import type {VideoConfig} from './video-config.js';

/*
 * @description Retrieves information about the composition context in which it is used, including dimensions, frame rate, duration, and more.
 * @see [Documentation](https://www.remotion.dev/docs/use-video-config)
 */
export const useVideoConfig = (): VideoConfig => {
	const videoConfig = useUnsafeVideoConfig();
	const context = useContext(CanUseRemotionHooks);
	const isPlayer = useIsPlayer();

	if (!videoConfig) {
		if (
			(typeof window !== 'undefined' && window.remotion_isPlayer) ||
			isPlayer
		) {
			throw new Error(
				[
					'No video config found. Likely reasons:',
					'- You are probably calling useVideoConfig() from outside the component passed to <Player />. See https://www.remotion.dev/docs/player/examples for how to set up the Player correctly.',
					'- You have multiple versions of Remotion installed which causes the React context to get lost.',
				].join('-'),
			);
		}

		throw new Error(
			'No video config found. You are probably calling useVideoConfig() from a component which has not been registered as a <Composition />. See https://www.remotion.dev/docs/the-fundamentals#defining-compositions for more information.',
		);
	}

	if (!context) {
		throw new Error('Called useVideoConfig() outside a Remotion composition.');
	}

	return videoConfig;

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Move the useVideoConfig() call inside the component you pass to <Player component={...}>.
  2. Deduplicate Remotion: `npm ls @remotion/core` should show one version; add overrides/resolutions if multiple resolve.
  3. Confirm the component passed to <Player> is the same component (or a descendant) that calls useVideoConfig.
  4. See https://www.remotion.dev/docs/player/examples for the correct Player wiring.

Example fix

// before
function Outer() {
  const {fps} = useVideoConfig(); // outside Player subtree
  return <Player component={Inner} {...props} />;
}

// after
function Inner() {
  const {fps} = useVideoConfig();
  return <h1>{fps}</h1>;
}
function Outer() {
  return <Player component={Inner} {...props} />;
}
Defensive patterns

Strategy: validation

Validate before calling

// Move useVideoConfig() inside the component passed to <Player>.
// Dedupe Remotion: ensure `npm ls @remotion/core` shows one version.

Prevention

When it happens

Trigger: Calling useVideoConfig in a sibling/parent of the Player's child component rather than inside it; rendering the Player and a separate component tree that shares a hook; duplicate @remotion/core copies so the Player's provider does not reach the hook.

Common situations: Extracting a hook call outside the component passed to <Player>; HOCs that call useVideoConfig before the Player subtree mounts; monorepo with mismatched @remotion versions across packages; bundler dedupe issues.

Related errors


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