{"record":{"id":"2fb03055d91efdef","repo":"remotion-dev/remotion","slug":"no-src-passed-2fb030","errorCode":null,"errorMessage":"No src passed","messagePattern":"No src passed","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/core/src/video/VideoForRendering.tsx","lineNumber":117,"sourceCode":"\t\tframe: volumePropsFrame,\n\t\tmediaVolume: 1,\n\t});\n\n\twarnAboutTooHighVolume(volume);\n\tconst audioEnabled = useAudioEnabled();\n\tconst {shouldUseAudio} = useMediaAudioState({\n\t\tmuted: props.muted ?? false,\n\t\tvolume,\n\t\taudioEnabled,\n\t});\n\n\tif (!videoConfig) {\n\t\tthrow new Error('No video config found');\n\t}\n\n\tuseEffect(() => {\n\t\tif (!props.src) {\n\t\t\tthrow new Error('No src passed');\n\t\t}\n\n\t\tif (!shouldUseAudio) {\n\t\t\treturn;\n\t\t}\n\n\t\tregisterRenderAsset({\n\t\t\ttype: 'video',\n\t\t\tsrc: getAbsoluteSrc(props.src),\n\t\t\tid,\n\t\t\tframe: absoluteFrame,\n\t\t\tvolume,\n\t\t\tmediaFrame: frame,\n\t\t\tplaybackRate: playbackRate ?? 1,\n\t\t\ttoneFrequency: toneFrequency ?? 1,\n\t\t\taudioStartFrame: Math.max(\n\t\t\t\t0,\n\t\t\t\t-(sequenceContext?.cumulatedNegativeFrom ?? 0),","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/remotion-dev/remotion/blob/46a3a6bf13ca367376ff18bbb06dae2e87e0d068/packages/core/src/video/VideoForRendering.tsx#L99-L135","documentation":"`VideoForRendering` throws inside its `useEffect` if `props.src` is falsy, because audio asset registration and frame seeking both require a source URL. The throw happens after mount, during the effect run.","triggerScenarios":"Rendering `<Video>` without a `src`, or with `src={undefined}` / `src={''}` during a server render.","commonSituations":"Conditional src that resolves late, or destructuring an asset payload that omits the URL.","solutions":["Always pass a non-empty `src` string to `<Video>`.","Conditionally mount: `{url && <Video src={url} />}`.","Use static typing to make `src` required at the call site."],"exampleFix":"// before\n<Video src={maybeUrl} />\n// after\n{maybeUrl && <Video src={maybeUrl} />}","handlingStrategy":"type-guard","validationCode":"if (!src || typeof src !== 'string') {\n  return null;\n}","typeGuard":"const hasSrc = (p: {src?: unknown}): p is {src: string} => typeof p.src === 'string' && p.src.length > 0;","tryCatchPattern":null,"preventionTips":["Make `src` a required string in component prop types.","Conditionally mount `<Video>` only when src is truthy.","Use `staticFile()` for local assets to guarantee a string."],"tags":["video","src","rendering","validation"],"backgroundTag":null,"analyzedSha":"46a3a6bf13ca367376ff18bbb06dae2e87e0d068","analyzedAt":"2026-09-18T00:12:20.256Z","contentChangedAt":"2026-09-18T00:12:20.256Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}