@ajsf/bootstrap3 @ajsf/bootstrap4 @ajsf/bootstrap5 @ajsf/core @ajsf/material @ajsf/primeng published at 20.0.0 on the latest dist-tag.
npm install @ajsf/core@20.0.0Upgrading from 19.x
@ajsf/* 20 targets Angular 20. Update the Angular packages first, then all six
@ajsf/* packages together: they version in lockstep, and each framework
package depends on its exact matching @ajsf/core.
There is no public API change in this series. Nothing was added, removed or
renamed on any package's exported surface, and no widget behaviour changed.
Everything below is about what your project has to satisfy to install it.
Angular and Node
The peer ranges move to ^20.0.0, so Angular 19 no longer satisfies them.
Angular 20 raises its own Node floor to ^20.19.0 || ^22.12.0 || >=24.0.0, and
the workspace follows it, so a project on Node 18 has to move before upgrading.
Node 18 reached end of life in April 2025.
PrimeNG
@ajsf/primeng now declares primeng: ^20.0.0. PrimeNG's majors have tracked
Angular's since v18, so this moves with the Angular major rather than
independently.
@ajsf/primeng 19.2.0 declared primeng: ^19.0.0 and kept declaring it
whatever Angular version the release targeted, because the versioning script
retargeted only the @angular/* peers. That is fixed, so 20.x is the first
release where the PrimeNG peer describes what the package was built against.
If you configure PrimeNG's theme, the preset packages moved: PrimeNG deprecated
@primeng/themes in v20 in favour of @primeuix/themes. The old package still
works, so this is not required to upgrade, but new projects should use
@primeuix/themes and the @ajsf/primeng README now says so.
One installation note, found by installing this release into a new Angular 20
project rather than by reading anything. Install @angular/animations at the
same patch version as the rest of your Angular packages:
# if your @angular/* packages are 20.3.31
npm install @angular/animations@20.3.31PrimeNG 20 declares @angular/animations as a peer dependency and Angular 20 no
longer adds it to a new project, so npm resolves it unaided. The Angular
framework packages peer on each other by exact patch, so a patch npm chooses
freely can leave the install unresolvable with ERESOLVE, naming
@angular/animations and @angular/common. It is a PrimeNG requirement rather
than an @ajsf/primeng one, so it is not declared as a peer here: a range like
^20.0.0 would not fix it, since npm could still pick a patch that disagrees
with yours.
Nothing else you can observe
The rest of the series is internal. The workspace moved to the Angular
application build system, the six test suites moved from Karma to Angular 20's
Vitest runner, and the corpus test harness was restructured so its host
components compile ahead of time. None of that reaches a consumer: the packages
are still produced by ng-packagr in Angular Package Format, and the 444 entry
corpus baseline that pins rendering behaviour was not re-recorded at any point
in the series, so every schema renders the same control counts and reports the
same validity as it did in 19.2.0.
What's Changed
- docs: bring the roadmap up to date with 19.2.0 by @hamzahamidi in #462
- build: move the workspace to Angular 20 by @hamzahamidi in #463
- build: migrate to the Angular application build system by @hamzahamidi in #466
- test: give each corpus suite its own AOT-visible host by @hamzahamidi in #465
- build: raise @types/node from 12 to 20 by @hamzahamidi in #471
- test(core): move @ajsf/core to the Angular Vitest runner by @hamzahamidi in #473
- fix(scripts): move the primeng peer with the Angular major by @hamzahamidi in #474
- test(bootstrap3): move @ajsf/bootstrap3 to the Angular Vitest runner by @hamzahamidi in #475
- test(bootstrap): move bootstrap4 and bootstrap5 to Vitest, and fix the coverage regression from #475 by @hamzahamidi in #476
- build: one coverage runner for CI and local, and clean dist/test-out by @hamzahamidi in #477
- test(material): move @ajsf/material to the Angular Vitest runner by @hamzahamidi in #478
- test(primeng): move @ajsf/primeng to the Angular Vitest runner by @hamzahamidi in #479
- build: remove the Karma and Jasmine test infrastructure by @hamzahamidi in #480
- build(primeng): move theming to @primeuix/themes by @hamzahamidi in #481
- docs: bring the agent notes up to date with Angular 20 and Vitest by @hamzahamidi in #483
- docs: add the Angular 20 upgrade note by @hamzahamidi in #484
- chore: 20.0.0-rc.0 by @hamzahamidi in #485
- ci: run the release verify suites through the shared runner by @hamzahamidi in #486
- build: make the coverage runner refuse to pass silently by @hamzahamidi in #487
- docs(primeng): record the @angular/animations install requirement by @hamzahamidi in #488
- chore: 20.0.0 by @hamzahamidi in #489
Full Changelog: v19.2.0...v20.0.0