npm / @ngx-formly/core
@ngx-formly/core
What changed in @ngx-formly/core 10 to 11, from its official release notes, upgrade guides and advisories. Also covers @ngx-formly/material. Sources checked 2026-10-20.
16 breaking2 deprecations7 new APIs and options3 behavior and defaults1 tooling4 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@ngx-formly/core 1125 changes
Breaking changes 14
Formly v11 requires Angular 22 or newer; Angular 21 applications should remain on Formly v10.
Exported for validation summaries; the validationMessages pipe collects messages from a built field or field tree, excluding hidden and disabled fields and deduplicating shared-control errors.
For Ionic 9, replace IonicModule.forRoot() with provideIonicAngular() in application providers.
The corresponding Angular UI library must be version 22 or newer.
The corresponding Angular UI library must be version 22 or newer.
The corresponding Angular UI library must be version 22 or newer.
The corresponding Angular UI library must be version 22 or newer.
Copied radio templates and selectors should use p-radiobutton.
Explicit positive step values now validate numeric model values; configure a step validation message, or use step: 'any' and props.attributes.step when the increment should only affect the UI.
Array row fields and control state follow model values on indexed insertion and removal; set props.trackByIndex: true for custom arrays whose configuration depends on position.
Ionic 9 applications should replace IonicModule.forRoot() with provideIonicAngular() in application providers and use standalone components.
Datepicker applications should add provideNzDateFnsAdapter() to application providers to preserve the previous date-fns behavior.
Hidden fields using shareFormControl: false no longer run parsers or write detached control values to the model, and hiding cancels pending debounced writes.
The pipe collects messages from a built field or field tree, excludes hidden and disabled fields, and deduplicates shared-control errors.
Deprecations 2
Deprecated in favor of the validationMessages pipe; existing components and their public members remain available.
Deprecated in favor of the validationMessages pipe; existing components and their public members remain available.
New APIs and options 5
Exported for validation summaries collected by the validationMessages pipe.
Renders labels and descriptions as sanitized HTML in web UI adapters; plain text remains the default, and NativeScript and custom templates do not automatically support the option.
Customizes select trigger text using a selected-value property or formatter function.
String validator expressions can access control, field, model, and formState through the CSP-safe expression parser.
Displays all configured field error messages, including asynchronous messages.
Behavior and default changes 1
Select and datepicker props.appendTo accepts PrimeNG's AppendTo type, including 'body', 'self', and element or template references.
Tooling 1
Generated installations now use Angular 22 and Formly v11.
Fixes and other changes 2
Array row fields and control state follow their model values; insertion preserves existing row controls, input instances, and touched/dirty state, and connected arrays and fixed-path editors stay bound correctly.
Tuple validation stays at the correct position, and recursive oneOf branches resolve using their current row keys after array changes.
@ngx-formly/core 108 changes
Breaking changes 2
Angular 21 or newer is now required; applications on Angular 20 should remain on Formly v9.
The parser now rejects trailing tokens it previously ignored, so malformed string expressions can cause form construction to fail.
New APIs and options 2
Adds an asynchronous formly-form output for accessing controls after the fields or form input changes, including initial binding.
Exports the event type associated with the fieldChange output.
Behavior and default changes 2
Valid forms now emit an initial statusChanges notification; unchanged rebuilds do not repeat it.
CSP expressions now support optional property and index access, such as model.user?.name and model.items?.[0].
Fixes and other changes 2
UI configuration functions now reference the public ConfigOption type, fixing TypeScript module-resolution errors caused by generated declarations importing private paths.
Disabled nested groups and arrays remain disabled when their parent is re-enabled, including fields with observable disabled expressions.