tldraw/tldraw
View on GitHub ↗
Unique within the repo — the other 22% repeats across its own files.
Unique across all public code — a further 26% is its own but appears in other public repos too.
Tidy, but not new — the code doesn't repeat itself, yet a large share already exists across other public repos. A strong candidate for pulling from (or publishing as) a shared package.
Worth consolidating — in the code
Real, actionable duplication in this repo's source, most concrete first.
Longest identical blocks
The longest runs of identical consecutive lines copied between two files (indentation ignored) — the most concrete copy-paste. Lift the block into a shared function or module.
| Lines | File A | File B | Cross-repo |
|---|---|---|---|
| 26 | tldraw/tldraw/apps/docs/components/search/FullPageSearch.tsx:159 |
tldraw/tldraw/apps/docs/components/search/SearchDialog.tsx:115 |
same repo |
| 13 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/getThumbnailSnapshot.test.ts:30 |
tldraw/tldraw/apps/dotcom/sync-worker/src/utils/renderTokens.test.ts:20 |
same repo |
| 13 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/verifyVersionChain.test.ts:17 |
tldraw/tldraw/apps/dotcom/sync-worker/src/versionChainRead.test.ts:20 |
same repo |
| 12 | tldraw/tldraw/.github/workflows/playwright-examples.yml:85 |
tldraw/tldraw/.github/workflows/playwright-perf.yml:89 |
same repo |
| 9 | tldraw/tldraw/apps/docs/app/(docs)/[...slug]/page.tsx:91 |
tldraw/tldraw/apps/docs/components/content/index.tsx:40 |
same repo |
| 8 | tldraw/tldraw/apps/dotcom/client/src/utils/fileLoad.ts:233 |
tldraw/tldraw/apps/dotcom/client/src/utils/firstLoad.ts:232 |
same repo |
| 7 | tldraw/tldraw/.github/workflows/trigger-dotcom-hotfix.yml:40 |
tldraw/tldraw/.github/workflows/trigger-sdk-hotfix.yml:40 |
same repo |
| 6 | tldraw/tldraw/apps/bemo-worker/src/BemoDO.ts:79 |
tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts:696 |
same repo |
| 6 | tldraw/tldraw/apps/dotcom/sync-worker/src/commentRows.test.ts:568 |
tldraw/tldraw/apps/dotcom/sync-worker/src/commentRows.ts:372 |
same repo |
| 6 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.test.ts:25 |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts:565 |
same repo |
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 9% | 466 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.ts |
same repo |
| 7% | 380 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts |
same repo |
| 12% | 339 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.ts |
same repo |
| 7% | 330 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.test.ts |
same repo |
| 3% | 299 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts |
same repo |
| 6% | 281 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/thumbnailRender.ts |
same repo |
| 6% | 280 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.ts |
same repo |
| 4% | 270 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.test.ts |
same repo |
| 3% | 269 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.ts |
same repo |
| 6% | 257 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/thumbnailRender.ts |
same repo |
| 3% | 257 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.ts |
same repo |
| 3% | 251 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/adminRoutes.ts |
same repo |
| 3% | 242 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/thumbnailRender.ts |
same repo |
| 8% | 240 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.ts |
same repo |
| 3% | 235 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.ts |
same repo |
| 4% | 229 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/commentRows.ts |
same repo |
| 6% | 224 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.ts |
same repo |
| 3% | 215 | tldraw/tldraw/apps/dotcom/client/src/tla/app/TldrawApp.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts |
same repo |
| 12% | 202 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpAuth.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpAuth.ts |
same repo |
| 6% | 202 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/ogImageQueue.test.ts |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/thumbnailRender.ts |
same repo |
Duplicate declarations
The same function, variable, class, or type name declared in more than one file — a fast copy-paste signal. Consider extracting a shared definition.
| Files | Declaration | Where |
|---|---|---|
| 5 | type Environment |
tldraw/tldraw/apps/bemo-worker/src/types.tstldraw/tldraw/apps/dotcom/asset-upload-worker/src/types.tstldraw/tldraw/apps/dotcom/image-resize-worker/src/worker.ts+2 more |
| 5 | class worker |
tldraw/tldraw/apps/bemo-worker/src/worker.tstldraw/tldraw/apps/dotcom/asset-upload-worker/src/worker.tstldraw/tldraw/apps/dotcom/image-resize-worker/src/worker.ts+2 more |
| 4 | type window |
tldraw/tldraw/apps/analytics/src/analytics-services/ga4.tstldraw/tldraw/apps/analytics/src/analytics-services/gtm.tstldraw/tldraw/apps/analytics/src/types.ts+1 more |
| 2 | type article |
tldraw/tldraw/apps/docs/scripts/update-algolia-index.tstldraw/tldraw/apps/docs/types/content-types.ts |
| 2 | type AutocompleteProps |
tldraw/tldraw/apps/docs/components/search/FullPageSearch.tsxtldraw/tldraw/apps/docs/components/search/SearchDialog.tsx |
| 2 | class class |
tldraw/tldraw/apps/docs/scripts/lib/createApiMarkdown.tstldraw/tldraw/apps/docs/types/content-types.ts |
| 2 | type ConsentPreferences |
tldraw/tldraw/apps/analytics/src/types.tstldraw/tldraw/apps/docs/app/analytics.tsx |
| 2 | type interface |
tldraw/tldraw/apps/docs/scripts/lib/createApiMarkdown.tstldraw/tldraw/apps/docs/types/content-types.ts |
| 2 | type JsonRpcRequest |
tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/boardTools.tstldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.ts |
Docs & prose
Near-identical documentation — often translations (e.g. README.md ⇄ README_zh-CN.md) or mirrored guides. Usually intentional, not cleanup — listed separately so it doesn't inflate the code signal above.
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 8% | 1435 | tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
tldraw/tldraw/apps/dotcom/mcp-server-auth.md |
same repo |
| 92% | 554 | tldraw/tldraw/apps/docs/content/docs/handles.mdx |
tldraw/tldraw/apps/docs/content/sdk-features/handles.mdx |
same repo |
| 3% | 457 | tldraw/tldraw/apps/docs/content/sdk-features/commenting.mdx |
tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
same repo |
| 12% | 445 | tldraw/tldraw/apps/docs/content/docs/commenting.mdx |
tldraw/tldraw/apps/docs/content/sdk-features/commenting.mdx |
same repo |
| 13% | 370 | tldraw/tldraw/apps/dotcom/user-manual.md |
tldraw/tldraw/apps/dotcom/workspaces-feature.md |
same repo |
| 2% | 345 | tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
tldraw/tldraw/apps/dotcom/workspaces-feature.md |
same repo |
| 2% | 281 | tldraw/tldraw/apps/docs/content/releases/v5.5.0.mdx |
tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
same repo |
| 20% | 260 | tldraw/tldraw/apps/docs/content/starter-kits/image-pipeline.mdx |
tldraw/tldraw/apps/docs/content/starter-kits/workflow.mdx |
same repo |
| 3% | 260 | tldraw/tldraw/apps/docs/content/sdk-features/commenting.mdx |
tldraw/tldraw/apps/dotcom/mcp-server-auth.md |
same repo |
| 6% | 231 | tldraw/tldraw/apps/docs/content/releases/v5.4.0.mdx |
tldraw/tldraw/apps/docs/content/releases/v5.5.0.mdx |
same repo |
| 1% | 231 | tldraw/tldraw/VOICE.md |
tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
same repo |
| 1% | 227 | tldraw/tldraw/apps/docs/content/starter-kits/agent.mdx |
tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
same repo |
| 11% | 216 | tldraw/tldraw/apps/docs/content/sdk-features/persistence.mdx |
tldraw/tldraw/apps/docs/content/sdk-features/store.mdx |
same repo |
| 1% | 213 | tldraw/tldraw/apps/docs/content/docs/sync.mdx |
tldraw/tldraw/apps/dotcom/browser-run-thumbnails.md |
same repo |
| 14% | 206 | tldraw/tldraw/apps/docs/content/starter-kits/branching-chat.mdx |
tldraw/tldraw/apps/docs/content/starter-kits/workflow.mdx |
same repo |
| 4% | 205 | tldraw/tldraw/apps/docs/content/docs/sync.mdx |
tldraw/tldraw/apps/docs/content/sdk-features/commenting.mdx |
same repo |
| 5% | 196 | tldraw/tldraw/VOICE.md |
tldraw/tldraw/apps/docs/content/docs/sync.mdx |
same repo |
| 8% | 194 | tldraw/tldraw/apps/dotcom/client/PRIVACY_POLICY.md |
tldraw/tldraw/apps/dotcom/client/TERMS_OF_SERVICE.md |
same repo |
| 19% | 193 | tldraw/tldraw/apps/docs/content/docs/persistence.mdx |
tldraw/tldraw/apps/docs/content/sdk-features/persistence.mdx |
same repo |
| 7% | 192 | tldraw/tldraw/apps/docs/content/sdk-features/default-shapes.mdx |
tldraw/tldraw/apps/docs/content/sdk-features/geo-shape.mdx |
same repo |
Largest files
Largest files
| LOC | File | Status |
|---|---|---|
| — | tldraw/tldraw/apps/examples/src/examples/use-cases/zoom-into-moby-dick/chapters.json | skipped from indexing (too large to index (1.2 MB)) |
| 5796 | tldraw/tldraw/apps/dotcom/sync-worker/assets/welcome-snapshot.json | skipped from indexing (over 0 LOC) |
| 3591 | tldraw/tldraw/apps/dotcom/sync-worker/src/TLFileDurableObject.ts | indexed |
| 2230 | tldraw/tldraw/apps/dotcom/sync-worker/src/routes/tla/mcpServer.test.ts | indexed |
| 1989 | tldraw/tldraw/apps/dotcom/client/public/tla/locales-compiled/ar.json | indexed |
| 1959 | tldraw/tldraw/apps/dotcom/client/public/tla/locales-compiled/tl.json | indexed |
| 1949 | tldraw/tldraw/apps/dotcom/client/public/tla/locales-compiled/ru.json | indexed |
| 1941 | tldraw/tldraw/apps/dotcom/client/public/tla/locales-compiled/cs.json | indexed |
| 1941 | tldraw/tldraw/apps/dotcom/client/public/tla/locales-compiled/he.json | indexed |
| 1941 | tldraw/tldraw/apps/dotcom/client/public/tla/locales-compiled/sl.json | indexed |