remotion-dev/remotion · error · Error
Renderer completed manifest references missing artifact obje
Error message
Renderer completed manifest references missing artifact object ${artifact.key} What it means
In @remotion/serverless's s3Renderer (the S3 transport used for serverless/Cloud Run rendering), once the renderer's status.json reports state 'completed', the orchestrator downloads every artifact key listed there (files the render emitted via onArtifact). If reading a key fails with a missing-object error (isMissingObjectError, i.e. S3 NoSuchKey/404), this error is thrown instead of the raw AWS error: the renderer declared an artifact that does not exist in the bucket.
Source
Thrown at packages/serverless/src/stream-renderer.ts:419
}
if (status.state === 'completed') {
const downloadedKeys: string[] = [];
const emittedArtifacts: EmittedArtifact[] = [];
for (const artifact of status.artifacts) {
let artifactStream;
try {
artifactStream = await providerSpecifics.readFile({
bucketName: payload.bucketName,
key: artifact.key,
region,
expectedBucketOwner,
forcePathStyle: payload.forcePathStyle,
requestHandler,
});
} catch (err) {
if (isMissingObjectError(err)) {
throw new Error(
`Renderer completed manifest references missing artifact object ${artifact.key}`,
);
}
throw err;
}
emittedArtifacts.push(
artifactFromS3({
metadata: artifact.metadata,
content: await readStreamAsBytes(artifactStream),
}),
);
downloadedKeys.push(artifact.key);
}
const downloadedFiles: string[] = [];
for (const [type, key] of [View on GitHub (pinned to b2f4e34732)
Solutions
- Retry the render with a fresh renderId - a partially completed manifest cannot be repaired mid-flight.
- Check the bucket's lifecycle configuration and ensure nothing expires or transitions objects under the renders/ prefix while renders are in progress.
- Ensure every render gets a unique renderId and never reuse one while artifacts from a previous attempt are still being cleaned up.
- Inspect the renderer function's logs for upload errors around the artifact key named in the message.
- If artifacts consistently disappear with matching versions and clean lifecycle rules, report it as a Remotion bug with the renderId.
Defensive patterns
Strategy: retry
Validate before calling
# Pre-render check: nothing may expire or transition render objects mid-render
aws s3api get-bucket-lifecycle-configuration --bucket "$BUCKET" \
| jq '.Rules[] | select(.Filter | tostring | contains("renders"))' \
| grep . && echo "WARNING: lifecycle rule touches renders/ prefix" || echo "renders/ prefix safe" Try / catch
try {
await renderMediaOnCloudRun({...input, renderId: makeRenderId()});
} catch (err) {
if (err.message.includes('manifest references missing artifact object')) {
// orphaned/partial manifest - clean prefix and retry once with a fresh renderId
await deleteRenderFolder(bucketName, renderId);
await renderMediaOnCloudRun({...input, renderId: makeRenderId()});
} else {
throw err;
}
} Prevention
- Always generate a unique renderId per attempt; never reuse one while a previous attempt's artifacts are being cleaned up.
- Keep S3 lifecycle rules away from the renders/ prefix, or make expiration far longer than your longest render.
- Treat any 'missing object referenced by manifest' error as a poisoned attempt - retry fresh rather than resuming.
When it happens
Trigger: The renderer wrote status.json='completed' before all artifact uploads finished (or an artifact upload failed silently); a bucket lifecycle rule deleted objects under the render prefix mid-render; two renders reused the same renderId/bucket paths so one render's cleanup deleted the other's objects.
Common situations: Aggressive S3 lifecycle expiration (e.g. expire after 1 day) racing long renders; retry logic reusing the same renderId; cross-account bucket setups making some keys invisible; interrupted renderer instances leaving a manifest that references uploads that never landed.
Related errors
- Renderer completed manifest references missing media object
- Renderer S3 completed status has an invalid artifact
- Emitting artifacts is not supported in Cloud Run
- Emitting artifacts is not supported in Cloud Run
- The "filename" must be a string, but you passed a value of t
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-08-22).
Data as JSON: /api/errors/42764b7702269ca0.
Report an issue: GitHub.