remotion-dev/remotion · error · Error

Could not find folder "${codemod.folderName}"

Error message

Could not find folder "${codemod.folderName}"

What it means

resolveCodemodTargetFile handles rename-folder and delete-folder codemods by resolving the folder to a file via getFolderFile({folderName, project}). If no file in the VirtualProject declares that folder, the lookup returns null and this error is thrown with the folder name in quotes.

Source

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

	}

	const compositionId = getCodemodTargetCompositionId(codemod);
	if (compositionId !== null) {
		const compositionFile = getCompositionFile({compositionId, project});
		if (compositionFile === null) {
			throw new Error(`Could not find composition "${compositionId}"`);
		}

		return findProjectFile({filePath: compositionFile, project});
	}

	if (codemod.type === 'rename-folder' || codemod.type === 'delete-folder') {
		const folderFile = getFolderFile({
			folderName: codemod.folderName,
			project,
		});
		if (folderFile === null) {
			throw new Error(`Could not find folder "${codemod.folderName}"`);
		}

		return findProjectFile({filePath: folderFile, project});
	}

	if (
		codemod.type === 'move-composition-or-folder' &&
		codemod.source.type === 'folder'
	) {
		const folderFile = getFolderFile({
			folderName: codemod.source.folderName,
			project,
		});
		if (folderFile === null) {
			throw new Error(`Could not find folder "${codemod.source.folderName}"`);
		}

		return findProjectFile({filePath: folderFile, project});

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Refresh the folder list from the current project before issuing rename/delete-folder codemods.
  2. Drop queued folder codemods when the project prop changes underneath you.
  3. Pass symbolicatedStack with originalFileName when the target file is known.
Defensive patterns

Strategy: validation

Validate before calling

const folderExists = (project: VirtualProject, folderName: string): boolean =>
  Object.values(project.files).some((source) =>
    source.includes(`folderName={"${folderName}"}`) ||
    source.includes(`folderName="${folderName}"`),
  );

if (codemod.type === 'rename-folder' && !folderExists(project, codemod.folderName)) {
  // refresh folder list from the current project and rebuild the codemod
}

Type guard

const isFolderCodemod = (
  codemod: RecastCodemod,
): codemod is
  | {type: 'rename-folder'; folderName: string}
  | {type: 'delete-folder'; folderName: string} =>
  codemod.type === 'rename-folder' || codemod.type === 'delete-folder';

Prevention

When it happens

Trigger: applyCodemod with a codemod of type 'rename-folder' or 'delete-folder' whose codemod.folderName does not exist in the current project (no symbolicatedStack.originalFileName override).

Common situations: Renaming or deleting a folder that was already removed/renamed by another edit; stale folder tree in the UI after an undo or an external project replacement; folder names captured from an older project snapshot.

Related errors


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