{"record":{"id":"e5a142a47c4db439","repo":"remotion-dev/remotion","slug":"unsupported-renderer-s3-status-schema-string-st","errorCode":null,"errorMessage":"Unsupported renderer S3 status schema: ${String(status.schema)}","messagePattern":"Unsupported renderer S3 status schema: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/serverless-client/src/renderer-transport.ts","lineNumber":104,"sourceCode":"const isNumber = (value: unknown): value is number =>\n\ttypeof value === 'number' && Number.isFinite(value);\n\nexport const parseS3RendererStatus = ({\n\tvalue,\n\texpectedChunk,\n\texpectedAttempt,\n}: {\n\tvalue: unknown;\n\texpectedChunk: number;\n\texpectedAttempt: number;\n}): S3RendererStatus => {\n\tif (typeof value !== 'object' || value === null) {\n\t\tthrow new Error('Renderer S3 status must be an object');\n\t}\n\n\tconst status = value as Record<string, unknown>;\n\tif (status.schema !== 1) {\n\t\tthrow new Error(\n\t\t\t`Unsupported renderer S3 status schema: ${String(status.schema)}`,\n\t\t);\n\t}\n\n\tif (status.chunk !== expectedChunk || status.attempt !== expectedAttempt) {\n\t\tthrow new Error(\n\t\t\t`Renderer S3 status identifies chunk ${String(status.chunk)}, attempt ${String(status.attempt)}; expected chunk ${expectedChunk}, attempt ${expectedAttempt}`,\n\t\t);\n\t}\n\n\tif (\n\t\ttypeof status.lambdaInvoked !== 'boolean' ||\n\t\t!isNumber(status.renderedFrames) ||\n\t\t!isNumber(status.encodedFrames) ||\n\t\t!isNumber(status.startedAt)\n\t) {\n\t\tthrow new Error('Renderer S3 status has invalid progress fields');\n\t}","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/remotion-dev/remotion/blob/10db9de07356446fb0edb3c3ae211369b693d18b/packages/serverless-client/src/renderer-transport.ts#L86-L122","documentation":"The renderer status file carries a schema field that must be exactly 1. Any other value - including undefined when the field is missing - is rejected, so the orchestrator never guesses at a payload format it does not fully understand.","triggerScenarios":"Version skew: the deployed renderer (Cloud Run image / Lambda layer) that wrote status.json is older or newer than the @remotion/serverless(-client) version parsing it - e.g. a newer schema number read by a schema-1 client, or an old renderer that predates the field entirely (undefined).","commonSituations":"Upgrading Remotion in package.json without redeploying the Cloud Run image or Lambda functions (or the reverse); mixed @remotion/* versions in a monorepo; stale deployed layers continuing to run old code.","solutions":["Align versions: set every @remotion/* package to the same version and redeploy the renderer functions/image, then re-run the render.","Run npx remotion versions to find mismatched Remotion versions across the project.","Clear the render's transport prefix in S3 and retry with a fresh renderId.","Pin exact Remotion versions (no ^ ranges) in CI to prevent partial upgrades."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# CI gate: refuse to deploy/render when Remotion versions are mixed\nnpx remotion versions\n# then, fail the pipeline unless every @remotion/* package reports the same version\nnpm ls @remotion/serverless @remotion/serverless-client @remotion/cli --depth=0","typeGuard":null,"tryCatchPattern":"try {\n  await renderMediaOnCloudRun(input);\n} catch (err) {\n  if (err.message.startsWith('Unsupported renderer S3 status schema')) {\n    throw new Error('Renderer/orchestrator version skew - redeploy functions, then retry with a fresh renderId');\n  }\n  throw err;\n}","preventionTips":["Pin every @remotion/* package to one exact version (no ^ ranges).","After upgrading, always redeploy the Cloud Run image / Lambda functions before rendering.","Run npx remotion versions as a CI check to catch partial upgrades."],"tags":["serverless","s3","version-mismatch","schema","transport"],"backgroundTag":"schema-version-mismatch","analyzedSha":"10db9de07356446fb0edb3c3ae211369b693d18b","analyzedAt":"2026-08-22T21:45:17.748Z","contentChangedAt":"2026-08-22T21:45:17.748Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}