remotion-dev/remotion · warning · Error
Browser Studio does not support saving sequence keyframes ye
Error message
Browser Studio does not support saving sequence keyframes yet
What it means
saveSequencePropsInProject explicitly rejects any SaveSequencePropsRequest that contains keyframe changes (detected via hasKeyframeChanges). Browser Studio has not implemented persisting sequence keyframes yet, so this is a capability gate rather than a user-correctable input error. Non-keyframe prop edits and caption patches are still allowed.
Source
Thrown at packages/browser-studio/src/save-sequence-props.ts:77
JSON.stringify(target.nodePath),
target,
]),
).values(),
];
};
export const saveSequencePropsInProject = ({
project,
request,
}: {
project: VirtualProject;
request: SaveSequencePropsRequest;
}): {
project: VirtualProject;
response: SaveSequencePropsResponse;
} => {
if (hasKeyframeChanges(request)) {
throw new Error(
'Browser Studio does not support saving sequence keyframes yet',
);
}
if (
request.edits.length === 0 &&
(request.captionPatches?.length ?? 0) === 0
) {
throw new Error('No sequence prop edits to save');
}
const mutations = new Map<string, FileMutation>();
for (const edit of request.edits) {
const absolutePath = findProjectFile({
filePath: edit.fileName,
project,
});
getFileMutation(mutations, absolutePath).edits.push(edit);View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Filter out keyframe-bearing edits before calling saveSequenceProps (only send static prop edits and caption patches).
- Disable the keyframe-recording UI in Browser Studio until persistence is supported.
- Use the desktop Remotion Studio if keyframe persistence is required.
- Track this as a known limitation and surface an in-UI message instead of letting the throw propagate.
Example fix
// before
saveSequencePropsInProject({project, request}); // request contains keyframes
// after
const stripped = {...request, edits: request.edits.filter((e) => !isKeyframeEdit(e))};
saveSequencePropsInProject({project, request: stripped}); Defensive patterns
Strategy: validation
Validate before calling
// Strip keyframe-bearing edits before calling saveSequenceProps
const requestWithoutKeyframes: SaveSequencePropsRequest = {
...request,
edits: request.edits.filter((e) => !isKeyframeEdit(e)),
captionPatches: (request.captionPatches ?? []).filter((c) => !isKeyframeEdit(c)),
};
if (requestWithoutKeyframes.edits.length === 0 &&
(requestWithoutKeyframes.captionPatches?.length ?? 0) === 0) {
// nothing savable — inform user instead of calling
} Type guard
const hasNoKeyframeChanges = (req: SaveSequencePropsRequest): boolean => !hasKeyframeChanges(req);
Try / catch
try {
saveSequencePropsInProject({project, request});
} catch (err) {
if (String(err?.message ?? '').includes('does not support saving sequence keyframes')) {
// inform user keyframes can't be saved in Browser Studio yet; do not retry unchanged
} else throw err;
} Prevention
- Do not enable keyframe recording in Browser Studio until persistence is supported.
- Filter keyframe edits out of save requests before sending.
- Surface this as an in-UI 'unsupported feature' notice rather than an error toast.
- Use desktop Studio when keyframe persistence is required.
When it happens
Trigger: Calling saveSequenceProps with an edits/captionPatches payload that includes keyframe changes — e.g. the user animated a prop and the Studio sent the keyframes to be saved.
Common situations: A UI flow that records keyframes (visual-mode timeline editing) attempting to persist them; new feature work that produces keyframe diffs before the save path supports them; client and server capability mismatch after an upgrade.
Related errors
- Invalid public file path: ${path}
- ${oldRelativePath} does not exist
- ${newRelativePath} already exists
- No published version is known for ${name}
- The repository package ${packageName} does not expose ${subp
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/d0e40683b1cf7fa5.
Report an issue: GitHub.