remotion-dev/remotion · error · Error

Shader compile failed: ${log ?? '(no log)'}

Error message

Shader compile failed: ${log ?? '(no log)'}

What it means

Thrown by compileShader() in the chromatic aberration runtime when the GLSL source compiled but gl.getShaderParameter(COMPILE_STATUS) is false; the driver's info log is embedded in the message. Because the shipped CHROMATIC_ABERRATION_VS/FS are static and valid, a production compile failure almost always points to a driver/GPU bug or a degraded context, not a source error.

Source

Thrown at packages/effects/src/chromatic-aberration/chromatic-aberration-runtime.ts:36

	};
};

const compileShader = (
	gl: WebGL2RenderingContext,
	type: number,
	source: string,
): WebGLShader => {
	const shader = gl.createShader(type);
	if (!shader) {
		throw new Error('Failed to create WebGL shader');
	}

	gl.shaderSource(shader, source);
	gl.compileShader(shader);
	if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
		const log = gl.getShaderInfoLog(shader);
		gl.deleteShader(shader);
		throw new Error(`Shader compile failed: ${log ?? '(no log)'}`);
	}

	return shader;
};

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);

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Read the embedded info log to find the GLSL line the driver rejected.
  2. Update GPU drivers to the latest stable release.
  3. Use real GPU acceleration instead of a broken software fallback.
  4. Reinstall/upgrade @remotion/effects to rule out shader corruption.
  5. Reproduce on different hardware / Chrome for Testing to confirm a driver-specific bug.
Defensive patterns

Strategy: try-catch

Try / catch

try {
  return <ChromaticAberration {...props} />;
} catch (err) {
  const msg = String(err);
  if (/Shader compile failed/.test(msg)) {
  reportShaderError(msg);
  return <FallbackFrame />;
  }
  throw err;
}

Prevention

When it happens

Trigger: gl.compileShader() at chromatic-aberration-runtime.ts:32 completes but gl.getShaderParameter reports failure at :33; the info log is read, the shader deleted, and the error at :36 is thrown with the log.

Common situations: Outdated/buggy GPU drivers, GPUs on the browser blocklist forced through a software fallback that rejects GLSL ES 3.00, incomplete software rasterizers, or a corrupted @remotion/effects build altering shader sources.

Related errors


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