npm / @ng-select/ng-select
@ng-select/ng-select
What changed in @ng-select/ng-select 4 to 24, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-24.
21 breaking1 security8 new APIs and options1 performance3 behavior and defaults45 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@ng-select/ng-select 2417 changes
Breaking changes 6
Angular CDK ^22.0.0 is now required because the dropdown panel renders in CDK Overlay.
appendTo controls DOM containment only; positioning remains viewport-based.
The panel renders in CDK Overlay rather than as a child of ng-select, changing its DOM location and CSS scoping.
Escape is consumed only when it closes an open dropdown, allowing parent dialogs to handle it when the select is closed.
popover is deprecated and becomes a no-op because the top layer is automatic.
The typeahead output emits only when typing; selecting, closing, or clearing no longer emits. Use close or clear for those actions.
Security 1
Default labels are rendered as text to prevent XSS.
New APIs and options 2
Adds support for signal forms.
Themes expose CSS custom properties for theming.
Fixes and other changes 8
Keeps the virtual scroll offset in sync with rendered rows.
Selection state is initialized for async options.
Fixes issues with signal forms.
Overlay behavior is enhanced for dynamic host elements.
Fixed the placeholder configuration.
Selected value text can be selected and copied when searchable is false without toggling the panel.
unselect now does nothing when the select or item is disabled.
Virtual scroll measures option height with offsetHeight so borders are included, and handles separate group and option heights.
@ng-select/ng-select 2320 changes
Breaking changes 3
Disabled selects and disabled items can no longer be removed via × or clearItem.
Migrates the project’s test runner from Karma to Vitest.
Adds Angular 22 support and raises the minimum required Angular version to 22.
New APIs and options 2
Adds support for zoneless change detection.
The ng-option component now supports custom classes.
Behavior and default changes 2
The dropdown panel is rendered in CDK Overlay.
Accessibility and interaction for selected items in ng-select were enhanced.
Fixes and other changes 13
Virtual scroll measures option height with offsetHeight, including borders.
preventDefault is skipped during Angular event replay for SSR/hydration.
Selected labels can be copied or selected when searchable is false.
The highlight directive matches all words in multi-word search queries.
Active-option announcements are fixed.
Grouped scroll targeting is fixed.
The blur commit behavior for selectOnTab is fixed.
Prevents the dropdown from closing when the click target shifts after mousedown, including in shadow DOM.
Adds a notched outline appearance to the ng-select component.
The dropdown id is assigned to the listbox element, and its ARIA attributes are corrected.
Group header elements in ng-select no longer have the ng-option class.
NgDropdownPanelComponent and NgSelectComponent now handle an undefined outsideClickEvent.
Corrected Angular peer dependency versions to match the supported Angular version.
@ng-select/ng-select 2116 changes
Breaking changes 1
The NgSelectComponent isOpen property type now enforces boolean only.
New APIs and options 3
Adds a popover input to ng-select.
Adds the fill appearance option to the ng-select component.
Adds configuration for ariaLabelDropdown.
Performance 1
Scroll handling was optimized in NgDropdownPanelComponent.
Behavior and default changes 1
A disabled option that is currently selected can now be cleared.
Fixes and other changes 10
Fixes a regression introduced in v20.1.2; the affected behavior is not specified in the notes.
The dropdown closes immediately when the user clicks outside it.
Input signals are writable, restoring programmatic configurability.
Handles undefined values in the items list and during ng-option initialization.
Enhances dropdown behavior with window scroll handling.
Disabled items are no longer marked on key press, correcting accessibility behavior.
Clear button template rendering was reordered.
isOpen now accepts undefined.
Fixes an issue with ng-option-highlight.
Adds support for Angular 21.0.0.
@ng-select/ng-select 2012 changes
Breaking changes 2
The project migrated from Yarn to pnpm for package management.
The items input type in NgSelectComponent is now readonly.
New APIs and options 1
Adds outside click event configuration to the ng-select component.
Fixes and other changes 9
Supports null as a valid value in ng-select.
Fixes dropdown panel height when using addTag and virtual scroll.
Fixes the inability to access SearchInput.
Fixes scroll behavior when ng-select is used in shadow DOM.
Items are updated only when findItem succeeds, avoiding updates when no matching item is found.
Fixed an ng-option race condition.
Fixes an accessibility issue where a signal was not being called in the template.
A touchstart event is no longer considered an outside click.
Fixes converting items as an input signal.
@ng-select/ng-select 151 changes
Breaking changes 1
Angular 20 is now the minimum required Angular version.
@ng-select/ng-select 142 changes
Breaking changes 1
Angular 19.0.0 is now the minimum required Angular version.
Fixes and other changes 1
Adds support for Angular 19.
@ng-select/ng-select 131 changes
Breaking changes 1
Adds support for Angular 18.
@ng-select/ng-select 121 changes
Fixes and other changes 1
Adds support for Angular 17.
@ng-select/ng-select 112 changes
Fixes and other changes 2
Angular 16 support was added.
Accessibility improvements were made to the dropdown panel.
@ng-select/ng-select 101 changes
Fixes and other changes 1
Adds support for Angular 15, affecting which Angular versions developers can use with the package.
@ng-select/ng-select 91 changes
Breaking changes 1
Updates the package to Angular 14, changing the Angular version it supports.
@ng-select/ng-select 81 changes
Breaking changes 1
Updated to Angular 13, a breaking change for projects using this release.
@ng-select/ng-select 71 changes
Breaking changes 1
Updated to Angular 12 as a breaking change.
@ng-select/ng-select 61 changes
Breaking changes 1
The release updates ng-select to Angular 11, so developers need to account for the Angular 11 compatibility change.
@ng-select/ng-select 51 changes
Breaking changes 1
Angular 10 is the minimum dependency requirement.
@ng-select/ng-select 41 changes
Breaking changes 1
Updated to Angular 9, affecting the framework version used with ng-select.