remotion-dev/remotion · error · Error
Multiple frame ranges are not supported on Lambda. Use rende
Error message
Multiple frame ranges are not supported on Lambda. Use renderMedia() locally to render multiple ranges.
What it means
renderMediaOnLambda validates the input before invoking Lambda: if options.frameRange is a 2D array (Array of arrays), it means the caller passed MULTIPLE frame ranges, which Lambda does not support. The error tells the user to use local renderMedia() for multi-range rendering.
Source
Thrown at packages/lambda-client/src/render-media-on-lambda.ts:236
isProduction: options.isProduction ?? null,
sampleRate: options.sampleRate ?? 48000,
};
};
const wrapped = wrapWithErrorHandling(internalRenderMediaOnLambdaRaw);
/*
* @description Kicks off a render process on Remotion Lambda. The progress can be tracked using getRenderProgress().
* @see [Documentation](https://remotion.dev/docs/lambda/rendermediaonlambda)
*/
export const renderMediaOnLambda = (
options: RenderMediaOnLambdaInput,
): Promise<RenderMediaOnLambdaOutput> => {
if (
Array.isArray(options.frameRange) &&
Array.isArray(options.frameRange[0])
) {
throw new Error(
'Multiple frame ranges are not supported on Lambda. Use renderMedia() locally to render multiple ranges.',
);
}
if (options.quality) {
throw new Error(
'quality has been renamed to jpegQuality. Please rename the option.',
);
}
return wrapped(renderMediaOnLambdaOptionalToRequired(options));
};
/**
* @deprecated Renamed to renderMediaOnLambda()
*/
export const renderVideoOnLambda = renderMediaOnLambda;
View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Pass a single frame range to renderMediaOnLambda, e.g. frameRange: [0, 30] or frameRange: 10.
- If you truly need multiple ranges, call renderMedia() locally instead of renderMediaOnLambda().
- Flatten your range-generation logic to produce a single range for Lambda renders.
Example fix
// before
await renderMediaOnLambda({
composition: 'MyVideo',
frameRange: [[0, 30], [60, 90]], // multiple ranges
});
// after
await renderMediaOnLambda({
composition: 'MyVideo',
frameRange: [0, 30], // single range
}); Defensive patterns
Strategy: type-guard
Validate before calling
// Reject nested frame ranges before calling Lambda
function isSingleRange(r: unknown): boolean {
return typeof r === 'number' ||
(Array.isArray(r) && r.length === 2 && r.every(v => typeof v === 'number'));
}
if (!isSingleRange(opts.frameRange)) {
throw new Error('Multiple frame ranges are unsupported on Lambda');
} Type guard
const isSingleFrameRange = (r: unknown): r is number | [number, number] => typeof r === 'number' || (Array.isArray(r) && r.length === 2 && r.every(n => typeof n === 'number'));
Prevention
- Reuse a single-range type for Lambda render configs.
- If you generate ranges programmatically, assert there is exactly one before the Lambda call.
- Keep multi-range rendering on the local renderMedia() path.
When it happens
Trigger: Calling renderMediaOnLambda with options.frameRange shaped like [[0,30],[60,90]] — i.e., Array.isArray(frameRange) && Array.isArray(frameRange[0]).
Common situations: Copying a local renderMedia() call (which supports multiple ranges) verbatim into a Lambda render; generating frame ranges programmatically and producing nested arrays; migrating from local CLI renderMedia to Lambda without collapsing the ranges.
Related errors
- Multiple frame ranges are not supported on Cloud Run. Use re
- Comma-separated frame selections are only supported by the l
- Render did not finish yet
- Comma-separated frame selections are only supported by the l
- quality has been renamed to jpegQuality. Please rename the o
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/134714b09a193307.
Report an issue: GitHub.