remotion-dev/remotion · critical · Error

Should not download a browser in Cloud Run

Error message

Should not download a browser in Cloud Run

What it means

Thrown inside getCompositionFromBody() when the headless browser attempts to download its binary on Cloud Run. Remotion Cloud Run services ship with a pre-installed browser, so a download request indicates the bundle/serve URL is misconfigured or the browser binary is missing from the image.

Solutions

  1. Redeploy the Cloud Run service to ensure the bundled browser is present.
  2. Verify the serveUrl points to a Remotion bundle compatible with the deployed service version.
  3. Do not override browser configuration on Cloud Run; rely on the pre-bundled headless-shell.

Example fix

// no user code fix; this is a server-side invariant
// redeploy: npx remotion cloudrun services deploy --memory=2Gi --region=us-central1
Defensive patterns

Strategy: retry

Prevention

When it happens

Trigger: The onBrowserDownload callback fires while opening a puppeteer instance to extract the composition from the serve URL, meaning the system tried to fetch a Chromium binary instead of using the bundled one.

Common situations: A custom serve URL pointing to an environment without the bundled browser, a corrupted deployment image, or a serve URL that triggers a different code path expecting a download.

Related errors


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

Appendix: source

Thrown at packages/cloudrun/src/functions/helpers/get-composition-from-body.ts:30

			},
			envVariables: body.envVariables ?? {},
			id: body.composition,
			indent: false,
			serializedInputPropsWithCustomSchema:
				body.serializedInputPropsWithCustomSchema,
			logLevel: body.logLevel,
			onBrowserLog: () => null,
			port: null,
			puppeteerInstance: undefined,
			server: undefined,
			timeoutInMilliseconds:
				body.delayRenderTimeoutInMilliseconds ??
				RenderInternals.DEFAULT_TIMEOUT,
			offthreadVideoCacheSizeInBytes: body.offthreadVideoCacheSizeInBytes,
			offthreadVideoThreads: body.offthreadVideoThreads,
			binariesDirectory: null,
			onBrowserDownload: () => {
				throw new Error('Should not download a browser in Cloud Run');
			},
			onServeUrlVisited: () => undefined,
			chromeMode: 'headless-shell',
			mediaCacheSizeInBytes: body.mediaCacheSizeInBytes,
		},
	);

	if (propsSize > 10_000_000) {
		RenderInternals.Log.warn(
			{indent: false, logLevel: body.logLevel},
			`The props of your composition are large (${propsSize} bytes). This may cause slowdown.`,
		);
	}

	return metadata;
};

View on GitHub (pinned to 78fe4bb3fd)