{"record":{"id":"149328708626f034","repo":"remotion-dev/remotion","slug":"applying-visual-controls-is-not-supported-in-brows","errorCode":null,"errorMessage":"Applying visual controls is not supported in Browser Studio","messagePattern":"Applying visual controls is not supported in Browser Studio","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser-studio/src/browser-studio-operations.ts","lineNumber":1447,"sourceCode":"\n\t\t\treturn {success: true, nodePathMutation};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\treason: error instanceof Error ? error.message : String(error),\n\t\t\t\tstack: error instanceof Error && error.stack ? error.stack : '',\n\t\t\t};\n\t\t}\n\t};\n\n\tconst applyCodemod: BrowserStudioOperations['applyCodemod'] = async ({\n\t\tcodemod,\n\t\tdryRun,\n\t\tsymbolicatedStack,\n\t}) => {\n\t\ttry {\n\t\t\tif (codemod.type === 'apply-visual-control') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Applying visual controls is not supported in Browser Studio',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tcodemod.type === 'new-composition' &&\n\t\t\t\tcodemod.canvasCapture !== null\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Creating canvas capture compositions is not supported in Browser Studio',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst project = getProject();\n\t\t\tconst absolutePath = resolveCodemodTargetFile({\n\t\t\t\tcodemod,\n\t\t\t\tproject,\n\t\t\t\tsymbolicatedStack,","sourceCodeStart":1429,"sourceCodeEnd":1465,"githubUrl":"https://github.com/remotion-dev/remotion/blob/b2f4e34732f3c6c222ea029413e22dc402218cd7/packages/browser-studio/src/browser-studio-operations.ts#L1429-L1465","documentation":"applyCodemod explicitly rejects codemod.type === 'apply-visual-control'. Visual controls (Visual Mode's drag-to-update control flows) depend on Studio-only infrastructure that Browser Studio does not implement, so the codemod is refused up front and returned as a structured error.","triggerScenarios":"Routing a Studio-generated 'apply-visual-control' codemod (from Visual Mode editing flows) into BrowserStudioOperations.applyCodemod.","commonSituations":"Sharing codemod pipelines or agents between desktop Remotion Studio and the browser embed; replaying recorded Studio editing sessions against Browser Studio; assuming full codemod parity between the two hosts.","solutions":["Gate on codemod.type before calling applyCodemod and handle 'apply-visual-control' with a user-facing 'not supported here' message.","Express the intended change with supported prop-update codemods instead.","Feature-detect host capabilities rather than assuming Studio and Browser Studio accept the same codemod set."],"exampleFix":"// before\nawait operations.applyCodemod({codemod, dryRun: false, symbolicatedStack: null});\n\n// after\nif (codemod.type !== 'apply-visual-control') {\n  await operations.applyCodemod({codemod, dryRun: false, symbolicatedStack: null});\n} else {\n  showUnsupportedMessage('Visual controls are not available in Browser Studio');\n}","handlingStrategy":"type-guard","validationCode":"const supportedCodemodTypes = new Set([\n  'new-composition',\n  'delete-composition',\n  'rename-composition',\n  'duplicate-composition',\n  'update-composition-metadata',\n  'move-composition-to-folder',\n  'rename-folder',\n  'delete-folder',\n  // ... other supported types; deliberately excludes 'apply-visual-control'\n]);\n\nif (supportedCodemodTypes.has(codemod.type)) {\n  await operations.applyCodemod({codemod, dryRun, symbolicatedStack});\n}","typeGuard":"const isBrowserStudioSupportedCodemod = (\n  codemod: RecastCodemod,\n): boolean => codemod.type !== 'apply-visual-control';","tryCatchPattern":"try {\n  await operations.applyCodemod({codemod, dryRun, symbolicatedStack});\n} catch (error) {\n  if (\n    error instanceof Error &&\n    error.message === 'Applying visual controls is not supported in Browser Studio'\n  ) {\n    // fall back to a supported prop-update codemod or inform the user\n  }\n}","preventionTips":["Maintain an explicit capability set per host (Studio vs Browser Studio) and filter codemods through it.","Do not replay recorded Studio sessions verbatim against Browser Studio.","Design shared agent/tool pipelines to query supported codemod types before dispatch."],"tags":["codemod","visual-mode","unsupported","capability"],"backgroundTag":"unsupported-operation","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"}