remotion-dev/remotion · error · Error
No effects were specified for deletion
Error message
No effects were specified for deletion
What it means
deleteEffects guards against no-op requests: an empty request array means there is nothing to delete, so it throws immediately. The throw happens inside the operation's try block and is returned to the caller as a structured error result (via getStructuredError), not as a rejected promise.
Source
Thrown at packages/browser-studio/src/browser-studio-operations.ts:916
});
controller.applyMutation({
timelineSelection: null,
fileName: absolutePath,
nodePathMutationFiles: null,
mutate: () => ({
...project,
files: {...project.files, [absolutePath]: result.output},
}),
});
return {success: true};
} catch (error) {
return getStructuredError(error);
}
},
deleteEffects: async (request) => {
try {
if (request.length === 0) {
throw new Error('No effects were specified for deletion');
}
const project = getProject();
const groups = new Map<
string,
Array<
| {
type: 'single-effect';
effectIndex: number;
sequenceNodePath: SequenceNodePath;
}
| {type: 'all-effects'; sequenceNodePath: SequenceNodePath}
>
>();
for (const item of request) {
const absolutePath = findProjectFile({
filePath: item.fileName,
project,View on GitHub (pinned to b2f4e34732)
Solutions
- Check request.length > 0 before calling deleteEffects.
- Fix the selection logic that produced an empty delete list.
- Disable the delete action in the UI when no effects are selected.
Example fix
// before
await operations.effect.deleteEffects(selected);
// after
if (selected.length > 0) {
await operations.effect.deleteEffects(selected);
} Defensive patterns
Strategy: validation
Validate before calling
if (request.length > 0) {
const result = await operations.effect.deleteEffects(request);
} Type guard
const isNonEmptyDeleteEffectsRequest = (
request: unknown[],
): request is Array<{fileName: string; sequenceNodePath: SequenceNodePath}> =>
Array.isArray(request) && request.length > 0; Prevention
- Bind delete buttons to selection length so they cannot fire with an empty list.
- Treat empty delete batches as a successful no-op in calling code.
When it happens
Trigger: Calling effectOperations.deleteEffects([]) — e.g. a bulk-delete UI action where every selected effect was deselected or filtered out before the call.
Common situations: Select-none-then-delete flows; clear-all-effects buttons that compute the selection list incorrectly; defensive callers passing an array they never checked.
Related errors
- No effects were specified for duplication
- No effect prop edits to save
- <Solid>: `pixelDensity` must be a positive finite number. Re
- "${name}" must be greater than 0, but got ${JSON.stringify(v
- "${name}" must be greater than or equal to 0, but got ${JSON
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-08-22).
Data as JSON: /api/errors/39cc0674ac02c0b6.
Report an issue: GitHub.