remotion-dev/remotion · error · Error

Renderer S3 status has invalid progress fields

Error message

Renderer S3 status has invalid progress fields

What it means

The base fields of every renderer status are validated: lambdaInvoked must be a boolean, and renderedFrames, encodedFrames, startedAt must be finite numbers (the isNumber helper rejects NaN, Infinity, and non-numbers). Missing fields (undefined) or numbers serialized as strings fail this check.

Source

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

	if (status.schema !== 1) {
		throw new Error(
			`Unsupported renderer S3 status schema: ${String(status.schema)}`,
		);
	}

	if (status.chunk !== expectedChunk || status.attempt !== expectedAttempt) {
		throw new Error(
			`Renderer S3 status identifies chunk ${String(status.chunk)}, attempt ${String(status.attempt)}; expected chunk ${expectedChunk}, attempt ${expectedAttempt}`,
		);
	}

	if (
		typeof status.lambdaInvoked !== 'boolean' ||
		!isNumber(status.renderedFrames) ||
		!isNumber(status.encodedFrames) ||
		!isNumber(status.startedAt)
	) {
		throw new Error('Renderer S3 status has invalid progress fields');
	}

	if (status.state === 'running') {
		return status as S3RendererStatus;
	}

	if (status.state === 'completed') {
		if (
			status.lambdaInvoked !== true ||
			!isNumber(status.completedAt) ||
			!(typeof status.videoKey === 'string' || status.videoKey === null) ||
			!(typeof status.audioKey === 'string' || status.audioKey === null) ||
			!Array.isArray(status.artifacts)
		) {
			throw new Error('Renderer S3 completed status is invalid');
		}

		for (const artifact of status.artifacts) {

View on GitHub (pinned to 10db9de073)

Solutions

  1. Inspect the status.json body - confirm the four fields exist with the correct primitive types.
  2. Delete the render's transport prefix and retry with a fresh renderId.
  3. Align @remotion/* versions and redeploy the renderer functions/image.
  4. If reproducible, capture the body and report it as a Remotion bug.
Defensive patterns

Strategy: retry

Validate before calling

# Inspect the field types the parser rejected
aws s3 cp "s3://$BUCKET/renders/$RENDER_ID/transport/chunks/$CHUNK/attempt-$ATTEMPT/status.json" - \
  | jq '{lambdaInvoked, renderedFrames, encodedFrames, startedAt}'

Try / catch

try {
  await renderMediaOnCloudRun({...input, renderId: makeRenderId()});
} catch (err) {
  if (err.message.includes('Renderer S3 status has invalid progress fields')) {
    // corrupt status payload - sweep prefix, retry with fresh renderId
    await renderMediaOnCloudRun({...input, renderId: makeRenderId()});
  } else {
    throw err;
  }
}

Prevention

When it happens

Trigger: A truncated or corrupted status.json upload; a status written by a version-skewed renderer using different field names; NaN leaking into frame counters from a broken renderer build.

Common situations: Interrupted multipart uploads of small objects; mixed Remotion versions between renderer and orchestrator; exotic S3-compatible storage corrupting objects under load.

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/25fac08d29d8aa00. Report an issue: GitHub.