angular/angular
By the numbers
Data collected on 2026-04-30 from HEAD = 4c9afb68a3 on the main branch.
A snapshot of the codebase. Numbers describe the codebase, not individuals — see maintainers for ownership mapping.
Size
Total: ~37,200 commits, ~2,580 unique committer email addresses across the project's history.
Lines of TypeScript per public package
xychart-beta horizontal title "TypeScript LOC per package" x-axis ["core", "compiler-cli", "compiler", "forms", "common", "router", "language-service", "zone.js", "platform-server", "localize", "animations", "upgrade", "service-worker", "platform-browser"] y-axis "Lines of TypeScript" 0 --> 300000 bar [298908, 166048, 88874, 65689, 43140, 38052, 36681, 33857, 15683, 14498, 13393, 13144, 12964, 10291]
| Package | Lines of TypeScript |
|---|---|
@angular/core |
298,908 |
@angular/compiler-cli |
166,048 |
@angular/compiler |
88,874 |
@angular/forms |
65,689 |
@angular/common |
43,140 |
@angular/router |
38,052 |
@angular/language-service |
36,681 |
zone.js |
33,857 |
@angular/platform-server |
15,683 |
@angular/localize |
14,498 |
@angular/animations |
13,393 |
@angular/upgrade |
13,144 |
@angular/service-worker |
12,964 |
@angular/platform-browser |
10,291 |
@angular/benchpress |
4,969 |
@angular/elements |
2,133 |
@angular/platform-browser-dynamic |
717 |
@angular/ssr (re-export shell) |
26 |
adev/ has ~47,200 lines of TypeScript and 371 markdown content files. devtools/ has ~43,000 lines of TypeScript.
Source vs test vs build
| Category | Approximate count |
|---|---|
.ts files (everywhere except node_modules/.git) |
~10,300 |
.spec.ts files |
~1,800 |
BUILD.bazel / .bzl files |
~700 |
Workspace package count
The pnpm workspace contains 18 public @angular/* packages plus zone.js (legacy peer of the framework, also versioned in this repo), the adev documentation app, the devtools extension projects, the dev-app, and a number of internal-only utilities under packages/private, packages/misc, and tools/.
Activity
Recent commit volume
| Window | Commits |
|---|---|
| Calendar year 2026 (year-to-date as of 2026-04-30) | 1,337 |
| Last 12 months | ~5,400 |
| Last 6 months | ~6,090 |
| Last 30 days | ~510 |
Churn hotspots (last 6 months)
Top directories by file changes since 2025-10-30:
| Path | File-changes |
|---|---|
adev/src/ |
4,573 |
packages/compiler-cli/ |
1,513 |
packages/core/ |
1,505 |
packages/forms/ |
830 |
devtools/projects/ |
715 |
adev/shared-docs/ |
453 |
packages/compiler/ |
418 |
packages/language-service/ |
337 |
packages/router/ |
311 |
packages/common/ |
197 |
Documentation (adev/) is the single most active surface — typical for a framework that ships a tightly coupled documentation site. Among framework code, compiler-cli and core lead, reflecting ongoing investment in the template compiler and the Ivy runtime.
Bot-attributed commits
Bot author emails identified in history:
angular-robot@google.comand56403804+angular-robot[bot]@users.noreply.github.com29139614+renovate[bot]@users.noreply.github.comandbot@renovateapp.com49699333+dependabot[bot]@users.noreply.github.com
In the last 6 months, the angular-robot account alone authored 316 commits — primarily release cuts, changelog updates, and merge-ready status updates. This is a lower bound on automation: inline AI assists and human-merged PRs prepared with bots are not counted.
Complexity signals
Largest individual TypeScript files in packages/core/src/render3/ (the Ivy runtime):
| File | Approx. lines |
|---|---|
instructions/styling.ts |
~42,000 chars / large |
node_manipulation.ts |
~39,000 chars |
di.ts |
~39,700 chars |
state.ts |
~26,300 chars |
definition.ts |
~24,200 chars |
component_ref.ts |
~22,600 chars |
These are the canonical "deep magic" files — every contributor will eventually open state.ts and node_manipulation.ts when chasing a render bug.
The compiler-cli template type-checking subsystem (packages/compiler-cli/src/ngtsc/typecheck) is the second hotspot for complex code: it generates synthetic TypeScript so that ordinary tsc diagnostics light up template binding errors, which means it has to reason about template semantics through generated code patterns.
What this number tells you
- The framework is mature: ~37k commits, ~12 years of history, 2,500+ contributors. There is rarely a "first" change in any subsystem.
- Compiler and core dominate complexity; documentation dominates churn.
- Bots run a meaningful share of mechanical work. When auditing a directory's blame, filter
[bot]accounts out.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.