remotion-dev/remotion · error

Browser Studio vendor entry was not generated

Error message

Browser Studio vendor entry was not generated

What it means

The Browser Studio dev server's buildDevAssets step bundles the vendor chunk and expects an output artifact named 'browser-studio-vendor-entry.mjs'. If the bundler produced no output with that basename, the dev server cannot serve the vendor entry and throws. This mirrors the same invariant as the production bundle script.

Source

Thrown at packages/browser-studio/src/dev/server.ts:102

		entrypoints: ['src/browser-studio-vendor-entry.ts'],
		external: ['@huggingface/transformers'],
		format: 'iife',
		naming: '[name].mjs',
		outdir: outDir,
		sourcemap: 'linked',
		target: 'browser',
	});

	if (!vendorOutput.success) {
		process.stderr.write(`${vendorOutput.logs.join('\n')}\n`);
		process.exit(1);
	}

	const vendorEntryArtifact = vendorOutput.outputs.find(
		(file) => path.basename(file.path) === 'browser-studio-vendor-entry.mjs',
	);
	if (!vendorEntryArtifact) {
		throw new Error('Browser Studio vendor entry was not generated');
	}

	const transformersOutput = await build({
		entrypoints: ['src/browser-studio-transformers-entry.ts'],
		format: 'esm',
		naming: '[name].mjs',
		outdir: outDir,
		sourcemap: 'linked',
		target: 'browser',
	});

	if (!transformersOutput.success) {
		process.stderr.write(`${transformersOutput.logs.join('\n')}\n`);
		process.exit(1);
	}

	const browserStudioAssetSizes = {
		rspackWasm: Bun.file(

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Confirm the vendor build() uses naming: '[name].mjs' and emits browser-studio-vendor-entry.mjs
  2. Log vendorOutput.outputs to see actual names and fix the lookup or the naming config
  3. Delete build/dev cache directories and restart the dev server
  4. Verify the vendor entrypoint file exists and builds without errors

Example fix

// before
const vendorEntryArtifact = vendorOutput.outputs.find(
	(file) => path.basename(file.path) === 'browser-studio-vendor-entry.mjs',
);
// after (debug)
console.log(vendorOutput.outputs.map((o) => o.path));
const vendorEntryArtifact = vendorOutput.outputs.find(
	(file) => path.basename(file.path) === 'browser-studio-vendor-entry.mjs',
);
Defensive patterns

Strategy: try-catch

Validate before calling

if (!vendorOutput.outputs.some((f) => path.basename(f.path) === 'browser-studio-vendor-entry.mjs')) {
	console.error('missing vendor entry; outputs:', vendorOutput.outputs.map((o) => o.path));
}

Type guard

const isVendorEntry = (f: {path: string}) =>
	path.basename(f.path) === 'browser-studio-vendor-entry.mjs';

Try / catch

try {
	await buildDevAssets(...);
} catch (err) {
	if ((err as Error).message.includes('vendor entry was not generated')) {
		await cleanDevCache();
		await restartDevServer();
	} else throw err;
}

Prevention

When it happens

Trigger: Starting the Browser Studio dev server when the vendor build yields no artifact named browser-studio-vendor-entry.mjs — renamed entrypoint, changed naming convention, or failing/stale vendor build.

Common situations: Local development after refactoring the dev server build pipeline; Bun version upgrades changing output naming; corrupted dev cache.

Understand the failure class

Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.

Related errors


AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09). Data as JSON: /api/errors/19036ba52d3ce434. Report an issue: GitHub.