
Angular
angular.dev- Category
- Developer Tools
- Rank
- No. 245Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- angular
- GitHub
- 101.0k stars
- Latest release
- v22.2.0-rc.0
- Date
About
Opinionated TypeScript framework. Full-featured TypeScript framework from Google with dependency injection, RxJS, and a complete tooling story. Common in enterprise apps.
What it does
A TypeScript framework for building web applications, developed as one workspace whose parts ship as separate packages: the rendering core, common utilities, routing, forms, server rendering, service worker integration, custom element packaging, and translation tooling. Templates are not interpreted at runtime. A compiler reads the TypeScript project configuration, turns component templates into generated code before the browser sees them, and reports template mistakes as ordinary compiler diagnostics. Behaviour is assembled through dependency injection providers, so the same component tree can boot in a browser or on a server with a different provider set.
Why it's ranked here
The discipline in this repository is the actual product. Sixteen packages ship from one workspace on a single version train, build and tests run through Bazel, the package manager is pinned and the manifest rejects npm and yarn outright, TypeScript is pinned to one exact version, and the public surface of every package is guarded by checked in golden files plus a symbol extraction check and a circular dependency check. That machinery is why an upgrade moves the whole stack at once instead of leaving you to reconcile a dozen independent libraries. It also means the repository is heavy to build locally.
What's good
Breadth that is genuinely first party. Routing ships configuration as composable feature options covering view transitions, hash based URLs, preloading, scroll restoration, debug tracing and error handlers, so common needs do not pull in third party routers. Translation tooling reads and writes six message formats, including two XLIFF generations, the XMB and XTB pair, ARB and plain JSON. Server rendering, service worker updates and push, and custom element packaging each get their own package rather than a community addition. Signals are in the core, and a signal based forms entry point exists alongside the older forms API. MIT licensed.
Tradeoffs
Contributing is the hard part. The workspace demands one exact pnpm version and the manifest answers npm and yarn with an error instead of installing, tests go through Bazel, and TypeScript is pinned to a single version across the tree, so your own toolchain has little room to differ. Server side DOM emulation depends on a fork pinned to a git commit rather than a published release. Legacy weight is still shipped: an upgrade package for AngularJS with fixtures across four of its minor generations, plus deprecated routing types still re-exported from the public surface.
How to use it well
Best fit is a team building a long lived business application where routing, forms, HTTP, internationalisation and server rendering should come from one vendor on one release train, and where consistency across many screens matters more than assembling best of breed libraries per concern. Install through the published command line tool, not by cloning this repository: the repository is where the framework is built and tested. It does not give you a component library, a design system, a backend, or a data layer. State management beyond signals and observable interop is left to you.
Technical notes+
The workspace manifest at package.json pins pnpm as the package manager, blocks npm and yarn through the engines field, resolves typescript to one version, and lists sixteen sibling packages as workspace dependencies, while the test and build scripts drive bazelisk plus public API golden and symbol extraction checks. Public entry points are thin re-export barrels: packages/core/index.ts, packages/common/index.ts, packages/compiler/index.ts, packages/platform-browser/index.ts, packages/elements/index.ts and packages/forms/signals/index.ts each forward a public_api module, several carrying a comment that ngc replaces them during private symbol renaming, and packages/core/rxjs-interop/index.ts forwards a nested index. The ahead-of-time compiler entry point packages/compiler-cli/src/main.ts parses arguments with yargs, layers on i18n options, reads the project configuration, then runs a single compilation or a watch host and maps diagnostics to an exit code. packages/platform-server/src/server.ts assembles the server platform: it sets a global server mode flag, picks the Domino adapter or the browser adapter at platform init, nulls testability and viewport scrolling, and adds transfer state serialization providers. packages/router/src/index.ts exports provideRouter alongside feature functions including view transitions and two explicitly experimental ones, packages/service-worker/src/index.ts exports the push and update services with version lifecycle events, and packages/localize/tools/index.ts installs a Node file system at import time before exporting XLIFF, XMB, XTB, ARB and JSON serializers and parsers plus Babel translate plugins. dev-app/src/app/app.ts is a standalone component holding its title in a signal.
Observed
- License
- MIT, declared in package.json
- Language
- TypeScript, with Babel plugins in the localize tooling
- Build and test
- Bazel via bazelisk for build, unit, integration and security type checks
- Package manager
- pnpm pinned as packageManager; npm and yarn rejected by the engines field
- Workspace packages
- core, common, compiler, compiler-cli, router, forms, platform-browser, platform-browser-dynamic, platform-server, service-worker, elements, localize, upgrade, animations, language-service, benchpress
- Interfaces
- library packages, an ahead-of-time compiler CLI in packages/compiler-cli/src/main.ts, a language service, and a browser devtools extension built for Chrome and Firefox
- Render targets
- browser, plus server rendering with DOM emulation in packages/platform-server/src/server.ts
- API stability guards
- checked in public API goldens, symbol extraction, and a circular dependency check wired into the scripts
- i18n formats
- XLIFF, XMB, XTB, ARB and JSON serializers and parsers in packages/localize/tools/index.ts
Read from README.md, package.json, packages/core/index.ts, packages/common/index.ts, packages/compiler/index.ts, packages/compiler-cli/src/main.ts, packages/router/src/index.ts, packages/forms/signals/index.ts, packages/platform-server/src/server.ts, packages/service-worker/src/index.ts, packages/core/rxjs-interop/index.ts, packages/platform-browser/index.ts, packages/elements/index.ts, packages/localize/tools/index.ts, dev-app/src/app/app.ts.
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.