remotion-dev/remotion · error · Error

${owner}/${repo} does not have a supported Remotion entry po

Error message

${owner}/${repo} does not have a supported Remotion entry point. Expected src/index.ts or another standard Remotion entry point.

What it means

After downloading all files, loadGitHubRepository searches for one of twelve entry point candidates (src/index.ts, src/index.tsx, src/index.js, src/index.mjs, remotion/index.tsx, remotion/index.ts, remotion/index.js, remotion/index.mjs, src/remotion/index.tsx, src/remotion/index.ts, src/remotion/index.js, src/remotion/index.mjs). If none exists among the decoded text files, the repo is not recognized as a Remotion project; any OPFS storage created for public files is deleted before throwing.

Source

Thrown at packages/browser-studio/src/load-github-repository.ts:276

		);
	} catch (error) {
		if (publicFileStorage) {
			await deleteBrowserStudioProjectStorage(publicFileStorage);
		}

		throw error;
	}

	onProgress?.({phase: 'preparing-project'});
	const entryPoint = entryPointCandidates.find(
		(candidate) => files[`/project/${candidate}`] !== undefined,
	);
	if (!entryPoint) {
		if (publicFileStorage) {
			await deleteBrowserStudioProjectStorage(publicFileStorage);
		}

		throw new Error(
			`${owner}/${repo} does not have a supported Remotion entry point. Expected src/index.ts or another standard Remotion entry point.`,
		);
	}

	return {
		entryPoint: `/project/${entryPoint}`,
		files,
		publicFiles,
		publicFileStorage: publicFileStorage ?? undefined,
		rootDir: '/project',
	};
};

View on GitHub (pinned to 10db9de073)

Solutions

  1. Create a standard entry file at the repo root, e.g. src/index.ts (or .tsx/.js/.mjs)
  2. Rename your custom entry (e.g. src/main.tsx) to src/index.tsx
  3. Add src/index.ts that re-exports the real entry: export * from './main';
  4. Start from an official Remotion template (e.g. remotion-dev/template-audiogram), which already has a supported entry point

Example fix

// before: only src/main.tsx exists (not a supported candidate)

// after: add src/index.ts re-exporting the real entry
// src/index.ts
export {registerRoot} from './main';
export * from './Root';
Defensive patterns

Strategy: validation

Validate before calling

const candidates = ['src/index.ts', 'src/index.tsx', 'src/index.js', 'src/index.mjs', 'remotion/index.tsx', 'remotion/index.ts', 'remotion/index.js', 'remotion/index.mjs', 'src/remotion/index.tsx', 'src/remotion/index.ts', 'src/remotion/index.js', 'src/remotion/index.mjs'];
const hasEntry = await Promise.any(candidates.map(async (c) => {
  const r = await fetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/contents/${c}`);
  if (r.ok) return c;
  throw new Error(`missing ${c}`);
})).catch(() => null);
if (!hasEntry) throw new Error('Repo has no standard Remotion entry point (src/index.ts and friends)');

Try / catch

try {
  await loadGitHubRepository({repoUrl});
} catch (e) {
  if (/does not have a supported Remotion entry point/.test(String((e as Error).message))) {
    // tell the user to add src/index.ts (or rename/re-export their custom entry) and reload
  } else throw e;
}

Prevention

When it happens

Trigger: Calling loadGitHubRepository on a repo that is not a Remotion project at all, or a Remotion project whose entry point is non-standard (e.g. src/main.tsx referenced from remotion.config.ts) and therefore not in entryPointCandidates.

Common situations: Loading a generic React/Vite repo; templates with custom entry filenames; projects migrated from older Remotion versions that used a different entry layout; repos where the entry point lives in a non-standard directory.

Related errors


AI-assisted analysis of remotion-dev/remotion@10db9de073 (2026-08-22). Data as JSON: /api/errors/4710294e280b30a9. Report an issue: GitHub.