remotion-dev/remotion · error
The provider does not support conditional output uploads
Error message
The provider does not support conditional output uploads
What it means
finishRender uploads the render output via providerSpecifics.writeFileIfNotExists when renderMetadata.outputFileIsConditional is set (conditional upload: fail if output already exists). If the active provider does not implement writeFileIfNotExists, conditional output uploads cannot be honored and the library throws this error instead of silently doing an unconditional upload.
Source
Thrown at packages/serverless/src/finish-render.ts:84
);
const writeOptions: WriteFileInput<Provider> = {
bucketName: renderBucketName,
key,
body: fs.createReadStream(outputFile),
region: insideFunctionSpecifics.getCurrentRegionInFunction(),
privacy,
expectedBucketOwner,
downloadBehavior,
customCredentials,
forcePathStyle,
storageClass,
requestHandler,
};
if (renderMetadata.outputFileIsConditional) {
if (!providerSpecifics.writeFileIfNotExists) {
throw new Error(
'The provider does not support conditional output uploads',
);
}
await providerSpecifics.writeFileIfNotExists(writeOptions);
} else {
await providerSpecifics.writeFile(writeOptions);
}
writeToBucket.end();
const errorExplanations = inspectErrors({
errors: overallProgress.get().errors,
});
const cleanupProm = cleanupProps({
inputProps,
serializedResolvedProps,View on GitHub (pinned to b2f4e34732)
Solutions
- Start the render without the conditional output (ifNotExists) option so the regular write path is used
- Use the AWS Lambda provider, which implements writeFileIfNotExists
- Implement writeFileIfNotExists in your custom provider's providerSpecifics
- Upgrade the provider package to a version supporting conditional uploads
Example fix
// before
await renderMediaOnLambda({
...params,
outputIsIfNotExists: true,
});
// after
await renderMediaOnLambda({
...params,
outputIsIfNotExists: false,
}); Defensive patterns
Strategy: validation
Validate before calling
if (renderMetadata.outputFileIsConditional && !providerSpecifics.writeFileIfNotExists) {
throw new Error('Selected provider cannot honor conditional output uploads; disable the option or switch providers.');
} Type guard
const providerSupportsConditional = (p: unknown): p is {writeFileIfNotExists: (o: unknown) => Promise<void>} => typeof (p as {writeFileIfNotExists?: unknown}).writeFileIfNotExists === 'function'; Try / catch
try {
await finishRender(args);
} catch (err) {
if (String(err).includes('conditional output uploads')) {
await finishRender({...args, renderMetadata: {...args.renderMetadata, outputFileIsConditional: false}});
} else {
throw err;
}
} Prevention
- Keep provider metadata and the finishing provider consistent (same provider start-to-finish)
- Use the AWS provider when enabling conditional output uploads
- Feature-detect providerSpecifics.writeFileIfNotExists before enabling the option
- Pin @remotion packages to matching versions so provider capabilities align
When it happens
Trigger: A render whose metadata marks the output file as conditional (renderMediaOnLambda with conditional/ifNotExists output) being finished by a provider plugin that does not export writeFileIfNotExists in its providerSpecifics.
Common situations: Using a custom or third-party serverless provider (non-AWS) that lacks conditional-write support while the render was started with conditional output enabled; mixing render metadata from one provider with another provider's finish step.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Renderer S3 status must be an object
- Unsupported renderer S3 status schema: ${String(status.schem
- Renderer S3 status identifies chunk ${String(status.chunk)},
- Renderer S3 status has invalid progress fields
- Renderer S3 completed status is invalid
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09).
Data as JSON: /api/errors/2366ecd289f02e4a.
Report an issue: GitHub.