remotion-dev/remotion · error · Error

Could not update sequence keyframe settings

Error message

Could not update sequence keyframe settings

What it means

Rejected by updateSequenceKeyframeSettings in @remotion/browser-studio when `result.appliedSequenceMutations[0]` is undefined — the settings-update mutation for an existing sequence keyframe (fileName + nodePath + schema + key) was not applied. It throws rather than returning a result object, so callers see a rejected promise. Typically the keyframe's addressing information no longer matches the project.

Source

Thrown at packages/browser-studio/src/browser-studio-operations.ts:1755

			});
			return {success: true};
		},
		updateSequenceKeyframeSettings: async (request) => {
			const result = await commitKeyframeMutations({
				label: `${request.key} keyframe settings`,
				sequenceMutations: [
					{
						fileName: request.fileName,
						nodePath: request.nodePath,
						schema: request.schema,
						updates: [{key: request.key, operation: request.settings}],
					},
				],
				effectMutations: [],
			});
			const mutation = result.appliedSequenceMutations[0];
			if (!mutation) {
				throw new Error('Could not update sequence keyframe settings');
			}

			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}],
					},
				],
			});

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Re-read the current node path and schema, confirm the keyframe still exists, then retry
  2. If the keyframe was deleted, close the editor / drop the pending settings change instead of retrying
  3. Wrap in try/catch and re-sync panel state on failure

Example fix

// before
await operations.keyframes.updateSequenceKeyframeSettings({
  fileName, nodePath: stale, schema: stale, key: 'scale', settings,
});

// after
try {
  await operations.keyframes.updateSequenceKeyframeSettings({
    fileName, nodePath: await currentPath(), schema: await currentSchema(),
    key: 'scale', settings,
  });
} catch {
  await reloadKeyframeEditor();
}
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await operations.keyframes.updateSequenceKeyframeSettings({fileName, nodePath, schema, key, settings});
} catch (error) {
  // keyframe or its addressing is stale; reload editor state
  await reloadKeyframeEditor();
}

Prevention

When it happens

Trigger: Calling `keyframes.updateSequenceKeyframeSettings({fileName, nodePath, schema, key, settings})` after the node or keyframe was removed, after the schema changed, or with a key that has no keyframes on that prop.

Common situations: Editing keyframe settings (e.g. interpolation/easing) in a properties panel that holds stale node paths; the user deleted the keyframe in the timeline while the panel was open; component schema changed on reload.

Related errors


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