remotion-dev/remotion · error
No src passed
Error message
No src passed
What it means
`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.
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.
Example fix
// before
<Video src={maybeUrl} />
// after
{maybeUrl && <Video src={maybeUrl} />} Defensive patterns
Strategy: type-guard
Validate before calling
if (!src || typeof src !== 'string') {
return null;
} Type guard
const hasSrc = (p: {src?: unknown}): p is {src: string} => typeof p.src === 'string' && p.src.length > 0; Prevention
- 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.
When it happens
Trigger: Rendering `<Video>` without a `src`, or with `src={undefined}` / `src={''}` during a server render.
Common situations: Conditional src that resolves late, or destructuring an asset payload that omits the URL.
Related errors
- No src passed
- No `src` was passed to
- No `src` was passed to
- The ` ` tag requires a string for `src`, but got instead.
- No src passed
AI-assisted analysis of remotion-dev/remotion@46a3a6bf13 (2026-09-18).
Data as JSON: /api/errors/2fb03055d91efdef.
Report an issue: GitHub.
Appendix: source
Thrown at packages/core/src/video/VideoForRendering.tsx:117
frame: volumePropsFrame,
mediaVolume: 1,
});
warnAboutTooHighVolume(volume);
const audioEnabled = useAudioEnabled();
const {shouldUseAudio} = useMediaAudioState({
muted: props.muted ?? false,
volume,
audioEnabled,
});
if (!videoConfig) {
throw new Error('No video config found');
}
useEffect(() => {
if (!props.src) {
throw new Error('No src passed');
}
if (!shouldUseAudio) {
return;
}
registerRenderAsset({
type: 'video',
src: getAbsoluteSrc(props.src),
id,
frame: absoluteFrame,
volume,
mediaFrame: frame,
playbackRate: playbackRate ?? 1,
toneFrequency: toneFrequency ?? 1,
audioStartFrame: Math.max(
0,
-(sequenceContext?.cumulatedNegativeFrom ?? 0),View on GitHub (pinned to 46a3a6bf13)