Skip to content

20.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Sep 00:29
· 2 commits to main since this release
114ab43

@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.0

Upgrading 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.31

PrimeNG 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

Full Changelog: v19.2.0...v20.0.0