remotion-dev/remotion · error · Error

renderMediaOnLambda() has moved to `@remotion/lambda-client`

Error message

renderMediaOnLambda() has moved to `@remotion/lambda-client`. Please import it from there.

What it means

In Remotion v5 (when NoReactInternals.ENABLE_V5_BREAKING_CHANGES is true), renderMediaOnLambda() is no longer exported as a working function from @remotion/lambda. Instead, calling it throws to force migration to @remotion/lambda-client. The function is still exported for backwards import compatibility but is a throwing stub. This is a deliberate breaking change to split the client-side rendering APIs into their own package.

Source

Thrown at packages/lambda/src/index.ts:91

import {
	LambdaInternals,
	type _InternalOverallRenderProgress,
} from './internals';

export type {WebhookPayload} from '@remotion/lambda-client';

/**
 * @deprecated Use `bundle()` from `@remotion/bundler`, then pass its output to `deploySiteFromBundle()`.
 */
const deploySite: (args: DeploySiteInput) => DeploySiteOutput =
	deploySiteImplementation;

/**
 * @deprecated Import this from `@remotion/lambda-client` instead
 */
const renderMediaOnLambda = NoReactInternals.ENABLE_V5_BREAKING_CHANGES
	? () => {
			throw new Error(
				'renderMediaOnLambda() has moved to `@remotion/lambda-client`. Please import it from there.',
			);
		}
	: deprecatedRenderMediaOnLambda;

/**
 * @deprecated Import this from `@remotion/lambda-client` instead
 */
const getRenderProgress = NoReactInternals.ENABLE_V5_BREAKING_CHANGES
	? () => {
			throw new Error(
				'getRenderProgress() has moved to `@remotion/lambda-client`. Please import it from there.',
			);
		}
	: deprecatedGetRenderProgress;

/**
 * @deprecated Import this from `@remotion/lambda-client` instead

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Import renderMediaOnLambda from @remotion/lambda-client instead of @remotion/lambda.
  2. Install @remotion/lambda-client if it is not already a dependency.
  3. Update all imports of getRenderProgress, renderStillOnLambda, presignUrl, and getSites to @remotion/lambda-client as well (they all moved).
  4. Consult the v5 migration guide for the full list of moved exports.

Example fix

// before
import {renderMediaOnLambda} from '@remotion/lambda';
const {renderId} = await renderMediaOnLambda({
  region: 'us-east-1',
  composition: myComp,
  serveUrl: 'https://...',
});

// after
import {renderMediaOnLambda} from '@remotion/lambda-client';
const {renderId} = await renderMediaOnLambda({
  region: 'us-east-1',
  composition: myComp,
  serveUrl: 'https://...',
});
Defensive patterns

Strategy: validation

Validate before calling

function assertLambdaClientImport(sourceModule: string, fnName: string): void {
  if (sourceModule === '@remotion/lambda' && NoReactInternals.ENABLE_V5_BREAKING_CHANGES) {
    throw new Error(
      `${fnName} must be imported from @remotion/lambda-client in v5.`
    );
  }
}

Prevention

When it happens

Trigger: Importing and calling renderMediaOnLambda() from @remotion/lambda in a Remotion v5 codebase where ENABLE_V5_BREAKING_CHANGES is enabled. The ternary assigns a throwing stub instead of the deprecated implementation.

Common situations: Upgrading a project from Remotion v4 to v5; code that was written against the v4 API where renderMediaOnLambda lived in @remotion/lambda; following an outdated tutorial or documentation page.

Related errors


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