21.0.0-next.4
Breaking Changes📦 angularView on GitHub →
⚠ 5 breaking✨ 4 features🐛 7 fixes🔧 6 symbols
Summary
This release introduces zoneless-by-default migrations and support for regex in templates, while removing deprecated Component metadata like moduleId and custom interpolation. It also standardizes the change detection scheduler and refines form field state behavior.
⚠️ Breaking Changes
- ngComponentOutletContent type changed from any[][] | undefined to Node[][] | undefined. Update custom content arrays to use Node types.
- Angular no longer provides a change detection scheduler for ZoneJS-based change detection by default. Fix by adding provideZoneChangeDetection to bootstrapApplication or AppModule providers.
- The internal scheduler is no longer disabled when using provideZoneChangeDetection without ZoneJS polyfills; all applications now use a consistent scheduler.
- moduleId has been removed from Component metadata and is no longer supported.
- The interpolation option on Components has been removed. Applications must use the default {{ ... }} syntax.
Migration Steps
- Run the automated migration to add provideZoneChangeDetection to bootstrap providers.
- Run the migration to convert ngStyle usage to standard style bindings.
- Remove moduleId from Component decorators.
- Remove custom interpolation settings from Components and revert to default double curly braces.
- Update any manual ngComponentOutletContent assignments to match the new Node[][] type.
✨ New Features
- Added migration for zoneless by default.
- Support for regular expressions in templates.
- Prevents marking form fields as touched/dirty when state is hidden, readonly, or disabled.
- Added migration to convert ngStyle to use standard style bindings.
🐛 Bug Fixes
- Add support for aria-invalid in compiler.
- Only bind inputs that are part of microsyntax to a structural directive.
- Fix signal not invoked diagnostic when input has same name in template.
- Prevent animation events from being cleaned up on destroy.
- Prevent leave animations on a move operation.
- Fix route-lazy-loading migration.
- Remove internal syntax-related flags in compiler-cli.
🔧 Affected Symbols
ngComponentOutletContentprovideZoneChangeDetectionComponent.moduleIdComponent.interpolationngStylearia-invalid