remotion-dev/remotion · error

Browser Studio vendor entry was not generated

Error message

Browser Studio vendor entry was not generated

What it means

During the browser-studio bundling process, a build output named 'browser-studio-vendor-entry.mjs' is expected from the vendor bundle step. Bun's build() returned outputs but none matched the expected basename, indicating the vendor entrypoint produced no artifact with the required name. This is an internal build invariant check that guards the packaging pipeline.

Source

Thrown at packages/browser-studio/bundle.ts:43

	define: {'process.env.NODE_ENV': JSON.stringify('development')},
	entrypoints: ['src/browser-studio-vendor-entry.ts'],
	external: ['@huggingface/transformers'],
	format: 'iife',
	minify: true,
	naming: '[name].mjs',
	target: 'browser',
});

if (!vendorOutput.success) {
	console.log(vendorOutput.logs.join('\n'));
	process.exit(1);
}

const vendorEntryOutput = vendorOutput.outputs.find(
	(file) => path.basename(file.path) === 'browser-studio-vendor-entry.mjs',
);
if (!vendorEntryOutput) {
	throw new Error('Browser Studio vendor entry was not generated');
}
const transformersOutput = await build({
	entrypoints: ['src/browser-studio-transformers-entry.ts'],
	format: 'esm',
	minify: true,
	naming: '[name].mjs',
	target: 'browser',
});

if (!transformersOutput.success) {
	console.log(transformersOutput.logs.join('\n'));
	process.exit(1);
}

const rspackBrowserEntry = fileURLToPath(
	import.meta.resolve('@rspack/browser'),
);
const rspackWasm = Bun.file(

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Verify the vendor build() call uses naming: '[name].mjs' and that the entrypoint still emits browser-studio-vendor-entry.mjs
  2. Print vendorOutput.outputs to inspect actual artifact names and adjust the path.basename(file.path) === 'browser-studio-vendor-entry.mjs' match accordingly
  3. Clean build artifacts and rebuild to rule out stale cache
  4. Check that the vendor entrypoint source file exists and has no build-time errors

Example fix

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

Strategy: try-catch

Validate before calling

// before consuming:
if (!vendorOutput.outputs.some((f) => path.basename(f.path) === 'browser-studio-vendor-entry.mjs')) {
	console.error('vendor 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 {
	const vendorEntryOutput = vendorOutput.outputs.find(isVendorEntry);
	if (!vendorEntryOutput) throw new Error('Browser Studio vendor entry was not generated');
} catch (err) {
	console.error(err); process.exit(1);
}

Prevention

When it happens

Trigger: Running the browser-studio bundle script when the vendor build() call produces outputs but none is named browser-studio-vendor-entry.mjs — e.g. the naming convention was changed, the entrypoint failed silently, or a bundler config change altered output paths.

Common situations: Contributors modifying the browser-studio build script and renaming entrypoints or the naming: pattern; upgrading Bun and getting different output naming behavior; build cache serving stale artifacts.

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/bb4afdef1c45a6cb. Report an issue: GitHub.