{"record":{"id":"4710294e280b30a9","repo":"remotion-dev/remotion","slug":"owner-repo-does-not-have-a-supported-remotio","errorCode":null,"errorMessage":"${owner}/${repo} does not have a supported Remotion entry point. Expected src/index.ts or another standard Remotion entry point.","messagePattern":"(.+?)/(.+?) does not have a supported Remotion entry point\\. Expected src/index\\.ts or another standard Remotion entry point\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser-studio/src/load-github-repository.ts","lineNumber":276,"sourceCode":"\t\t);\n\t} catch (error) {\n\t\tif (publicFileStorage) {\n\t\t\tawait deleteBrowserStudioProjectStorage(publicFileStorage);\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\tonProgress?.({phase: 'preparing-project'});\n\tconst entryPoint = entryPointCandidates.find(\n\t\t(candidate) => files[`/project/${candidate}`] !== undefined,\n\t);\n\tif (!entryPoint) {\n\t\tif (publicFileStorage) {\n\t\t\tawait deleteBrowserStudioProjectStorage(publicFileStorage);\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`${owner}/${repo} does not have a supported Remotion entry point. Expected src/index.ts or another standard Remotion entry point.`,\n\t\t);\n\t}\n\n\treturn {\n\t\tentryPoint: `/project/${entryPoint}`,\n\t\tfiles,\n\t\tpublicFiles,\n\t\tpublicFileStorage: publicFileStorage ?? undefined,\n\t\trootDir: '/project',\n\t};\n};\n","sourceCodeStart":258,"sourceCodeEnd":289,"githubUrl":"https://github.com/remotion-dev/remotion/blob/10db9de07356446fb0edb3c3ae211369b693d18b/packages/browser-studio/src/load-github-repository.ts#L258-L289","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Create a standard entry file at the repo root, e.g. src/index.ts (or .tsx/.js/.mjs)","Rename your custom entry (e.g. src/main.tsx) to src/index.tsx","Add src/index.ts that re-exports the real entry: export * from './main';","Start from an official Remotion template (e.g. remotion-dev/template-audiogram), which already has a supported entry point"],"exampleFix":"// before: only src/main.tsx exists (not a supported candidate)\n\n// after: add src/index.ts re-exporting the real entry\n// src/index.ts\nexport {registerRoot} from './main';\nexport * from './Root';","handlingStrategy":"validation","validationCode":"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'];\nconst hasEntry = await Promise.any(candidates.map(async (c) => {\n  const r = await fetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/contents/${c}`);\n  if (r.ok) return c;\n  throw new Error(`missing ${c}`);\n})).catch(() => null);\nif (!hasEntry) throw new Error('Repo has no standard Remotion entry point (src/index.ts and friends)');","typeGuard":null,"tryCatchPattern":"try {\n  await loadGitHubRepository({repoUrl});\n} catch (e) {\n  if (/does not have a supported Remotion entry point/.test(String((e as Error).message))) {\n    // tell the user to add src/index.ts (or rename/re-export their custom entry) and reload\n  } else throw e;\n}","preventionTips":["Structure projects with one of the twelve standard entry paths (src/index.ts is the safest)","Add src/index.ts re-exporting the real entry when using a custom filename","Start from official Remotion templates, which always carry a supported entry point"],"tags":["browser-studio","github","entry-point","project-structure"],"backgroundTag":"missing-entry-point","analyzedSha":"10db9de07356446fb0edb3c3ae211369b693d18b","analyzedAt":"2026-08-22T21:45:17.748Z","contentChangedAt":"2026-08-22T21:45:17.748Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}