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
- Confirm the vendor build() uses naming: '[name].mjs' and emits browser-studio-vendor-entry.mjs
- Log vendorOutput.outputs to see actual names and fix the lookup or the naming config
- Delete build/dev cache directories and restart the dev server
- 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
- Keep dev and production bundle scripts using identical naming conventions
- Clear the dev cache after bundler upgrades
- Log build outputs when refactoring the dev asset pipeline
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
- Browser Studio vendor entry was not generated
- The public directory was specified as "${p}", which is the r
- The public directory was specified as "${p}", and while this
- The public directory was specified as "${p}", but this folde
- validateWebhookSignature can only be called from Node.JS
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09).
Data as JSON: /api/errors/19036ba52d3ce434.
Report an issue: GitHub.