angular.benjavicente.dev

State of Angular

Opinionated compilation of the Angular ecosystem.

The items here are split into tools for checking code, fast code iteration, and simplifying the development process. The “baseline” for comparison is the other big frameworks: React, Vue, Svelte, and Solid, and the intent is to focus more on modern and faster tools like the OXC ecosystem.

Check

Tools that provide fast code feedback.

See Oxlint & Oxfmt compatibility table for the entire OXC ecosystem.

For some integration with Nx, see Tracking Issue for enhancements to Nx from Analog v2 -> v3 upgrade lessons learned.

Oxfmt

Really fast code formatting. See their quickstart guide.

Supported?
Case
References
Yes
template in @Component(...)
Introduced in #20676
Yes
styles in @Component(...)
Introduced in #20676
Yes
*.component.html files
Using Prettier under the hood
No
Plain *.html as Angular
(following new styleguide)
No overrides support, see oxc#17852

Oxlint

Fast code linting with ESLint JS plugin support. See their quickstart guide.

Supported?
Case
References
Mostly
@angular-eslint/eslint-plugin
Per-rule @angular-eslint/eslint-plugin support (20 rules)
Yes
@angular-eslint/component-selector
Yes
@angular-eslint/contextual-lifecycle
Yes
@angular-eslint/directive-selector
No
@angular-eslint/no-developer-preview
Type-Aware rule, requires parserServicesoxc#19962
Yes
@angular-eslint/no-empty-lifecycle-method
No
@angular-eslint/no-experimental
Type-Aware rule, requires parserServicesoxc#19962
Yes
@angular-eslint/no-input-rename
Yes
@angular-eslint/no-inputs-metadata-property
Yes
@angular-eslint/no-output-native
Yes
@angular-eslint/no-output-on-prefix
Yes
@angular-eslint/no-output-rename
Yes
@angular-eslint/no-outputs-metadata-property
No
@angular-eslint/no-uncalled-signals
Type-Aware rule, requires parserServicesoxc#19962
Yes
@angular-eslint/prefer-inject
Yes
@angular-eslint/prefer-on-push-component-change-detection
Partial
@angular-eslint/prefer-signals
Mostly AST-only, requires type checking for signal factories
Yes
@angular-eslint/prefer-standalone
Yes
@angular-eslint/relative-url-prefix
Yes
@angular-eslint/use-lifecycle-interface
Yes
@angular-eslint/use-pipe-transform-interface
No
@angular-eslint/eslint-plugin-template
Needs template parser pipeline - oxc#15761 - oxc#21936
No
@smarttools/eslint-plugin-rxjs
Type-Aware rule, requires parserServices - oxc#19962
No
Type-aware linting
Requires TS 7+ - Angular does not support the new TS compiler - Angular version compatibility - angular#61634

Vitest

Feature-rich test runner that speaks Vite. See their guide for more details.

Supported?
Case
References
Yes
Native @angular/build:unit-test
Angular v21+ - Angular docs - Limitations
Yes
Analog @analogjs/vitest-angular
Angular v17+ - Setup docs - Can be slower than native

Storybook

Framework for documenting and testing (with Vitest) UI components.

Supported?
Case
References
Yes
Webpack via @storybook/angular
Strong
Vite via @analogjs/storybook-angular
No
Vite via @storybook/angular-vite
Not merged, see storybook#34012 and storybook#34202

Iterate

Systems and capabilities to allow fast iteration and development of Angular code.

Hot Module Replacement

Hot Module Replacement (HMR) allows you to update your application code in real-time without reloading the page.

Supported?
Case
References
Yes
Stylesheet HMR
Requires new Vite-based build system - Angular v19.0+
Yes
Component HTML
Requires new Vite-based build system - Angular v19.1+
No
Component class
Considered not viable - angular#62782

Vite server

Vite is the most popular build tool for web applications, with a rich plugin ecosystem.

Supported?
Case
References
Mostly
@angular/build (application builder)
Angular v18+ - Not a standalone Vite plugin package - Does not support plugins - Build system guide
Mostly
Adapts the application builder to use custom esbuild plugins - Not a standalone Vite plugin package
Yes
@analogjs/vite-plugin-angular
Vite plugin - Guide
Experimental
@oxc-angular/vite
Experiment for research purposes - Repository - Article

Simplify

Tools that simplify the development of Angular applications.

Native features

Native features allow libraries and frameworks to extend the Angular platform with new capabilities through composable APIs.

Supported?
Case
References
Yes
Signals
Angular v17+
Yes
Context and dependency injection
Native Angular DI system - Angular DI docs
No
Error boundaries (@boundary)
No
Suspense
No
SSR streaming
No streaming SSR APIs - Architectural limitation

Libraries

Libraries that support the view layer of Angular to provide utilities to build full-featured applications.

Maturity?
Type
Libraries
Strong
Headless components
Strong
Client-side state management
Improving
Utility libraries
Improving
Server-side state management
Improving
In-product AI
Strong
Drag-and-drop
Weak
Routing
Angular Router lacking prefetching and data loading patterns

TanStack

A series of framework-agnostic libraries with fantastic type safety.

Status
Library
Issues and Notes
Improving
TanStack Query (experimental for Angular)
Broken pending task integration (Testing and SSR) - #10470
Experimental
TanStack Store (alpha)
Lacking support for input/model signals - #291
Improving
Relies on Store, so has some limitations with input/model signals
Improving
Issue with injectQueueValue - #161
Experimental
TanStack DB (alpha)
Issue with input/model signals and missing APIs - #1509
Yes