{"record":{"id":"eaaf1c6eaf7171f9","repo":"remotion-dev/remotion","slug":"could-not-find-folder-codemod-foldername","errorCode":null,"errorMessage":"Could not find folder \"${codemod.folderName}\"","messagePattern":"Could not find folder \"(.+?)\"","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser-studio/src/browser-studio-operations.ts","lineNumber":277,"sourceCode":"\t}\n\n\tconst compositionId = getCodemodTargetCompositionId(codemod);\n\tif (compositionId !== null) {\n\t\tconst compositionFile = getCompositionFile({compositionId, project});\n\t\tif (compositionFile === null) {\n\t\t\tthrow new Error(`Could not find composition \"${compositionId}\"`);\n\t\t}\n\n\t\treturn findProjectFile({filePath: compositionFile, project});\n\t}\n\n\tif (codemod.type === 'rename-folder' || codemod.type === 'delete-folder') {\n\t\tconst folderFile = getFolderFile({\n\t\t\tfolderName: codemod.folderName,\n\t\t\tproject,\n\t\t});\n\t\tif (folderFile === null) {\n\t\t\tthrow new Error(`Could not find folder \"${codemod.folderName}\"`);\n\t\t}\n\n\t\treturn findProjectFile({filePath: folderFile, project});\n\t}\n\n\tif (\n\t\tcodemod.type === 'move-composition-or-folder' &&\n\t\tcodemod.source.type === 'folder'\n\t) {\n\t\tconst folderFile = getFolderFile({\n\t\t\tfolderName: codemod.source.folderName,\n\t\t\tproject,\n\t\t});\n\t\tif (folderFile === null) {\n\t\t\tthrow new Error(`Could not find folder \"${codemod.source.folderName}\"`);\n\t\t}\n\n\t\treturn findProjectFile({filePath: folderFile, project});","sourceCodeStart":259,"sourceCodeEnd":295,"githubUrl":"https://github.com/remotion-dev/remotion/blob/b2f4e34732f3c6c222ea029413e22dc402218cd7/packages/browser-studio/src/browser-studio-operations.ts#L259-L295","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Refresh the folder list from the current project before issuing rename/delete-folder codemods.","Drop queued folder codemods when the project prop changes underneath you.","Pass symbolicatedStack with originalFileName when the target file is known."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const folderExists = (project: VirtualProject, folderName: string): boolean =>\n  Object.values(project.files).some((source) =>\n    source.includes(`folderName={\"${folderName}\"}`) ||\n    source.includes(`folderName=\"${folderName}\"`),\n  );\n\nif (codemod.type === 'rename-folder' && !folderExists(project, codemod.folderName)) {\n  // refresh folder list from the current project and rebuild the codemod\n}","typeGuard":"const isFolderCodemod = (\n  codemod: RecastCodemod,\n): codemod is\n  | {type: 'rename-folder'; folderName: string}\n  | {type: 'delete-folder'; folderName: string} =>\n  codemod.type === 'rename-folder' || codemod.type === 'delete-folder';","tryCatchPattern":null,"preventionTips":["Derive the folder tree from the live project, not cached UI state.","Drop queued folder codemods whenever the incoming project prop changes.","Refresh after undo/redo before allowing folder operations."],"tags":["codemod","folder","stale-state","virtual-project"],"backgroundTag":"folder-not-found","analyzedSha":"b2f4e34732f3c6c222ea029413e22dc402218cd7","analyzedAt":"2026-08-22T21:45:17.748Z","contentChangedAt":"2026-08-22T21:45:17.748Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}