twenty vs umi

twenty and umi share 6 technologies: React, Vite, react-router-dom, Express, lightningcss, and PostCSS. Both are written in TypeScript.

Read it as markdown

What they share and what sets them apart

In common

Only in umi

Side by side

SizeLines written by people and agents, without generated ones; code files, without tests.
twenty2,785,537 lines written26,644 code files
umi381,687 lines written1,543 code files
Who writes itA commit counts as AI's when it carries its signature: a Co-Authored-By line, its author name or the merge of its branch.
twenty1.9% of its commits signed by AIWith Claude Code, Cursor, GitHub Copilot, and Sweep
umi0.1% of its commits signed by AIWith Claude Code and Cursor
ActivityFrom GitHub and its history, on the day SeeRepo read it.
twentyLast push November 5, 202617,869 commits60,472 stars
umiLast push November 5, 20267,724 commits16,051 stars
TestsThe files that test the code, and the share of code files a test imports.
twenty7,108 test files29% of its code files have a test that imports them
umi398 test files9.1% of its code files have a test that imports them

Frequently asked questions

Which is bigger, twenty or umi?
twenty, with 2,785,537 lines written; umi has 381,687.

The proof: twentyhq/twenty's code at commit 8919279

Which has more GitHub stars, twenty or umi?
twenty, with 60,472 stars; umi has 16,051.

The proof: twentyhq/twenty on GitHub

Which has more tests, twenty or umi?
twenty, with 7,108 test files; umi has 398.

The proof: twentyhq/twenty's code at commit 8919279

Which was updated more recently, twenty or umi?
Both got their last push on November 5, 2026.

The proof: umijs/umi's commits on GitHub

Which has more commits signed by AI, twenty or umi?
twenty: an AI signed 1.9% of its commits, with Claude Code, Cursor, GitHub Copilot, and Sweep; in umi, 0.1%.

The proof: the commits each tool signed in twentyhq/twenty

See inside your code, today.

Paste your repo and see it drawn, part by part: a medium one in under a minute.

Free, no account.

Or look inside SeeRepo's own →