Flags Angular APIs that were removed or deprecated — HttpClientModule, entryComponents, TestBed.get, class guards — plus majors past their 18-month support window. Runs entirely in your browser — nothing is uploaded.
Same engine as the VS Code extension, byte for byte.
This page is the working piece. The full pack has everything below.
32 checks for Angular APIs that were removed or deprecated, plus the support window on your version pin. The bundled legacy fixture — one NgModule file and its spec — returns 34 findings, 9
A freelance Angular upgrade consultant bills $80-$150/hour to read the same files by hand.
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

One pasted Angular file came back with 34 findings — nine of them APIs that Angular removed outright — for a developer keeping a v18 app alive. The file was a dashboard NgModule, a component, a route guard, and its spec. The kind of thing an assistant writes in four seconds when you ask it for "an Angular dashboard module with an auth guard".
Language models learned Angular from a decade of NgModule-era blog posts, and they are fluent in an Angular that no longer exists. Ask for a guard and you get export class AuthGuard implements CanActivate. Ask for a test and you get TestBed.get() and the async() helper. Each reads as correct, reviews as correct, and merges.
Here is what the checker found in that one file, grouped the way it reports:
Removed — nine lines that do not compile on a current Angular. import { Http } from '@angular/http' (the package went in v8). Renderer imported from @angular/core (v9). ModuleWithProviders with no type argument (v10 made the generic mandatory). The async() test helper (v12, it collided with the language keyword). entryComponents and TestBed.get() (both v13). relativeLinkResolution in the router config (v16).
Deprecated — eighteen lines that still compile and are on the way out. HttpClientModule and HttpClientTestingModule, both deprecated in Angular 18, both replaced by provideHttpClient() and provideHttpClientTesting(). implements CanActivate and canLoad, deprecated in 15.2 and 15.1 in favour of functional guards and canMatch. .toPromise(), deprecated in RxJS 7 and gone in RxJS 8, replaced by firstValueFrom(). APP_INITIALIZER, AfterRenderPhase and allowSignalWrites from the v19 batch. provideExperimentalZonelessChangeDetection and TestBed.flushEffects() from v20.
Advisory — seven lines that work but are the NgModule-era form: RouterModule.forRoot(), *ngIf, BrowserAnimationsModule, platformBrowserDynamic().
Why does no existing tool say this? The TypeScript compiler only errors on symbols missing from the version in your node_modules. Pin @angular/core at ^18.2.13 and HttpClientModule is a real, exported, working symbol — the compiler has no opinion. angular-eslint checks style and template correctness; removal history is not its job. The deprecated half of that list stays invisible until ng update stops the build.
There is one more finding in that file, and it is the one nobody writes a lint rule for. The dependency block pins "@angular/core": "^18.2.13". Angular supports each major for eighteen months: six months of active support, then twelve months of LTS. Angular 18 shipped on 2024-05-22, so its window closed on 2025-11-19. Run the check on 2026-09-11 and it says so in those words — 296 days past the end, no patches, no security fixes. Run the same file with the date set to 2025-06-01 and that finding disappears, because on that date it was not yet true. Thirty-three findings instead of thirty-four.
The checker is 32 rules, in two places. In VS Code, "Check this file" runs all 32 against the file you have open and prints the replacement line for every hit — free, no key, no account. In the browser, the same engine file runs on a paste, and nothing is uploaded.
The paid half is a different job, not a crippled version of the free one: sweep every .ts, .html and .json outside node_modules and write a dated report into the repository — a file you own, commit, and hand to whoever is paying for the upgrade. A freelance Angular upgrade consultant bills $80-$150/hour to read those same files by hand.
It reads Angular TypeScript, templates and config files and flags every API that Angular has removed or deprecated, naming the major it went in and printing the replacement line. The bundled legacy fixture returns 34 findings, 9 of them removed APIs. It also measures your @angular/core pin against Angular's 18-month support window as of today.
Angular developers maintaining an app that is one to four majors behind, and teams where an assistant writes part of the code. If you have ever merged a pull request containing HttpClientModule, entryComponents or TestBed.get because it looked right, this reads the file before the build does.
The compiler only errors on symbols already missing from the version installed in node_modules. On an Angular 18 pin, HttpClientModule compiles cleanly. angular-eslint checks style and template correctness, not removal history. Neither one knows that Angular 18's support window closed on 2025-11-19.
Free with no key or account: all 32 checks against the file open in your editor, or against a paste on the web page, with the replacement line for every hit. Paid at $29 once: sweeping every .ts, .html and .json in the workspace and writing a dated report file into your repository.
A freelance Angular upgrade consultant bills $80 to $150 an hour, and reading a mid-size workspace for removed and deprecated APIs by hand is most of a day. The alternative is finding them one at a time when a major upgrade breaks the build during a release week.
One question, answered by the person who built it. Your email only if you want the answer sent.