remotion-dev/remotion · error · Error
Could not update effect keyframe settings
Error message
Could not update effect keyframe settings
What it means
Rejected by updateEffectKeyframeSettings in @remotion/browser-studio when `result.appliedEffectMutations[0]` is undefined — the settings update for an effect keyframe addressed by (fileName, sequenceNodePath, effectIndex, key) was not applied. The promise rejects because this keyframe API throws instead of returning `{success: false}`.
Source
Thrown at packages/browser-studio/src/browser-studio-operations.ts:1776
return getSequenceKeyframeResponse({mutation, project: result.project});
},
updateEffectKeyframeSettings: async (request) => {
const result = await commitKeyframeMutations({
label: `${request.key} effect keyframe settings`,
sequenceMutations: [],
effectMutations: [
{
fileName: request.fileName,
sequenceNodePath: request.sequenceNodePath,
effectIndex: request.effectIndex,
schema: request.schema,
updates: [{key: request.key, operation: request.settings}],
},
],
});
const mutation = result.appliedEffectMutations[0];
if (!mutation) {
throw new Error('Could not update effect keyframe settings');
}
return getEffectKeyframeResponse({mutation, project: result.project});
},
batchUpdateKeyframeSettings: async ({
sequenceKeyframes,
effectKeyframes,
}) => {
await commitKeyframeMutations({
label: `${sequenceKeyframes.length + effectKeyframes.length} keyframe settings`,
sequenceMutations: sequenceKeyframes.map((keyframe) => ({
fileName: keyframe.fileName,
nodePath: keyframe.nodePath,
schema: keyframe.schema,
updates: [{key: keyframe.key, operation: keyframe.settings}],
})),
effectMutations: effectKeyframes.map((keyframe) => ({
fileName: keyframe.fileName,View on GitHub (pinned to b2f4e34732)
Solutions
- Re-resolve the sequence node path and effect index from current state and retry
- Verify the target keyframe still exists before opening the settings editor
- Catch the rejection and refresh effect state so the user can retry with valid targets
Example fix
// before
await operations.keyframes.updateEffectKeyframeSettings({
fileName, sequenceNodePath: stale, effectIndex: 0, schema: stale, key: 'blur', settings,
});
// after
const target = await resolveEffectKeyframeTarget();
if (target === null) return; // keyframe gone, nothing to update
await operations.keyframes.updateEffectKeyframeSettings({
fileName, sequenceNodePath: target.nodePath, effectIndex: target.effectIndex,
schema: target.schema, key: 'blur', settings,
}); Defensive patterns
Strategy: try-catch
Try / catch
try {
await operations.keyframes.updateEffectKeyframeSettings({fileName, sequenceNodePath, effectIndex, schema, key, settings});
} catch (error) {
await refreshEffectKeyframes();
} Prevention
- Invalidate cached (sequenceNodePath, effectIndex) pairs whenever the effect stack changes
- Save settings immediately after the user edits them rather than deferring across other mutations
When it happens
Trigger: Calling `keyframes.updateEffectKeyframeSettings({fileName, sequenceNodePath, effectIndex, schema, key, settings})` with a stale sequenceNodePath, an effectIndex that no longer targets the same effect, or a schema that no longer matches the effect's parameters.
Common situations: Effects were added/removed so indexes shifted; node path stale after undo/redo; the effect keyframe was already deleted when the settings save fired.
Related errors
- Could not add effect keyframe
- Could not update sequence keyframe settings
- Could not add sequence keyframe
- Could not reorder sequence
- Could not split video from audio
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-08-22).
Data as JSON: /api/errors/0d3f0f109f8e1343.
Report an issue: GitHub.