{"id":3098,"date":"2025-10-03T11:05:49","date_gmt":"2025-10-03T11:05:49","guid":{"rendered":"https:\/\/www.infragistics.com\/blogs\/?p=3098"},"modified":"2025-10-06T07:14:07","modified_gmt":"2025-10-06T07:14:07","slug":"ignite-ui-for-angular-20-1-is-out-whats-new-exciting","status":"publish","type":"post","link":"https:\/\/www.infragistics.com\/blogs\/ignite-ui-for-angular-20-1-is-out-whats-new-exciting","title":{"rendered":"Ignite UI for Angular 20.1 Is Out! What&#8217;s New &amp; Exciting?"},"content":{"rendered":"\n<p>Fighting complexities in your code? Well, the <a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\">Ignite UI for Angular<\/a> 20.1 release is all about streamlining and facilitating your development workflows and processes. We\u2019ve doubled down on making the <a href=\"https:\/\/www.infragistics.com\/blogs\/the-best-angular-grid\/\">Angular grid <\/a>work better for you with brand-new features and performance enhancements. With powerful add-ons like cell merging, which enhances readability by eliminating duplicate values, and dual-side column pinning for maximum flexibility and control, you can deliver cleaner data displays, optimized datasets, and a smoother user experience. Focus on building, not debugging.<\/p>\n\n\n\n<p>Here&#8217;s everything new at a glance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"grid-cell-merging-feature\">Grid Cell Merging feature<\/h2>\n\n\n\n<p>The Ignite UI for Angular Grids provides a Cell Merging feature that combines two or more adjacent cells with the same value into a single, larger cell. Merging is applied vertically within a column and helps improve readability by reducing duplicate values. The feature can be configured to merge cells either by default, matching data values, or by applying a custom condition. <\/p>\n\n\n\n<p>The Cell Merging feature is available for:<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/grid\/grid\">Angular Data Grid<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/static.infragistics.com\/marketing\/Website\/blogs\/angular-grids\/Angular-Data-Grid-Cell-Merging-feature.gif\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/treegrid\/tree-grid\">Angular Tree Grid<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/static.infragistics.com\/marketing\/Website\/blogs\/angular-grids\/Angular-Tree-Grid-Cell-Merging-by-level-strategy.gif\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/hierarchicalgrid\/hierarchical-grid\">Angular Hierarchical Grid<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/static.infragistics.com\/marketing\/Website\/blogs\/angular-grids\/Angular-Hierarchical-Grid-Cell-Merging.gif\" alt=\"Ignite UI for Angular 20.1\"\/><\/figure>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"grid-column-pinning-on-both-sides\">Grid Column Pinning on Both Sides<\/h2>\n\n\n\n<p>With Ignite UI for Angular 20.1, you can specify each column pinning location separately, allowing you to pin columns to both sides of the grid for greater convenience, easier optimization of data sets, and achieving desired UX for your <a href=\"https:\/\/www.infragistics.com\/resources\/sample-applications\">Angular application<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/static.infragistics.com\/marketing\/Website\/blogs\/angular-grids\/Angular-Data-Grid-Pinning-on-both-sides.gif\" alt=\"\"\/><\/figure>\n\n\n\n<p>The Column Pinning on both sides is available for Angular Data Grid, Angular Tree Grid, and Angular Hierarchical Grid.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"pushing-the-boundaries-of-angular-grid-performance\">Pushing the Boundaries of Angular Grid Performance<\/h2>\n\n\n\n<p>At Infragistics, we\u2019ve always taken pride in delivering the fastest Angular grids in the world and now, we\u2019re taking performance to the next level. Over the past few sprints, our development teams have been focused on optimizing the core of our Angular components library: Data Grid, Tree Grid, and Hierarchical Grid.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\" class=\"wp-block-heading has-medium-font-size\" id=\"faster-than-ever-the-optimized-sorting-pipeline\">Faster Than Ever: The Optimized Sorting Pipeline<\/h2>\n\n\n\n<p>The first significant improvement to be released in Ignite UI for Angular 20.1 is a comprehensive optimization of the sorting pipeline. We know that for applications handling large datasets, every millisecond counts. Our initial acceptance criteria were ambitious: to benchmark grouping performance and demonstrate at least a 25% improvement in execution time for datasets with 10,000 rows or more.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">The results? We\u2019ve blown past that benchmark, achieving:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>3x to 4x faster sorting for datasets with 100,000 records.<\/li>\n\n\n\n<li>Overall data operation time reduced by ~35% in grids, within the application scenario, with 100K rows.<\/li>\n<\/ul>\n\n\n\n<p>These enhancements mean that your applications will feel more responsive and fluid than ever before, even when dealing with massive amounts of data. This is a testament to our developers&#8217; dedication to continuous improvement and their passion for delivering the best possible user experience.<\/p>\n\n\n\n<p>This latest optimization in Ignite UI for Angular 20.1 is a clear demonstration of our philosophy. We believe in taking the extra mile to empower developers with tools that are not only feature-rich but also incredibly performant. We&#8217;re excited to continue this journey of innovation and to see the incredible applications you&#8217;ll build with the enhanced power of Ignite UI for Angular.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"compatibility-with-angular-20\">Compatibility with <a href=\"https:\/\/blog.angular.dev\/announcing-angular-v20-b5c9c06cf301\" rel=\"noopener\">Angular 20<\/a><\/h2>\n\n\n\n<p>Released on the 9th of June, with Ignite UI for Angular 20.0.0.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"complete-changelog-for-ignite-ui-for-angular-20-1-0\"><a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/blob\/master\/CHANGELOG.md#2010\" rel=\"noopener\">Complete CHANGELOG for Ignite UI for Angular 20.1.0<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">New Features<a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/blob\/master\/CHANGELOG.md#new-features\" rel=\"noopener\"><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>IgxGrid<\/code>,&nbsp;<code>IgxTreeGrid<\/code>,&nbsp;<code>IgxHierarchicalGrid<\/code>\n<ul class=\"wp-block-list\">\n<li>Introduced a new cell merging feature that allows you to configure and merge cells in a column based on same data or other custom condition, into a single cell.It can be enabled on the individual columns:&lt;igx-column field=&#8221;field&#8221; [merge]=&#8221;true&#8221;&gt;&lt;\/igx-column&gt;The merging can be configured on the grid level to apply either:<ul><li><code>onSort<\/code>&nbsp;&#8211; only when the column is sorted.<\/li><li><code>always<\/code>&nbsp;&#8211; always, regardless of data operations.<\/li><\/ul>&lt;igx-grid [cellMergeMode]=&#8221;&#8216;always'&#8221;&gt; &lt;\/igx-grid&gt;The default&nbsp;<code>cellMergeMode<\/code>&nbsp;is&nbsp;<code>onSort<\/code>.The functionality can be modified by setting a custom&nbsp;<code>mergeStrategy<\/code>&nbsp;on the grid, in case some other merge conditions or logic is needed for a custom scenario.It&#8217;s possible also to set a&nbsp;<code>mergeComparer<\/code>&nbsp;on the individual columns, in case some custom handling is needed for a particular data field.<\/li>\n\n\n\n<li>Added ability to pin individual columns to a specific side (start or end of the grid), so that you can now have pinning from both sides. This can be done either declaratively by setting the&nbsp;<code>pinningPosition<\/code>&nbsp;property on the column:&lt;igx-column [field]=&#8221;&#8216;Col1&#8242;&#8221; [pinned]=&#8217;true&#8217; [pinningPosition]=&#8217;pinningPosition&#8217;&gt; &lt;\/igx-column&gt;public pinningPosition = ColumnPinningPosition.End;Or with the API, via optional parameter:grid.pinColumn(&#8216;Col1&#8217;, 0, ColumnPinningPosition.End); grid.pinColumn(&#8216;Col2&#8217;, 0, ColumnPinningPosition.Start);If property&nbsp;<code>pinningPosition<\/code>&nbsp;is not set on a column, the column will default to the position specified on the grid&#8217;s&nbsp;<code>pinning<\/code>&nbsp;options for&nbsp;<code>columns<\/code>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxCarousel<\/code><ul><li>Added&nbsp;<code>select<\/code>&nbsp;method overload accepting index.<\/li><\/ul>this.carousel.select(2, Direction.NEXT);<\/li>\n\n\n\n<li><code>IgxDateRangePicker<\/code>\n<ul class=\"wp-block-list\">\n<li>Now has a complete set of properties to customize the calendar:\n<ul class=\"wp-block-list\">\n<li><code>headerOrientation<\/code><\/li>\n\n\n\n<li><code>orientation<\/code><\/li>\n\n\n\n<li><code>hideHeader<\/code><\/li>\n\n\n\n<li><code>activeDate<\/code><\/li>\n\n\n\n<li><code>disabledDates<\/code><\/li>\n\n\n\n<li><code>specialDates<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>As well as the following templates, available to customize the contents of the calendar header in&nbsp;<code>dialog<\/code>&nbsp;mode:\n<ul class=\"wp-block-list\">\n<li><code>igxCalendarHeader<\/code><\/li>\n\n\n\n<li><code>igxCalendarHeaderTitle<\/code><\/li>\n\n\n\n<li><code>igxCalendarSubheader<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Added new properties:\n<ul class=\"wp-block-list\">\n<li><code>usePredefinedRanges<\/code>&nbsp;&#8211; Whether to render built-in predefined ranges<\/li>\n\n\n\n<li><code>customRanges<\/code>&nbsp;&#8211; Allows the user to provide custom ranges rendered as chips<\/li>\n\n\n\n<li><code>resourceStrings<\/code>&nbsp;&#8211; Allows the user to provide set of resource strings<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Behavioral Changes<\/strong>\n<ul class=\"wp-block-list\">\n<li>Added cancel button to the dialog, allowing the user to cancel the selection.<\/li>\n\n\n\n<li>The calendar is displayed with header in&nbsp;<code>dialog<\/code>&nbsp;mode by default.<\/li>\n\n\n\n<li>The picker remains open when typing (in two-inputs and&nbsp;<code>dropdown<\/code>&nbsp;mode).<\/li>\n\n\n\n<li>The calendar selection is updated with the typed value.<\/li>\n\n\n\n<li>The calendar view is updated as per the typed value.<\/li>\n\n\n\n<li>The picker displays a clear icon by default in single input mode.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxPredefinedRangesAreaComponent<\/code>\n<ul class=\"wp-block-list\">\n<li>Added new component for rendering the predefined or custom ranges inside the calendar of the&nbsp;<code>IgxDateRangePicker<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxDatePicker<\/code>\n<ul class=\"wp-block-list\">\n<li>Similar to the&nbsp;<code>IgxDateRangePicker<\/code>, also completes the ability to customize the calendar by introducing the following properties in addition to the existing ones:\n<ul class=\"wp-block-list\">\n<li><code>hideHeader<\/code><\/li>\n\n\n\n<li><code>orientation<\/code><\/li>\n\n\n\n<li><code>activeDate<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Behavioral Changes<\/strong>\n<ul class=\"wp-block-list\">\n<li>The calendar selection is updated with the typed value.<\/li>\n\n\n\n<li>The calendar view is updated as per the typed date value.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxOverlay<\/code>\n<ul class=\"wp-block-list\">\n<li>Position Settings now accept a new optional&nbsp;<code>offset<\/code>&nbsp;input property of type&nbsp;<code>number<\/code>. Used to set the offset of the element from the target in pixels.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxTooltip<\/code>\n<ul class=\"wp-block-list\">\n<li>The tooltip now remains open while interacting with it.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxTooltipTarget<\/code>\n<ul class=\"wp-block-list\">\n<li>Introduced several new properties to enhance customization of tooltip content and behavior. Those include&nbsp;<code>positionSettings<\/code>,&nbsp;<code>hasArrow<\/code>,&nbsp;<code>sticky<\/code>,&nbsp;<code>closeButtonTemplate<\/code>. For detailed usage and examples, please refer to the Tooltip&nbsp;<a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/blob\/master\/projects\/igniteui-angular\/src\/lib\/directives\/tooltip\/README.md\" rel=\"noopener\">README<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">General<a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/blob\/master\/CHANGELOG.md#general\" rel=\"noopener\"><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>IgxDropDown<\/code>&nbsp;now exposes a&nbsp;<code>role<\/code>&nbsp;input property, allowing users to customize the role attribute based on the use case. The default is&nbsp;<code>listbox<\/code>.<\/li>\n\n\n\n<li><code>IgxTooltipTarget<\/code>\n<ul class=\"wp-block-list\">\n<li><strong>Behavioral Changes<\/strong>\n<ul class=\"wp-block-list\">\n<li>The&nbsp;<code>showDelay<\/code>&nbsp;input property now defaults to&nbsp;<code>200<\/code>.<\/li>\n\n\n\n<li>The&nbsp;<code>hideDelay<\/code>&nbsp;input property now defaults to&nbsp;<code>300<\/code>.<\/li>\n\n\n\n<li>The&nbsp;<code>showTooltip<\/code>&nbsp;and&nbsp;<code>hideTooltip<\/code>&nbsp;methods do not take&nbsp;<code>showDelay<\/code>\/<code>hideDelay<\/code>&nbsp;into account.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IgxGrid<\/code>,&nbsp;<code>IgxTreeGrid<\/code>,&nbsp;<code>IgxHierarchicalGrid<\/code>,&nbsp;<code>IgxPivotGrid<\/code>\n<ul class=\"wp-block-list\">\n<li><strong>Sorting improvements<\/strong>\n<ul class=\"wp-block-list\">\n<li>Improved sorting algorithm efficiency using Schwartzian transformation. This is a technique, also known as decorate-sort-undecorate, which avoids recomputing the sort keys by temporarily associating them with the original data records.<\/li>\n\n\n\n<li>Refactored sorting algorithms from recursive to iterative.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Groupby improvements<\/strong>\n<ul class=\"wp-block-list\">\n<li>Refactored grouping algorithm from recursive to iterative.<\/li>\n\n\n\n<li>Optimized grouping operations.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"to-wrap-it-all-up\">To Wrap It All Up\u2026<\/h2>\n\n\n\n<p>Seamlessly crafted for compatibility,&nbsp;<a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\">Ignite UI for Angular<\/a>&nbsp;is the library that enables you to leverage the power of the latest technologies and major releases. Committed to providing you with the best Angular UI toolkit and related insights, our goal is to equip you with more know-how, new features, enhanced performance, and improved stability. Some of the enhancements were added thanks to the requests from users like yourself through our&nbsp;<a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\" rel=\"noopener\">Ignite UI for Angular GitHub<\/a>&nbsp;repository. With this in mind, we are always open to suggestions and feedback \u2013 it makes us grow and better respond to your development needs.<\/p>\n\n\n\n<p>If you need more details, we encourage you to check out our:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/discord.com\/channels\/836634487483269200\/836636712292581456\" target=\"_blank\" rel=\"noreferrer noopener\">Discord channel<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/discussions\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub discussions<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/blob\/master\/ROADMAP.md\" target=\"_blank\" rel=\"noreferrer noopener\">Roadmap<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/channel\/UCiPzmz_UyRqQE0Tboc7n66g\" target=\"_blank\" rel=\"noreferrer noopener\">YouTube channel<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ignite UI for Angular 20.1 release is out, bringing tons of new enhancements.  There are now powerful add-ons like cell merging, dual-side column pinning, and other improvements to the grids.<\/p>\n","protected":false},"author":20,"featured_media":3118,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,7],"tags":[23,20,38,42],"class_list":["post-3098","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-updates","category-angular","tag-angular","tag-ignite-ui","tag-ignite-ui-angular","tag-whats-new"],"_links":{"self":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3098","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/comments?post=3098"}],"version-history":[{"count":10,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3098\/revisions"}],"predecessor-version":[{"id":3151,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3098\/revisions\/3151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media\/3118"}],"wp:attachment":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media?parent=3098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/categories?post=3098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/tags?post=3098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}