Angular: v21.1.0-next.4 Release

Release date:
December 17, 2025
Previous version:
v21.1.0-next.3 (released December 11, 2025)
Magnitude:
2,069 Diff Delta
Contributors:
10 total committers
Data confidence:
Commits:

Top Contributors in v21.1.0-next.4

SkyZeroZx
AndrewKushnir
alan-agius4
hawkgs
kirjs
clydin
leonsenft
bencodezen
aparzi
marcjulian

Directory Browser for v21.1.0-next.4

All files are compared to previous version, v21.1.0-next.3. Click here to browse diffs between other versions.

Loading File Browser...

Release Notes Published

core

| Commit | Description | | -- | -- | | fix - 06be8034bb | Microtask scheduling should be used after any application synchronization | | fix - b4f584cf42 | return StaticProvider for providePlatformInitializer | | fix - 7be4ddef1c | throw better errors for potential circular references | | fix - f516370c8e | use mutable ResponseInit type for RESPONSE_INIT token |

forms

| Commit | Description | | -- | -- | | feat - 348f149e8b | pass field directive to class config | | refactor - ae0c59028a | rename field to fieldTree in FieldContext and ValidationError |

language-service

| Commit | Description | | -- | -- | | fix - 9f5744a92d | avoid interpolation highlighting inside @let | | fix - ce1a4769f9 | Prevent language service from crashing on suggestion diagnostic errors |

Breaking Changes

forms

  • The shape of SignalFormsConfig.classes has changed

Previously each function in the classes map took a FieldState. Now it takes a Field directive.

For example if you previously had: provideSignalFormsConfig({ classes: { 'my-valid': (state) => state.valid() } })

You would need to update to: ``` provideSignalFormsConfig({ classes: { 'my-valid': ({state}) => state().valid() } })

```