remotion-dev/remotion · error · Error

Drop shadow program link failed: ${log ?? '(no log)'}

Error message

Drop shadow program link failed: ${log ?? '(no log)'}

What it means

Thrown by the drop-shadow runtime's linkProgram helper after LINK_STATUS failure, with the driver's program info log embedded. Linking fails when the vertex and fragment shaders disagree on varyings, exceed uniform/varying limits, or hit a driver bug. Because the drop-shadow shaders are paired as bundled constants, a link failure typically means a non-conformant driver or a per-resource limit hit.

Source

Thrown at packages/effects/src/drop-shadow/drop-shadow-runtime.ts:88

};

const linkProgram = (
	gl: WebGL2RenderingContext,
	vs: WebGLShader,
	fs: WebGLShader,
): WebGLProgram => {
	const program = gl.createProgram();
	if (!program) {
		throw new Error('Failed to create WebGL program');
	}

	gl.attachShader(program, vs);
	gl.attachShader(program, fs);
	gl.linkProgram(program);
	if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
		const log = gl.getProgramInfoLog(program);
		gl.deleteProgram(program);
		throw new Error(`Drop shadow program link failed: ${log ?? '(no log)'}`);
	}

	return program;
};

const createProgram = (
	gl: WebGL2RenderingContext,
	vertexSource: string,
	fragmentSource: string,
): WebGLProgram => {
	const vs = compileShader(gl, gl.VERTEX_SHADER, vertexSource);
	const fs = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);
	const program = linkProgram(gl, vs, fs);
	gl.deleteShader(vs);
	gl.deleteShader(fs);
	return program;
};

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Read the embedded info log for the linker's complaint.
  2. Update GPU drivers and browser; try another device or browser.
  3. For headless/CI, run under SwiftShader which links conformant programs.
  4. If the log indicates a genuine defect in the bundled shaders, file a Remotion issue with the full log and device info.
Defensive patterns

Strategy: try-catch

Try / catch

try {
  state = setupDropShadow(canvas);
} catch (err) {
  if (err instanceof Error && /program link failed/i.test(err.message)) {
    console.error('Driver failed to link drop-shadow program:', err.message);
    // fall back to a CSS box-shadow layer
  } else {
    throw err;
  }
}

Prevention

When it happens

Trigger: One of the four drop-shadow programs fails to link on a device whose driver mishandles the uniform/varying set, or whose MAX_VERTEX_UNIFORM_VECTORS / MAX_TEXTURE_IMAGE_UNITS is exceeded. Also seen on broken driver versions.

Common situations: Low-end mobile GPUs; outdated Intel/AMD driver branches; virtualized GL; remote desktop; specific Linux Mesa versions.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/6069cd4bb3a978fa. Report an issue: GitHub.