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

  1. Re-resolve the sequence node path and effect index from current state and retry
  2. Verify the target keyframe still exists before opening the settings editor
  3. 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

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


AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-08-22). Data as JSON: /api/errors/0d3f0f109f8e1343. Report an issue: GitHub.