{"record":{"id":"134714b09a193307","repo":"remotion-dev/remotion","slug":"multiple-frame-ranges-are-not-supported-on-lambda","errorCode":null,"errorMessage":"Multiple frame ranges are not supported on Lambda. Use renderMedia() locally to render multiple ranges.","messagePattern":"Multiple frame ranges are not supported on Lambda\\. Use renderMedia\\(\\) locally to render multiple ranges\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/lambda-client/src/render-media-on-lambda.ts","lineNumber":236,"sourceCode":"\t\tisProduction: options.isProduction ?? null,\n\t\tsampleRate: options.sampleRate ?? 48000,\n\t};\n};\n\nconst wrapped = wrapWithErrorHandling(internalRenderMediaOnLambdaRaw);\n\n/*\n * @description Kicks off a render process on Remotion Lambda. The progress can be tracked using getRenderProgress().\n * @see [Documentation](https://remotion.dev/docs/lambda/rendermediaonlambda)\n */\nexport const renderMediaOnLambda = (\n\toptions: RenderMediaOnLambdaInput,\n): Promise<RenderMediaOnLambdaOutput> => {\n\tif (\n\t\tArray.isArray(options.frameRange) &&\n\t\tArray.isArray(options.frameRange[0])\n\t) {\n\t\tthrow new Error(\n\t\t\t'Multiple frame ranges are not supported on Lambda. Use renderMedia() locally to render multiple ranges.',\n\t\t);\n\t}\n\n\tif (options.quality) {\n\t\tthrow new Error(\n\t\t\t'quality has been renamed to jpegQuality. Please rename the option.',\n\t\t);\n\t}\n\n\treturn wrapped(renderMediaOnLambdaOptionalToRequired(options));\n};\n\n/**\n * @deprecated Renamed to renderMediaOnLambda()\n */\nexport const renderVideoOnLambda = renderMediaOnLambda;\n","sourceCodeStart":218,"sourceCodeEnd":254,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/lambda-client/src/render-media-on-lambda.ts#L218-L254","documentation":"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.","triggerScenarios":"Calling renderMediaOnLambda with options.frameRange shaped like [[0,30],[60,90]] — i.e., Array.isArray(frameRange) && Array.isArray(frameRange[0]).","commonSituations":"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.","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."],"exampleFix":"// before\nawait renderMediaOnLambda({\n  composition: 'MyVideo',\n  frameRange: [[0, 30], [60, 90]], // multiple ranges\n});\n\n// after\nawait renderMediaOnLambda({\n  composition: 'MyVideo',\n  frameRange: [0, 30], // single range\n});","handlingStrategy":"type-guard","validationCode":"// Reject nested frame ranges before calling Lambda\nfunction isSingleRange(r: unknown): boolean {\n  return typeof r === 'number' ||\n    (Array.isArray(r) && r.length === 2 && r.every(v => typeof v === 'number'));\n}\nif (!isSingleRange(opts.frameRange)) {\n  throw new Error('Multiple frame ranges are unsupported on Lambda');\n}","typeGuard":"const isSingleFrameRange = (r: unknown): r is number | [number, number] =>\n  typeof r === 'number' ||\n  (Array.isArray(r) && r.length === 2 && r.every(n => typeof n === 'number'));","tryCatchPattern":null,"preventionTips":["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."],"tags":["lambda","frame-range","input-validation","render"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}