{"record":{"id":"1a45774099d56ac7","repo":"remotion-dev/remotion","slug":"could-not-resolve-dependency-name-1a4577","errorCode":null,"errorMessage":"Could not resolve ${dependency.name}","messagePattern":"Could not resolve (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser-studio/src/browser-studio-operations.ts","lineNumber":829,"sourceCode":"\t\t\tresolveDependencies !== null\n\t\t\t\t? await resolveDependencies(dependencies)\n\t\t\t\t: {};\n\t\tconst remotionVersion = dependencyVersions.remotion;\n\n\t\tfor (const dependency of dependencies) {\n\t\t\tif (dependency.name.startsWith('@remotion/')) {\n\t\t\t\tif (!remotionVersion) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Cannot resolve ${dependency.name} because the Browser Studio Remotion version is unavailable`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tresolved[dependency.name] = remotionVersion;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (dependency.version === null) {\n\t\t\t\tthrow new Error(`Could not resolve ${dependency.name}`);\n\t\t\t}\n\n\t\t\tresolved[dependency.name] ??= dependency.version;\n\t\t}\n\n\t\treturn resolved;\n\t};\n\n\tconst getEffectStatus = ({\n\t\teffectIndex,\n\t\tfileName,\n\t\tproject,\n\t\tschema,\n\t\tsequenceNodePath,\n\t}: {\n\t\teffectIndex: number;\n\t\tfileName: string;\n\t\tproject: VirtualProject;","sourceCodeStart":811,"sourceCodeEnd":847,"githubUrl":"https://github.com/remotion-dev/remotion/blob/b2f4e34732f3c6c222ea029413e22dc402218cd7/packages/browser-studio/src/browser-studio-operations.ts#L811-L847","documentation":"In createBrowserStudioOperations's resolveElementDependencies, non-@remotion dependencies first go through the optional host-provided resolveDependencies callback (which defaults to {} when absent). If a dependency still has version === null afterwards — no explicit version and the resolver did not fill one in — this error is thrown naming the package.","triggerScenarios":"installPackages({dependencies: [{name: 'three', version: null}]}) on a host whose resolveDependencies is null or returns nothing for that package.","commonSituations":"Element payloads that list third-party dependencies without versions on hosts that never implemented a dependency resolver; resolvers that only handle a whitelist and silently omit everything else.","solutions":["Pass an explicit version for every non-@remotion dependency: {name: 'three', version: '0.160.0'}.","Implement the resolveDependencies callback supplied to createBrowserStudioOperations so it fills a version for every dependency it accepts.","Reject or filter dependencies you cannot resolve before calling installPackages."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const canResolve = (deps: readonly {name: string; version: string | null}[]) =>\n  deps.every(\n    (d) =>\n      d.name.startsWith('@remotion/') ||\n      d.version !== null ||\n      resolveDependenciesCallback !== null, // and the callback fills this name\n  );","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always attach explicit versions to third-party dependencies in element payloads.","Supply a resolveDependencies callback to createBrowserStudioOperations that covers your allowlist.","Log unresolved names early instead of letting the operation loop throw."],"tags":["dependency-resolution","npm","dependency-resolver"],"backgroundTag":"unresolved-dependency-version","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"}