remotion-dev/remotion · error · Error

Renderer S3 failed status is invalid

Error message

Renderer S3 failed status is invalid

What it means

When status.state is 'failed', the parser requires failedAt to be a finite number, shouldRetry a boolean, and errorInfo a non-null object. These fields carry the renderer's real error back to the orchestrator, so a malformed failed status masks the original failure with this validation error.

Source

Thrown at packages/serverless-client/src/renderer-transport.ts:172

					candidate.metadata.downloadBehavior === null ||
					typeof candidate.metadata.downloadBehavior === 'object'
				)
			) {
				throw new Error('Renderer S3 completed status has an invalid artifact');
			}
		}

		return status as S3RendererStatus;
	}

	if (status.state === 'failed') {
		if (
			!isNumber(status.failedAt) ||
			typeof status.shouldRetry !== 'boolean' ||
			typeof status.errorInfo !== 'object' ||
			status.errorInfo === null
		) {
			throw new Error('Renderer S3 failed status is invalid');
		}

		return status as S3RendererStatus;
	}

	throw new Error(`Unknown renderer S3 status state: ${String(status.state)}`);
};

View on GitHub (pinned to 10db9de073)

Solutions

  1. Inspect status.json - the malformed failure payload may still contain traces of the underlying renderer error.
  2. Check the renderer function's CloudWatch/run logs for the true error - a failed status exists because the render already failed once.
  3. Fix the underlying render failure, then retry with a fresh renderId.
  4. Align @remotion/* versions and redeploy the renderers.
Defensive patterns

Strategy: retry

Validate before calling

# Inspect the failed payload - traces of the true renderer error may survive
aws s3 cp "s3://$BUCKET/renders/$RENDER_ID/transport/chunks/$CHUNK/attempt-$ATTEMPT/status.json" - \
  | jq '{state, failedAt, shouldRetry, errorInfo}'

Try / catch

try {
  await renderMediaOnCloudRun({...input, renderId: makeRenderId()});
} catch (err) {
  if (err.message.includes('Renderer S3 failed status is invalid')) {
    // the render failed AND its error report is corrupt - check renderer logs,
    // fix the root cause, then retry with a fresh renderId
    throw new Error('Renderer failed with an unreadable error report - inspect function logs');
  }
  throw err;
}

Prevention

When it happens

Trigger: A crashed or OOM-killed renderer wrote a partial failed status (errorInfo truncated or missing); version skew changed the failure payload shape between renderer and orchestrator.

Common situations: Renderer processes dying mid-write; mixed Remotion versions; interrupted uploads of the status object right at failure time.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


AI-assisted analysis of remotion-dev/remotion@10db9de073 (2026-08-22). Data as JSON: /api/errors/c0707a577dade85e. Report an issue: GitHub.